2.17.2: 2011-06-17

net.sf.basedb.plugins
Class PluginConfigurationImporter

java.lang.Object
  extended by net.sf.basedb.core.plugin.AbstractPlugin
      extended by net.sf.basedb.plugins.PluginConfigurationImporter
All Implemented Interfaces:
AutoDetectingImporter, InteractivePlugin, Plugin, SignalTarget

public class PluginConfigurationImporter
extends AbstractPlugin
implements InteractivePlugin, AutoDetectingImporter, SignalTarget

This plugin imports pluginconfiguration from an XML-file. The XML-file need to have a DOCLET definition in the first 30 lines and the format in the XML-file should use: plugin-configuration-file.dtd in /net/sf/basedb/core/dtd/.

Version:
2.1
Author:
Martin
Last modified
$Date$

Nested Class Summary
 
Nested classes/interfaces inherited from interface net.sf.basedb.core.plugin.Plugin
Plugin.MainType
 
Field Summary
private static About about
           
private static String COMMAND_SELECT_CONFIGURATIONS
           
private  HashMap<Integer,Boolean> configurationMap
           
private  RequestInformation configureJob
           
private  RequestInformation configureSelection
           
private static String dtdFileName
           
private static Set<GuiContext> guiContexts
           
private  boolean importAll
           
private static PluginParameter<Boolean> importAllParameter
           
private static GuiContext pluginConfigurationList
           
private  boolean setPermissions
           
private static PluginParameter<Boolean> setPermissionsParameter
           
private  ThreadSignalHandler signalHandler
           
private  File xmlFile
           
private static PluginParameter<File> xmlFileParameter
           
 
Fields inherited from class net.sf.basedb.core.plugin.AbstractPlugin
annotationSection, configuration, COPY_ANNOTATIONS, job, OVERWRITE_ANNOTATIONS, sc
 
Constructor Summary
PluginConfigurationImporter()
           
 
Method Summary
 void configure(GuiContext context, Request request, Response response)
          Configure the plugin.
 void doImport(InputStream in, ProgressReporter progress)
          Import the data from the given InputStream.
 About getAbout()
          Get information about the plugin, such as name, version, authors, etc.
private  boolean getConfigurationInstallOption(int orderNumber)
          Returns if a configuration in a certain place/order in the XML-file should be imported
private  RequestInformation getConfiguredJobParameters()
           
private  RequestInformation getConfiguredSelectionParameters()
          Gets request information to set which configuration to import
 Set<GuiContext> getGuiContexts()
          Get a set containing all items that the plugin handles.
 Plugin.MainType getMainType()
          Get the type of the plugin.
private  ParameterType getParameterType(Class parameterClass, List<?> values)
          Gets the ParameterType to use with a class.
 RequestInformation getRequestInformation(GuiContext context, String command)
          This method will return the RequestInformation for a given command, i.e.
 SignalHandler getSignalHandler()
          Get the signal handler that is handling signals on behalf of this object.
private  List getValueList(Element parameter, Class classType)
          Gets the list of values for a parameter from the XML-file.
 void importPluginConfigurationsFromJar(String jarPath, String xmlPath, HashMap<Integer,Boolean> configurations, boolean importAll, boolean setPermissions)
          Imports plugin configurations direct from an xml file, located in a jar.
 boolean isImportable(InputStream in)
          Check if the given InputStream can be imported by this plugin.
 String isInContext(GuiContext context, Object item)
          Check if the plugin can be used on the specified object.
 boolean requiresConfiguration()
          Returns FALSE, since that is how the plugins used to work before this method was introduced.
 void run(Request request, Response response, ProgressReporter progress)
          Run the plugin.
private  void setPluginConf(List parameters, PluginConfiguration plc)
          Sets parameters for a PluginConfiguration
 boolean supportsConfigurations()
          Returns TRUE, since that is how the plugins used to work before this method was introduced.
 
Methods inherited from class net.sf.basedb.core.plugin.AbstractPlugin
checkInterrupted, cloneParameterWithDefaultValue, closeLogFile, createLogFile, done, getCopyAnnotationsParmeter, getCurrentConfiguration, getCurrentJob, getJobOrConfigurationValue, getOverwriteAnnotationsParameters, getPermissions, init, log, log, storeValue, storeValue, storeValues, validateRequestParameters
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface net.sf.basedb.core.plugin.Plugin
done, getPermissions, init
 

Field Detail

COMMAND_SELECT_CONFIGURATIONS

private static final String COMMAND_SELECT_CONFIGURATIONS
See Also:
Constant Field Values

about

private static final About about

dtdFileName

private static final String dtdFileName
See Also:
Constant Field Values

pluginConfigurationList

private static final GuiContext pluginConfigurationList

guiContexts

private static final Set<GuiContext> guiContexts

xmlFileParameter

private static final PluginParameter<File> xmlFileParameter

setPermissionsParameter

private static final PluginParameter<Boolean> setPermissionsParameter

importAllParameter

private static final PluginParameter<Boolean> importAllParameter

configureJob

private RequestInformation configureJob

configureSelection

private RequestInformation configureSelection

xmlFile

private File xmlFile

setPermissions

private boolean setPermissions

importAll

private boolean importAll

configurationMap

private HashMap<Integer,Boolean> configurationMap

signalHandler

private ThreadSignalHandler signalHandler
Constructor Detail

PluginConfigurationImporter

public PluginConfigurationImporter()
Method Detail

getGuiContexts

public Set<GuiContext> getGuiContexts()
Description copied from interface: InteractivePlugin
Get a set containing all items that the plugin handles. Ie. if the plugin imports reporters, return a set containing Item.REPORTER. This information is used by client applications to put the plugin in the proper place in the user interface.

Specified by:
getGuiContexts in interface InteractivePlugin
Returns:
A Set containing Item:s, or null if the plugin is not concerned about items

isInContext

public String isInContext(GuiContext context,
                          Object item)
Description copied from interface: InteractivePlugin
Check if the plugin can be used on the specified object. The item is either a BasicItem or BasicData object, or null if called from a list context. A client application should only call this method for contexts matching one of the contexts in the set returned by the InteractivePlugin.getGuiContexts() method. For GuiContext.Type.ITEM contexts an item of the correct type should be passed as a parameter.

The plug-in can response with a null value indicating success, a warning-level message or throw an exception to indicate an error-level message. Client application should normally only show error-level messages to users, unless the user has requested to see warning messages.

NOTE! Before BASE 2.4 all messages were treated as error-level messages.

Specified by:
isInContext in interface InteractivePlugin
Parameters:
context - The current context of the client application, it is one of the values found in set returned by InteractivePlugin.getGuiContexts()
item - The currently active item, it's type should match the GuiContext.getItem() type, or null if the context is a list context
Returns:
Null if the plugin can use that item, or a warning-level message explaining why the plugin can't be used

getRequestInformation

public RequestInformation getRequestInformation(GuiContext context,
                                                String command)
                                         throws BaseException
Description copied from interface: InteractivePlugin
This method will return the RequestInformation for a given command, i.e. the list of parameters and some nice help text.

Specified by:
getRequestInformation in interface InteractivePlugin
Parameters:
context - The current context of the client application, it is one of the values found in set returned by InteractivePlugin.getGuiContexts()
command - The command
Returns:
The RequestInformation for the command
Throws:
BaseException - if there is an error

configure

public void configure(GuiContext context,
                      Request request,
                      Response response)
Description copied from interface: InteractivePlugin
Configure the plugin. Hopefully the client is supplying values for the parameters specified by InteractivePlugin.getRequestInformation(GuiContext, String).

Specified by:
configure in interface InteractivePlugin
Parameters:
context - The current context of the client application, it is one of the values found in set returned by InteractivePlugin.getGuiContexts()
request - Request object with the command and parameters
response - Response object in for the plugin to response through

getMainType

public Plugin.MainType getMainType()
Description copied from interface: Plugin
Get the type of the plugin. This method must always return the same value.

Specified by:
getMainType in interface Plugin
Returns:
One of the defined types

getAbout

public About getAbout()
Description copied from interface: Plugin
Get information about the plugin, such as name, version, authors, etc.

Specified by:
getAbout in interface Plugin
Returns:
An About object

supportsConfigurations

public boolean supportsConfigurations()
Description copied from class: AbstractPlugin
Returns TRUE, since that is how the plugins used to work before this method was introduced.

Specified by:
supportsConfigurations in interface Plugin
Overrides:
supportsConfigurations in class AbstractPlugin
Returns:
TRUE or FALSE

requiresConfiguration

public boolean requiresConfiguration()
Description copied from class: AbstractPlugin
Returns FALSE, since that is how the plugins used to work before this method was introduced.

Specified by:
requiresConfiguration in interface Plugin
Overrides:
requiresConfiguration in class AbstractPlugin
Returns:
TRUE or FALSE

run

public void run(Request request,
                Response response,
                ProgressReporter progress)
Description copied from interface: Plugin
Run the plugin. If a progress reporter object is passed it is recommended that the plugin makes use of it.

Specified by:
run in interface Plugin
Parameters:
request - Request object with the command and parameters
response - Response object in for the plugin to response through
progress - A ProgressReporter where the plugin can report its progess, can be null

isImportable

public boolean isImportable(InputStream in)
                     throws BaseException
Description copied from interface: AutoDetectingImporter
Check if the given InputStream can be imported by this plugin.

Specified by:
isImportable in interface AutoDetectingImporter
Parameters:
in - The input stream to check
Returns:
TRUE if the stream can be imported, FALSE otherwise
Throws:
BaseException - If something goes wrong

doImport

public void doImport(InputStream in,
                     ProgressReporter progress)
              throws BaseException
Description copied from interface: AutoDetectingImporter
Import the data from the given InputStream.

Specified by:
doImport in interface AutoDetectingImporter
Parameters:
in - The input stream to read from
progress - Progress reporter used by the caller to keep track of the progress. Null is allowed
Throws:
BaseException - If something goes wrong

getSignalHandler

public SignalHandler getSignalHandler()
Description copied from interface: SignalTarget
Get the signal handler that is handling signals on behalf of this object. Multiple invokations of this method may receive the same or different objects. Null may be returned if, for some reason, the current object instance doesn't want to receive signals. Returning null is the same as not implementing this interface.

Specified by:
getSignalHandler in interface SignalTarget
Returns:
A SignalHandler object, or null if the current instance doesn't support signals

importPluginConfigurationsFromJar

public void importPluginConfigurationsFromJar(String jarPath,
                                              String xmlPath,
                                              HashMap<Integer,Boolean> configurations,
                                              boolean importAll,
                                              boolean setPermissions)
                                       throws IOException,
                                              JDOMException,
                                              BaseException
Imports plugin configurations direct from an xml file, located in a jar.

Parameters:
jarPath - Path to the jar-file
xmlPath - Where in the jar-file the XML-file is located
configurations - A hasmap with a boolean value for each configuration in the xml-file. The value should be TRUE if the configuration should be imported, FALSE otherwise.
importAll - If all configurations in the xml-file should be imported or not.
setPermissions - If the configurations should be shared to the same users as the plugins they belong to.
Throws:
IOException - When something goes wrong accessing a file
JDOMException - When failed to read the XML-file
BaseException - When the hashmap with import options has different size compared to number of configurations in XML-file
Since:
2.5

getConfiguredJobParameters

private RequestInformation getConfiguredJobParameters()

getConfiguredSelectionParameters

private RequestInformation getConfiguredSelectionParameters()
Gets request information to set which configuration to import

Returns:
request information with parameter to use.

getValueList

private List getValueList(Element parameter,
                          Class classType)
Gets the list of values for a parameter from the XML-file. Returns a list with parameter values.


getParameterType

private ParameterType getParameterType(Class parameterClass,
                                       List<?> values)
Gets the ParameterType to use with a class. Returns null if this importer doesn't support the class.


setPluginConf

private void setPluginConf(List parameters,
                           PluginConfiguration plc)
                    throws ClassNotFoundException
Sets parameters for a PluginConfiguration

Parameters:
parameters - A list of the parameters that shall be set to the configuration
plc - The @link{PluginConfiguration} that the parameters shall be added to.
Throws:
ClassNotFoundException - If there is an error while trying to find the type of the parameters.

getConfigurationInstallOption

private boolean getConfigurationInstallOption(int orderNumber)
Returns if a configuration in a certain place/order in the XML-file should be imported

Parameters:
orderNumber - The number of order the configuration has in the XML-file
Returns:
TRUE if the configuration should be imported, FALSE otherwise.

2.17.2: 2011-06-17