From version 4.6.0 DataWarrior has a plugin interface built in, which allows to add custom functionality through the development of a plugin to any DataWarrior installation. Plugins may be developed by any person knowing the Java programming language without any knowledge of the DataWarrior source code itself. If such a plugin is added to the plugin folder of any standard DataWarrior installation, then DataWarrior adds a new menu item to its menu, which, if invoked, may cause to retrieve data from some database or to calculate new properties from chical structures. The retrieved data or new properties are then shown in either a new window or new columns of an existing DataWarrior window. Plugins may or may not show a dialog to let a user specify database specific query conditions or to define which properies to calculate. Such dialogs may include a structure editor to define sub-structure or similarity searches. When chemical structures are returned from the database along with alphanumerical data then they are automatically converted into DataWarrior structures, provided they are in SMILES, MDL-molfile, or idcode (compact canonical OpenChemLib representation) format.
Developing DataWarrior plugins is easy. It requires basic Java development skills, an installed JDK (Java development kit) and the DataWarrior Plugin-SDK 1.0, which can be downloaded here:
The SDK contains a readme.txt file explaining the plugin concept and the steps needed to successfully develop and build a plugin. It also contains example Java code, a build script and the Java interface files needed to communicate to the DataWarrior application.
If the compatibility to older DataWarrior installations is not an issue, it is recommended to use the new and more powerful SDK 2.2, which requires DataWarrior v6.0.0 (Dec 2023) or newer. While version 1.0 allows to define a database query, retrieve data and fill a new window with the data, version 2.2 adds the ability to access identifiers and chemical structures of an existing window, and to add columns with data to that existing window. It also allows to run any macros. This opens the door to retrieving and merging data from given identifiers or to adding properties being calculated on dedicated external servers and much more.