Class AbstractPlugin

java.lang.Object
net.sf.basedb.core.plugin.AbstractPlugin
All Implemented Interfaces:
Plugin
Direct Known Subclasses:
AbstractAnalysisPlugin, AbstractExporterPlugin, AbstractFileUnpacker, AbstractFlatFileImporter, AbstractIOSupport, BfsExporterPlugin, CdfFileReporterImporter, CloneReportersPlugin, HelpImporter, IntensityCalculatorPlugin, PluginConfigurationImporter

public abstract class AbstractPlugin
extends Object
implements Plugin
This is an abstract base class useful for developing plugins. It's main purpose is to help with validating and storing request parameters into the plugin or job configuration.
Version:
2.0
Author:
Enell, Nicklas
Last modified
$Date: 2023-12-20 14:32:15 +0100 (Wed, 20 Dec 2023) $
  • Field Details

  • Constructor Details

    • AbstractPlugin

      protected AbstractPlugin()
      Create a new AbstractPlugin.
  • Method Details

    • init

      public void init​(SessionControl sc, ParameterValues configuration, ParameterValues job) throws BaseException
      Store copies of the session control, plugin and job configuration. These are available to subclasses in the sc, configuration and job variables. If a subclass overrides this method it is recommended that it also calls super.init(sc, configuration, job).
      Specified by:
      init in interface Plugin
      Parameters:
      sc - A SessionControl object that the plugin can use to communicate with the core.
      configuration - The configuration parameters for the plugin
      job - The job parameters for the plugin
      Throws:
      BaseException - if there is an error.
    • done

      public void done()
      Clears the variables set by the init method. If a subclass overrides this method it is recommended that it also calls super.done().
      Specified by:
      done in interface Plugin
    • supportsConfigurations

      public boolean supportsConfigurations()
      Returns TRUE, since that is how the plugins used to work before this method was introduced.
      Specified by:
      supportsConfigurations in interface Plugin
      Returns:
      TRUE or FALSE
    • requiresConfiguration

      public boolean requiresConfiguration()
      Returns FALSE, since that is how the plugins used to work before this method was introduced.
      Specified by:
      requiresConfiguration in interface Plugin
      Returns:
      TRUE or FALSE
    • getPermissions

      public Collection<Permissions> getPermissions()
      Return null, which gives the plugin the same permissions as the logged in user.
      Specified by:
      getPermissions in interface Plugin
      Returns:
      A collection of permissions or null to not use permissions
    • validateRequestParameters

      protected List<Throwable> validateRequestParameters​(List<PluginParameter<?>> parameters, Request request)
      Validate the parameter values in a request against a list of plugin parameter definitions. The validation is done by calling the ParameterType.validate(String, List) for each parameter in the list of parameter definitions. If all parameters are valid this method returns null, otherwise a list of exceptions that ocurred during the validation. This list can be directly propagated to the Response.setError(String, List) method. For example:
      // In Plugin.invoke() method:
      List<PluginParameter<?>> parameters = getParametersForCommand(request.getCommand());
      List<Throwable> errors = 
         validateRequestParameters(parameters, request);
      if (errors != null)
      {
         response.setError(errors.size()+
            " invalid parameter(s) were found in the request", errors);
         return;
      }
      
      Parameters:
      parameters - A list containing the parameter definitions
      request - The request
      Returns:
      A list of exceptions, or null if all parameters are valid
    • storeValue

      protected <T> void storeValue​(ParameterValues values, Request request, PluginParameter<T> parameter) throws BaseException
      Copy a parameter value from a Request to a ParameterValues object. This method makes it easy for a subclass to directly store a request parameter into either the plugin or job configuration. Use this method when the parameter valus is a single value.
      Parameters:
      values - The ParameterValues object where the value should be stored, use either configuration or job
      request - The Request object
      parameter - The PluginParameter object for the parameter
      Throws:
      BaseException - If the parameter value is invalid
    • storeValue

      protected <T> void storeValue​(ParameterValues values, PluginParameter<T> parameter, T value)
      Store a value in a ParameterValues object. This method is useful when a plugin needs to store a value that is not part of the request.
      Type Parameters:
      T - The type of the parameter
      Parameters:
      values - The ParameterValues object where the value should be stored, use either configuration or job
      parameter - The PluginParameter object for the parameter
      value - The value to save
      Throws:
      BaseException - If the parameter value is invalid
    • storeValues

      protected <T> void storeValues​(ParameterValues values, Request request, PluginParameter<T> parameter) throws BaseException
      Copy a list of parameter values from a Request to a ParameterValues object. This method makes it easy for a subclass to directly store a request parameter into either the plugin or job configuration. Use this method when the parameter value is a list of values.
      Parameters:
      values - The ParameterValues object where the value should be stored, use either configuration or job
      request - The Request object
      parameter - The ParameterType object for the parameter
      Throws:
      BaseException - If the parameter value is invalid
    • getCurrentJob

      protected Job getCurrentJob​(DbControl dc)
      Get the job that is executing this plugin or null.
      Parameters:
      dc - The DbControl to use for database access
      Returns:
      The job or null
    • getCurrentConfiguration

      protected PluginConfiguration getCurrentConfiguration​(DbControl dc)
      Get the plug-in configuration that this is currently in use or null.
      Parameters:
      dc - The DbControl to use for database access
      Returns:
      The configuration or null
      Since:
      2.5
    • getCopyAnnotationsParmeter

      protected PluginParameter<Boolean> getCopyAnnotationsParmeter​(String label, String description, Boolean defaultValue)
      Parameter definition that asks if annotations should be copied from the plug-in definition/configuration to other items.
      Parameters:
      label - The label to use for the parameter or null to use the default label (Copy annotations)
      description - The description to use for the parameter or null to use the default description
      defaultValue - The default value
    • getOverwriteAnnotationsParameters

      protected PluginParameter<Boolean> getOverwriteAnnotationsParameters​(String label, String description, Boolean defaultValue)
      Parameter definition that asks if copied annotations should overwrite existing annotations or not.
      Parameters:
      label - The label to use for the parameter or null to use the default label (Overwrite existing)
      description - The description to use for the parameter or null to use the default description
      defaultValue - The default value
      Since:
      2.5
    • getJobOrConfigurationValue

      protected Object getJobOrConfigurationValue​(String name)
      Get the value for a job or configuration parameter. This method first checks the job parameters. If there is no value it will check the configuration parameters.
      Parameters:
      name - The name of the parameter
      Returns:
      The parameter value, or null
      Since:
      2.15
    • cloneParameterWithDefaultValue

      protected <T> PluginParameter<T> cloneParameterWithDefaultValue​(PluginParameter<T> pp)
      Clone a plug-in parameter and set the default value to the value that is already stored in the job or configuration parameters.
      Parameters:
      pp - The parameter to clone
      Returns:
      The cloned parameter
      Since:
      2.15
    • createLogFile

      protected void createLogFile​(String path)
      Create a log file in the BASE file system for logging detailed information from a plug-in. The log file will be created if it doesn't exists. The log file is handled in it's own transaction. Call closeLogFile() to close the log file and commit changes to the database. If this method is called when a log file is open, it does nothing.
      Parameters:
      path - The path to log to, if null this method does nothing
      Since:
      2.8
    • closeLogFile

      protected void closeLogFile()
      Close the log file created by createLogFile(String).
      Since:
      2.8
    • isLogging

      protected boolean isLogging()
      Checks if logging is enabled.
      Since:
      3.19.10
    • log

      protected void log​(String message)
      Log a message to the log file created by createLogFile(String). If no log file has been created, this method does nothing.
      Parameters:
      message - The message to log
      Since:
      2.8
    • log

      protected void log​(String message, Throwable t)
      Log a message and stack trace to the log file created by createLogFile(String). If not log file exists, this method does nothing.
      Parameters:
      message - The message to log
      t - A stack trace
      Since:
      2.8