Interface IOSupport

All Superinterfaces:
InteractivePlugin, Plugin
All Known Implementing Classes:
AbstractIOSupport, BaseFileExporterSupport, BaseFileImporterSupport, BfsExporterSupport, BfsImporterSupport, FileOnlyImporterSupport

public interface IOSupport extends InteractivePlugin
This interface is a tagging interface that should be implemented by export and import plug-ins that knows how to cooperate with the external program executor. The plug-ins may or may not be usable as standalone plug-ins. The cooperation with the external program executor is designed to not interfere (too much) with regular usage of the export plug-in.

The communication between the external executor and the importer/exporter uses the regular plug-in API. Eg. InteractivePlugin.getRequestInformation(GuiContext, String), InteractivePlugin.configure(GuiContext, Request, Response) and Plugin.run(Request, Response, ProgressReporter). But we use a different set of commands than what is used in the normal plug-in execution sequence, so it is possible for the import/export plug-ins to know if they are invoked by the executor or by the regular plug-in execution sequence.

Note! The external executor doesn't check the return values of methods such as Plugin.supportsConfigurations(), Plugin.requiresConfiguration(), InteractivePlugin.getGuiContexts(), etc. By implementing this interface a plug-in is assumed to work with the external executor. This also means that a plug-in may use the above mentioned methods to "hide" itself as a regular plug-in (eg. if the getGuiContexts() returns null it will never show up in the interface). See AbstractIOSupport which can be used as a base class for such plug-ins.

The external program executor has a three-step configuration sequence.

  1. Select external program, exporter and importer and specify pre-conditions for the bioassay set such as raw data type, number of channels etc.
  2. Configure the exporter and importer. This step is forwarded to the importer/exporter plug-ins selected in the first step with the command COMMAND_CONFIGURE_IO_PLUGIN. The configuration parameters are proxied from the external executor which means that the exporter/importer has access to the options selected in the first step. The import/export plug-ins may only respond with Response.Status.DONE or Response.Status.ERROR. Other responses are treated as an error. Configuration settings that are stored by the importer and exporter are merged with the external executors configuration and stored in the database.
  3. Define parameters for the external program.
The job configuration sequence .... TODO
Since:
2.15
Author:
nicklas
See Also:
Last modified
$Date $