Class AbstractModule

java.lang.Object
org.jfree.base.modules.DefaultModuleInfo
org.jfree.base.modules.AbstractModule
All Implemented Interfaces:
Module, ModuleInfo
Direct Known Subclasses:
DefaultLogModule

public abstract class AbstractModule extends DefaultModuleInfo implements Module
The abstract module provides a default implementation of the module interface.

The module can be specified in an external property file. The file name of this specification defaults to "module.properties". This file is no real property file, it follows a more complex rule set.

Lines starting with '#' are considered comments. Section headers start at the beginning of the line, section properties are indented with at least one whitespace.

The first section is always the module info and contains the basic module properties like name, version and a short description.

 module-info:
   name: xls-export-gui
   producer: The JFreeReport project - www.jfree.org/jfreereport
   description: A dialog component for the Excel table export.
   version.major: 0
   version.minor: 84
   version.patchlevel: 0
 
The properties name, producer and description are simple strings. They may span multiple lines, but may not contain a colon (':'). The version properties are integer values.

This section may be followed by one or more "depends" sections. These sections describe the base modules that are required to be active to make this module work. The package manager will enforce this policy and will deactivate this module if one of the base modules is missing.

 depends:
   module: org.jfree.report.modules.output.table.xls.XLSTableModule
   version.major: 0
   version.minor: 84
 

The property module references to the module implementation of the module package.

  • Field Details

    • requiredModules

      private ModuleInfo[] requiredModules
      The list of required modules.
    • optionalModules

      private ModuleInfo[] optionalModules
      The list of optional modules.
    • name

      private String name
      The name of the module.
    • description

      private String description
      A short description of the module.
    • producer

      private String producer
      The name of the module producer.
    • subsystem

      private String subsystem
      The modules subsystem.
  • Constructor Details

    • AbstractModule

      public AbstractModule()
      Default Constructor.
  • Method Details

    • loadModuleInfo

      protected void loadModuleInfo() throws ModuleInitializeException
      Loads the default module description from the file "module.properties". This file must be in the same package as the implementing class.
      Throws:
      ModuleInitializeException - if an error occurs.
    • loadModuleInfo

      protected void loadModuleInfo(InputStream in) throws ModuleInitializeException
      Loads the module descriptiong from the given input stream. The module description must conform to the rules define in the class description. The file must be encoded with "ISO-8859-1" (like property files).
      Parameters:
      in - the input stream from where to read the file
      Throws:
      ModuleInitializeException - if an error occurs.
    • readValue

      private String readValue(AbstractModule.ReaderHelper reader, String firstLine) throws IOException
      Reads a multiline value the stream. This will read the stream until a new key is found or the end of the file is reached.
      Parameters:
      reader - the reader from where to read.
      firstLine - the first line (which was read elsewhere).
      Returns:
      the complete value, never null
      Throws:
      IOException - if an IO error occurs.
    • isNextLineValueLine

      private boolean isNextLineValueLine(AbstractModule.ReaderHelper reader) throws IOException
      Checks, whether the next line in the reader is a value line.
      Parameters:
      reader - from where to read the lines.
      Returns:
      true, if the next line is a value line, false otherwise.
      Throws:
      IOException - if an IO error occurs.
    • readModuleInfo

      private void readModuleInfo(AbstractModule.ReaderHelper reader) throws IOException
      Reads the module definition header. This header contains information about the module itself.
      Parameters:
      reader - the reader from where to read the content.
      Throws:
      IOException - if an error occures
    • parseKey

      private String parseKey(String line)
      Parses an string to find the key section of the line. This section ends with an colon.
      Parameters:
      line - the line which to parse
      Returns:
      the key or null if no key is found.
    • parseValue

      private String parseValue(String line)
      Parses the value section of the given line.
      Parameters:
      line - the line that should be parsed
      Returns:
      the value, never null
    • readExternalModule

      private DefaultModuleInfo readExternalModule(AbstractModule.ReaderHelper reader) throws IOException
      Reads an external module description. This describes either an optional or a required module.
      Parameters:
      reader - the reader from where to read the module
      Returns:
      the read module, never null
      Throws:
      IOException - if an error occures.
    • getName

      public String getName()
      Returns the name of this module.
      Specified by:
      getName in interface Module
      Returns:
      the module name
      See Also:
    • setName

      protected void setName(String name)
      Defines the name of the module.
      Parameters:
      name - the module name.
    • getDescription

      public String getDescription()
      Returns the module description.
      Specified by:
      getDescription in interface Module
      Returns:
      the description of the module.
      See Also:
    • setDescription

      protected void setDescription(String description)
      Defines the description of the module.
      Parameters:
      description - the module's desciption.
    • getProducer

      public String getProducer()
      Returns the producer of the module.
      Specified by:
      getProducer in interface Module
      Returns:
      the producer.
      See Also:
    • setProducer

      protected void setProducer(String producer)
      Defines the producer of the module.
      Parameters:
      producer - the producer.
    • getRequiredModules

      public ModuleInfo[] getRequiredModules()
      Returns a copy of the required modules array. This array contains all description of the modules that need to be present to make this module work.
      Specified by:
      getRequiredModules in interface Module
      Returns:
      an array of all required modules.
      See Also:
    • getOptionalModules

      public ModuleInfo[] getOptionalModules()
      Returns a copy of the required modules array. This array contains all description of the optional modules that may improve the modules functonality.
      Specified by:
      getOptionalModules in interface Module
      Returns:
      an array of all required modules.
      See Also:
    • setRequiredModules

      protected void setRequiredModules(ModuleInfo[] requiredModules)
      Defines the required module descriptions for this module.
      Parameters:
      requiredModules - the required modules.
    • setOptionalModules

      public void setOptionalModules(ModuleInfo[] optionalModules)
      Defines the optional module descriptions for this module.
      Parameters:
      optionalModules - the optional modules.
    • toString

      public String toString()
      Returns a string representation of this module.
      Overrides:
      toString in class DefaultModuleInfo
      Returns:
      the string representation of this module for debugging purposes.
      See Also:
    • isClassLoadable

      protected static boolean isClassLoadable(String name)
      Deprecated.
      use the method that passes in a context-class.
      Tries to load a class to indirectly check for the existence of a certain library.
      Parameters:
      name - the name of the library class.
      Returns:
      true, if the class could be loaded, false otherwise.
    • isClassLoadable

      protected static boolean isClassLoadable(String name, Class context)
      Tries to load a class to indirectly check for the existence of a certain library.
      Parameters:
      name - the name of the library class.
      context - the context class to get a classloader from.
      Returns:
      true, if the class could be loaded, false otherwise.
    • configure

      public void configure(SubSystem subSystem)
      Configures the module by loading the configuration properties and adding them to the package configuration.
      Specified by:
      configure in interface Module
      Parameters:
      subSystem - the subsystem.
    • performExternalInitialize

      protected void performExternalInitialize(String classname) throws ModuleInitializeException
      Deprecated.
      Use the method that provides a class-context instead.
      Tries to load an module initializer and uses this initializer to initialize the module.
      Parameters:
      classname - the class name of the initializer.
      Throws:
      ModuleInitializeException - if an error occures
    • performExternalInitialize

      protected void performExternalInitialize(String classname, Class context) throws ModuleInitializeException
      ???.
      Parameters:
      classname - ?
      context - ?
      Throws:
      ModuleInitializeException - if there is an initialisation error.
    • getSubSystem

      public String getSubSystem()
      Returns the modules subsystem. If this module is not part of an subsystem then return the modules name, but never null.
      Specified by:
      getSubSystem in interface Module
      Returns:
      the name of the subsystem.
    • setSubSystem

      protected void setSubSystem(String name)
      Defines the subsystem name for this module.
      Parameters:
      name - the new name of the subsystem.