org.jibx.schema.codegen
Class PackageHolder

java.lang.Object
  extended by org.jibx.schema.codegen.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 Summary
private  java.util.ArrayList m_allClasses
          List of all classes in package, including inner classes.
private  java.util.ArrayList m_classes
          List of top-level classes in package.
private  java.io.File m_generateDirectory
          Target directory for code generation.
private  UniqueNameSet m_nameSet
          Set of class names used in package.
private  java.lang.String m_packageName
          Full package name (dot-separated form).
private  PackageHolder m_parentPackage
          Information for parent package.
private  int m_subpackageCount
          Number of subpackages of this package.
 
Constructor Summary
PackageHolder(java.lang.String name, java.io.File dir, PackageHolder parent)
          Constructor.
 
Method Summary
 ClassHolder addClass(java.lang.String name, NameConverter nconv, ClassDecorator[] decorators, boolean inner, boolean enumer)
          Add class to package.
 ClassHolder addClass(java.lang.String name, java.lang.String base, NameConverter nconv, ClassDecorator[] decorators, boolean enumer)
          Add derived class to package.
 void addInnerClass(IClassHolder clas)
          Add an inner class to package.
 void generate(boolean verbose, AST ast, BindingOrganizer directory)
          Generate this package.
 void generate(boolean verbose, ClassHolder clashold, BindingHolder bindhold, AST ast)
          Generate a specific class within this package.
 int getClassCount()
          Get the total number of classes (including inner classes) in package.
 StringObjectPair[] getClassFields()
          Get the field information for every class in this package.
 java.io.File getGenerateDirectory()
          Get generate directory.
 java.lang.String getName()
          Get fully-qualified package name.
 PackageHolder getParent()
          Get parent package.
 int getSubpackageCount()
          Get the number of subpackages created for this package.
 int getTopClassCount()
          Get the number of top-level classes in package.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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)
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
Returns:
class generator

addClass

public ClassHolder addClass(java.lang.String name,
                            java.lang.String base,
                            NameConverter nconv,
                            ClassDecorator[] decorators,
                            boolean enumer)
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
Returns:
class generator

addInnerClass

public void addInnerClass(IClassHolder clas)
Add an inner class to package.

Parameters:
clas -

generate

public void generate(boolean verbose,
                     ClassHolder clashold,
                     BindingHolder bindhold,
                     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 -
clashold - class holder
bindhold - class binding holder
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


Project Web Site