Class PackageHolder


  • public class PackageHolder
    extends java.lang.Object
    Information for a package to be included in code generated from schema.
    Author:
    Dennis M. Sosnoski
    • Field Detail

      • m_packageName

        private final java.lang.String m_packageName
        Full package name (dot-separated form).
      • m_generateDirectory

        private final java.io.File m_generateDirectory
        Target directory for code generation.
      • m_parentPackage

        private final PackageHolder m_parentPackage
        Information for parent package.
      • m_nameSet

        private final UniqueNameSet m_nameSet
        Set of class names used in package.
      • m_classes

        private final java.util.ArrayList m_classes
        List of top-level classes in package.
      • m_allClasses

        private final java.util.ArrayList m_allClasses
        List of all classes in package, including inner classes.
      • m_subpackageCount

        private int m_subpackageCount
        Number of subpackages of this package.
    • Constructor Detail

      • PackageHolder

        public PackageHolder​(java.lang.String name,
                             java.io.File dir,
                             PackageHolder parent)
        Constructor.
        Parameters:
        name - full package name (dot-separated form)
        dir - target directory for code generation (null if skipping code generation)
        parent - parent package information
    • Method Detail

      • getGenerateDirectory

        public java.io.File getGenerateDirectory()
        Get generate directory.
        Returns:
        generate directory
      • getParent

        public PackageHolder getParent()
        Get parent package.
        Returns:
        parent package
      • getName

        public java.lang.String getName()
        Get fully-qualified package name.
        Returns:
        name
      • getTopClassCount

        public int getTopClassCount()
        Get the number of top-level classes in package.
        Returns:
        count
      • getClassCount

        public int getClassCount()
        Get the total number of classes (including inner classes) in package.
        Returns:
        count
      • getSubpackageCount

        public int getSubpackageCount()
        Get the number of subpackages created for this package.
        Returns:
        count
      • addClass

        public ClassHolder addClass​(java.lang.String name,
                                    NameConverter nconv,
                                    ClassDecorator[] decorators,
                                    boolean inner,
                                    boolean enumer,
                                    BindingHolder holder)
        Add class to package.
        Parameters:
        name - preferred name for class
        nconv - name converter for class
        decorators - class decorators
        inner - use inner classes for substructures
        enumer - enumeration class flag
        holder - binding holder
        Returns:
        class generator
      • addClass

        public ClassHolder addClass​(java.lang.String name,
                                    java.lang.String base,
                                    NameConverter nconv,
                                    ClassDecorator[] decorators,
                                    boolean enumer,
                                    BindingHolder holder)
        Add derived class to package. This method is only used when top-level classes are being used for substructures.
        Parameters:
        name - preferred name for class
        base - base class name
        nconv - name converter for class
        decorators - class decorators
        enumer - enumeration class flag
        holder - binding holder
        Returns:
        class generator
      • addInnerClass

        public void addInnerClass​(IClassHolder clas)
        Add an inner class to package.
        Parameters:
        clas -
      • generate

        public void generate​(boolean verbose,
                             TypeData clasdata,
                             AST ast)
        Generate a specific class within this package. This first tests if the class has already been generated, and if it has does nothing.
        Parameters:
        verbose -
        clasdata - class data
        ast -
      • generate

        public void generate​(boolean verbose,
                             AST ast,
                             BindingOrganizer directory)
        Generate this package.
        Parameters:
        verbose -
        ast -
        directory - binding directory
      • getClassFields

        public StringObjectPair[] getClassFields()
        Get the field information for every class in this package. The returned pairs have the fully-qualified class name as the key, and the array of ordered field name and type string pairs as the values. This method is only meaningful after the class has been generated.
        Returns:
        class field information