Design of MAEPlugins

MAExplorer | MAEPlugin home | Design | Open Java API | MJA classes | MJA javadocs | Open Java API javadocs |
Plugin Tutorial Examples | List of Plugins | Developing a Plugin | Installing Plugins |
MAExplorer home | MAExplorer revision notes | Help desk

This document discusses the paradigm how MAEPlugins are used with MAExplorer and the design used to give them access to MAExplorer data. The first part discuss the top level design and the second part gives an example of using a plugin. The details on the internals for MAExplorer itself are described in a Design doc (PDF) or (PPT). However, an understanding of the MAExplorer internals is not required to write a MAEPlugin.

1. Overview of MAEPlugin design

The MAExplorer Open Java API (Applications Programming Interface) allows users to access almost all data structures without understanding the details of the system. Specialized interfacing classes (MJAxxxx), organized by function, are accessed from the MaeJavaAPI class. The MJAxxxx classes map internal data to user data in a protected manner. Users do not have direct access to internal MAExplorer data structures. However, MAEPlugins do have access to relevant data. This allows us to improve and change the internal data structures without causing problems with plugins using those data structures. The following figures show the top level plugin design.

Overall MAEPlugin design for MAExplorer

Figure 1. Overall MAEPlugin design for MAExplorer. Plugins are dynamically loaded into MAExplorer where they may be invoked from a menu entry or by various other means such as startup, normalization, data filtering, etc. Any number of plugins may be loaded simultaneously. They may be loaded and unloaded dynamically, and saved for automatic loading when the current database is saved.

Open Java API for MAEPlugins showing the specialized Java classes

Figure 2. Open Java API for MAEPlugins. Each type of application could be derived from specialized Java classes that contain most of the access methods required for that type of analysis. The Gather - Scatter API is a means of "gathering" data from MAExplorer internal data structures for the plugin. When a plugin wants to store data back into MAExplorer, it is "scattered" back into the internal data structures. This is implemented using the MaeJavaAPI and MJAxxx classes described in the Open Java API.

2. Example of using a Plugin

This shows a short demonstration of what is involved in using a MAEPlugin. The user first load the plugin from the disk. Generally the plugins .jar or .class files are stored in the Plugins/ directory where you have installed MAExplorer. Then they load a particular plugin which installs it in the Plugins pull-down menu. Then they revisit that menu to invoke the particular plugin. You may load any number of plugins (until you run out of computer memory if that should occur).

Loading a Plugin from the Plugins 'Load plugin' menu

Figure 3. Loading a MAEPlugin from your file system using the Load Plugins command in the Plugins pull down menu. If you have a plugin .jar or .class file, it may be specified using the "Load plugin" command. This pops up a file browser to let you specify the plugin file.

Selecting the loaded plugin command from the Plugin menu

Figure 4. Executing the new command previously loaded in the Plugin menu. Selecting the new "Show List Active Filters" command that now appears in the Plugins menu invokes the plugin. This pops up a report shown in the next figure.

Popup window from executing the MAEPlugin

Figure D.5. Popup window from executing the MAEPlugin. This plugin gives a full report on the data Filter status in a new pop up window.