Class CustomizationCommandLineBase

  • Direct Known Subclasses:
    ClassCustomizationBase, CodeGenCommandLine, SchemaCommandLineBase

    public abstract class CustomizationCommandLineBase
    extends java.lang.Object
    Command line processor for all types of customizable tools. This just provides the basic handling of a customizations file, target directory, and overrides of values in the customizations root object. TODO: should extend SchemaCommandLinebase
    Author:
    Dennis M. Sosnoski
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.lang.String[] COMMON_USAGE_LINES
      Ordered array of usage lines for parameters at this level.
      private java.util.List m_extraArgs
      List of specified classes or files.
      private java.io.File m_generateDirectory
      Target directory for output.
      private java.lang.String[] m_usageLines
      Complete array of usage lines.
      private boolean m_verbose
      Verbose output flag.
      static java.lang.Class[] STRING_PARAMETER_ARRAY
      Array of method parameter classes for single String parameter.
      static java.lang.Class[] STRING_UNMARSHALLER_PARAMETER_ARRAY
      Array of classes for String and unmarshaller parameters.
      private static int USAGE_UNIQUE_CHARS
      Number of leading characters in usage lines checked for uniqueness.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected CustomizationCommandLineBase​(java.lang.String[] lines)
      Constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected abstract java.util.Map applyOverrides​(java.util.Map overmap)
      Apply map of override values to customizations read from file or created as default.
      protected boolean checkParameter​(CustomizationCommandLineBase.ArgList alist)
      Check extension parameter.
      protected void finishParameters​(CustomizationCommandLineBase.ArgList alist)
      Finish processing of command line parameters.
      java.util.List getExtraArgs()
      Get extra arguments from command line.
      java.io.File getGeneratePath()
      Get generate directory.
      protected java.lang.String[] getUsageLines()
      Get the usage lines describing command line parameters.
      boolean isVerbose()
      Check if verbose output requested.
      protected abstract boolean loadCustomizations​(java.lang.String path)
      Load the customizations file.
      protected static java.lang.String[] mergeUsageLines​(java.lang.String[] base, java.lang.String[] adds)
      Merge two arrays of strings, returning an ordered array containing all the strings from both provided arrays.
      abstract void printUsage()
      Print usage information.
      boolean processArgs​(java.lang.String[] args)
      Process command line arguments array.
      static boolean putKeyValue​(java.lang.String def, java.util.Map map)
      Set a key=value definition in a map.
      protected void verboseDetails()
      Print any extension details.
      • Methods inherited from class java.lang.Object

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

      • STRING_PARAMETER_ARRAY

        public static final java.lang.Class[] STRING_PARAMETER_ARRAY
        Array of method parameter classes for single String parameter.
      • STRING_UNMARSHALLER_PARAMETER_ARRAY

        public static final java.lang.Class[] STRING_UNMARSHALLER_PARAMETER_ARRAY
        Array of classes for String and unmarshaller parameters.
      • USAGE_UNIQUE_CHARS

        private static final int USAGE_UNIQUE_CHARS
        Number of leading characters in usage lines checked for uniqueness.
        See Also:
        Constant Field Values
      • COMMON_USAGE_LINES

        private static final java.lang.String[] COMMON_USAGE_LINES
        Ordered array of usage lines for parameters at this level.
      • m_usageLines

        private final java.lang.String[] m_usageLines
        Complete array of usage lines.
      • m_extraArgs

        private java.util.List m_extraArgs
        List of specified classes or files.
      • m_generateDirectory

        private java.io.File m_generateDirectory
        Target directory for output.
      • m_verbose

        private boolean m_verbose
        Verbose output flag.
    • Constructor Detail

      • CustomizationCommandLineBase

        protected CustomizationCommandLineBase​(java.lang.String[] lines)
        Constructor. This just merges the usage line defined by subclasses with those at this level, and checks for any duplication (by comparing the first n characters of the lines).
        Parameters:
        lines -
    • Method Detail

      • processArgs

        public boolean processArgs​(java.lang.String[] args)
                            throws JiBXException,
                                   java.io.IOException
        Process command line arguments array.
        Parameters:
        args -
        Returns:
        true if valid, false if not
        Throws:
        JiBXException
        java.io.IOException
      • getGeneratePath

        public java.io.File getGeneratePath()
        Get generate directory.
        Returns:
        directory
      • getExtraArgs

        public java.util.List getExtraArgs()
        Get extra arguments from command line. These extra arguments must follow all parameter flags.
        Returns:
        args
      • isVerbose

        public boolean isVerbose()
        Check if verbose output requested.
        Returns:
        verbose
      • putKeyValue

        public static boolean putKeyValue​(java.lang.String def,
                                          java.util.Map map)
        Set a key=value definition in a map. This is a command line processing assist method that prints an error message directly if the expected format is not found.
        Parameters:
        def -
        map -
        Returns:
        true if successful, false if error
      • getUsageLines

        protected java.lang.String[] getUsageLines()
        Get the usage lines describing command line parameters.
        Returns:
        lines
      • mergeUsageLines

        protected static java.lang.String[] mergeUsageLines​(java.lang.String[] base,
                                                            java.lang.String[] adds)
        Merge two arrays of strings, returning an ordered array containing all the strings from both provided arrays.
        Parameters:
        base -
        adds -
        Returns:
        ordered merged
      • checkParameter

        protected boolean checkParameter​(CustomizationCommandLineBase.ArgList alist)
        Check extension parameter. This method may be overridden by subclasses to process parameters beyond those known to this base class.
        Parameters:
        alist - argument list
        Returns:
        true if parameter processed, false if unknown
      • finishParameters

        protected void finishParameters​(CustomizationCommandLineBase.ArgList alist)
        Finish processing of command line parameters. This method may be overridden by subclasses to implement any added processing after all the command line parameters have been handled.
        Parameters:
        alist -
      • verboseDetails

        protected void verboseDetails()
        Print any extension details. This method may be overridden by subclasses to print extension parameter values for verbose output.
      • loadCustomizations

        protected abstract boolean loadCustomizations​(java.lang.String path)
                                               throws JiBXException,
                                                      java.io.IOException
        Load the customizations file. This method must load the specified customizations file, or create a default customizations instance, of the appropriate type.
        Parameters:
        path - customization file path, null if none
        Returns:
        true if successful, false if an error
        Throws:
        JiBXException
        java.io.IOException
      • applyOverrides

        protected abstract java.util.Map applyOverrides​(java.util.Map overmap)
        Apply map of override values to customizations read from file or created as default.
        Parameters:
        overmap - override key-value map
        Returns:
        map for key/values not recognized
      • printUsage

        public abstract void printUsage()
        Print usage information.