Graph-RAT Programming Environment
Developing New Algorithms in 0.4.3
An algorithm must implement the Algorithm interface. The init() method should populate the input and output metadata components, using the Properties object supplied to pass in the parameters values. Parameters, their descriptions, and their default values should be listed in the Javadoc of the init() method.
After creation, the algorithm's name should be added to the list of known algorithms in AlgorithmFactory singleton. Likewise, the algorithm description should be added to the appropriate category return method in AlgorithmFactory.
Developing New Graph, Link or Actor Classes in 0.4.3
The class should implement the appropriate interface, and then the algorithm should be added to the create() method of the appropriate factory.
Developing a new parser in 0.4.3
If the parser is not a SAX parser, it should implement the Parser interface and be added to the ParserFactory singleton. If the parser is a SAX parser, it should subclass the AbstractHandler class and the name should be added to the parser class, creating an XML parser instance, then call the HandlerFactory to create the SAX parser. The HandlerFactory should have a reference to the Parser added as well.
Development of new components in 0.5
Each new class must have a set of static initialization code, common to all components, inserted into the class. As long as this code is present, all configuration involving factory registering is automatically performed, whether or not the class is loaded dynamically or statically. Likewise, all modifications to integrate the new component into the GUI are conducted automatically, provided the metadata fields (required by the interfaces) are filled in with meaningful information.
Dynamic Linking in 0.5
Provided dynamic linking is enabled, 0.5 automatically reads the /lib directory of the GRAPHRAT environment variable for classes to dynamically add at startup. Likewise, the /jar has the contents of its jar files automatically loaded at startup. In the GUI, reloading is a GUI command that can be manually activated, however it can occur at any time via embedded, as it is a method call on the DynamicLoader singleton.