Class ApplicationDistributor

  • All Implemented Interfaces:
    IAppLoader, java.io.Serializable
    Direct Known Subclasses:
    EclipseApplicationDistributor

    public class ApplicationDistributor
    extends java.lang.Object
    implements IAppLoader, java.io.Serializable
    Class used to produce a distribution of an iiziApp file from module projects. This class is used either from inside Eclipse, or externally from a command line wrapper.
    Author:
    Christopher Mindus
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      ConstructorDescription
      ApplicationDistributor​(PropFactory propFactory, PropMgr propMgr, PluginLoader pluginLoader, java.util.concurrent.ExecutorService executorService, boolean isVerbose)
      Constructs the application compiler for the target file.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethodDescription
      voidaddOperation​(IOperation op)
      Adds a new operation to the target.
      protected voidcheckCanceled​(java.lang.Object monitor)
      Checks if the monitor is canceled.
      java.io.FilecreateJar​(java.lang.Object monitor)
      Creates the Jar file.
      intcreateResourceOperations​(java.lang.Object monitor)
      Process all resource operations, i.e.
      voiddispose()
      Disposes of the instance when done.
      java.io.FilegetDestinationJar​(java.io.File projectDir)
      Gets the destination Jar file.
      java.util.concurrent.ExecutorServicegetExecutorService()
      Gets the parallel loader ExecutorService.
      PropMgrgetPropertyManager()
      The property manager to use when creating the distribution.
      java.lang.StringinitializeLicenseSystem()
      Initializes the license system because app registration is requested.
      java.lang.StringinitializeLicenseSystem​(ILicenseCallback licCB)
      Initializes the license system because app registration is requested.
      voidloadApplicationDefinition​(java.io.File project)
      Loads the application definition and all required Modules into memory in Command Line mode.
      protected <PC extends PropCnr>
      PC
      loadFile​(IIFile iifile, java.lang.Class<PC> propClass, java.lang.Object monitor)
      Loads a property file.
      PropCnrloadFile​(java.io.File file)
      Loads a property file.
      PropCnrloadFile​(java.lang.String fileName, java.io.InputStream inputStream)
      Loads a property file.
      protected voidloadModule​(IIDirectory iidir)
      Loads the entire Module application using the "Server code" with parallel thread load of all files.
      java.util.List<IPluginDescriptor<?>>loadPlugins​(java.lang.String names)
      Loads required plug-in's.
      voidresolveReferences​(java.util.List<java.lang.String> warnings, java.util.List<java.lang.String> errors)
      Resolves all references and then checks for property errors.
      java.lang.StringverifyModules()
      Verifies the Modules.
      protected voidworked​(java.lang.Object monitor, int work)
      Ticks units of work from progress.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • FILENAME

        public static final java.lang.String FILENAME
        The Application distribution file name located under the Module root.
        See Also:
        Constant Field Values
      • CREATED_BY

        public static final java.lang.String CREATED_BY
        The Jar "Created-By" version = "a.b.c.buildnr (com.iizigo)".
      • appCnr

        protected AppPropCnr appCnr
        The Application container.
      • propFactory

        protected final PropFactory propFactory
        The property factory to use when creating the distribution, null for the Designer.
    • Constructor Detail

      • ApplicationDistributor

        public ApplicationDistributor​(PropFactory propFactory,
                                      PropMgr propMgr,
                                      PluginLoader pluginLoader,
                                      java.util.concurrent.ExecutorService executorService,
                                      boolean isVerbose)
        Constructs the application compiler for the target file.
        Parameters:
        propFactory - The Property Factory.
        propMgr - The Property Manager.
        pluginLoader - The plug-in loader.
        executorService - The executor service.
        isVerbose - Verbose output.
    • Method Detail

      • initializeLicenseSystem

        public java.lang.String initializeLicenseSystem()
        Initializes the license system because app registration is requested.
        Returns:
        null for success, otherwise an error message. If an error is returned, it has already been logged as a severe error.
      • initializeLicenseSystem

        public java.lang.String initializeLicenseSystem​(ILicenseCallback licCB)
        Initializes the license system because app registration is requested.
        Parameters:
        licCB - The license callback, null for none. This parameter is used for the Designer.
        Returns:
        null for success, otherwise an error message. If an error is returned, it has already been logged as a severe error.
      • dispose

        public void dispose()
        Disposes of the instance when done.
      • loadApplicationDefinition

        public void loadApplicationDefinition​(java.io.File project)
                                       throws java.io.IOException,
                                              PropException,
                                              CancelException
        Loads the application definition and all required Modules into memory in Command Line mode.
        Parameters:
        project - The project directory.
        Throws:
        java.io.IOException - For file errors.
        PropException - For property errors.
        CancelException - If operation is canceled by user.
      • getDestinationJar

        public java.io.File getDestinationJar​(java.io.File projectDir)
        Gets the destination Jar file.
        Parameters:
        projectDir - The project directory.
        Returns:
        The absolute file, perhaps resolved from the project directory if the name is relative. null is returned if the Jar file name is not specified!
      • resolveReferences

        public void resolveReferences​(java.util.List<java.lang.String> warnings,
                                      java.util.List<java.lang.String> errors)
        Resolves all references and then checks for property errors.

        The returned list contains the property path in warning/error, a Tab character, then followed by the error message.

        Parameters:
        warnings - Warnings list to fill.
        errors - Errors list to fill.
      • verifyModules

        public java.lang.String verifyModules()
        Verifies the Modules. This includes verifying the classpath and dependencies to other non-included Modules in the distribution.
        Returns:
        Error message string, or null for OK.
      • createResourceOperations

        public int createResourceOperations​(java.lang.Object monitor)
                                     throws java.io.IOException,
                                            CancelException
        Process all resource operations, i.e. directories and file operations.
        Parameters:
        monitor - The progress monitor.
        Returns:
        The count of resource operations to perform.
        Throws:
        java.io.FileNotFoundException - If a file is not found.
        java.io.IOException - For file errors.
        CancelException - If operation is canceled by user.
      • getExecutorService

        public java.util.concurrent.ExecutorService getExecutorService()
        Gets the parallel loader ExecutorService.
        Specified by:
        getExecutorService in interface IAppLoader
      • loadFile

        public PropCnr loadFile​(java.lang.String fileName,
                                java.io.InputStream inputStream)
                         throws java.io.IOException,
                                PropException
        Loads a property file.
        Specified by:
        loadFile in interface IAppLoader
        Parameters:
        fileName - The file name for logging.
        inputStream - The file input stream.
        Returns:
        A Property container.
        Throws:
        java.io.IOException - For file errors.
        PropException - For property errors.
      • loadFile

        public PropCnr loadFile​(java.io.File file)
                         throws java.io.IOException,
                                PropException
        Loads a property file.
        Specified by:
        loadFile in interface IAppLoader
        Parameters:
        file - The file to load.
        Returns:
        A Property container.
        Throws:
        java.io.IOException - For file errors.
        PropException - For property errors.
      • loadPlugins

        public java.util.List<IPluginDescriptor<?>> loadPlugins​(java.lang.String names)
                                                         throws java.io.IOException
        Loads required plug-in's.

        Each plug-in must have a class called "name.server.Descriptor" that implement the interface com.iizix.IPluginDescriptor available.

        The plug-in definition should be found at the "name/schema/properties.xml", but the iiziGo modules have the "iizigo" module instead of "iizix". To figure out translation of names, a class called "name.server.Descriptor" is loaded and should implement the interface

        Specified by:
        loadPlugins in interface IAppLoader
        Parameters:
        names - The plug-in name, e.g. "com.iizigo.db,com.iizigo.term,com.iizigo.ws".
        Throws:
        java.io.IOException - If a plug-in failed to load.
      • loadFile

        protected <PC extends PropCnr> PC loadFile​(IIFile iifile,
                                                   java.lang.Class<PC> propClass,
                                                   java.lang.Object monitor)
                                            throws java.io.IOException,
                                                   PropException
        Loads a property file.
        Parameters:
        iifile - The file to load.
        Returns:
        A Property container.
        Throws:
        java.io.IOException - For file errors.
        PropException - For property errors.
      • addOperation

        public void addOperation​(IOperation op)
        Adds a new operation to the target.
        Parameters:
        op - The operation.
      • loadModule

        protected void loadModule​(IIDirectory iidir)
                           throws java.io.IOException,
                                  PropException
        Loads the entire Module application using the "Server code" with parallel thread load of all files.
        Parameters:
        iidir - The directory where the Module project is located.
        Throws:
        java.io.IOException - For file errors.
        PropException - For property errors.
      • createJar

        public java.io.File createJar​(java.lang.Object monitor)
                               throws java.io.IOException
        Creates the Jar file.
        Parameters:
        monitor - The Eclipse progress monitor, or null for none.
        Returns:
        The temp-file for the Jar.
        Throws:
        java.io.IOException - For I/O errors.
      • checkCanceled

        protected void checkCanceled​(java.lang.Object monitor)
                              throws CancelException
        Checks if the monitor is canceled.
        Parameters:
        monitor - The progress monitor, or null for none.
        Throws:
        CancelException - If the operation is canceled.
      • worked

        protected void worked​(java.lang.Object monitor,
                              int work)
        Ticks units of work from progress.
        Parameters:
        monitor - The progress monitor, or null for none.
        work - The work units count.