org.objectweb.jorm.metainfo.api
Interface Class

All Superinterfaces:
MetaObject, java.io.Serializable

public interface Class
extends MetaObject

A Class interface defines methods to describe a Class meta object. A Class is composed by a set of fields (primitive, reference class or reference generic class), a set of inherited classes, a mapping class, can be abstract or not and has a name.

Author:
X. Spengler

Method Summary
 void addClassProject(java.lang.String projectName, ClassProject classProject)
          Adds a ClassProject object.
 void addSubClass(Class class_)
          Adds a new class to the list of the derived classes for the current class object.
 void addSuperClass(Class class_)
          Adds a new inherited class to the list of the inherited classes for the current class object.
 ClassProject createClassProject(java.lang.String projectName)
          Creates a new ClassProject object.
 ClassRef createClassRef(java.lang.String fieldName, Class class_)
          Allows to obtain a new ClassRef from a field name an its class.
 GenClassRef createGenClassRef(java.lang.String fieldName, java.lang.String genName)
          Allows to obtain a new GenClassRef from a field name an its generic class.
 ScalarField createHiddenField(java.lang.String fieldname, PType type, int size, int scale)
          Creates an hiddenfield for the current Class object.
 NameDef createNameDef()
          Creates a new NameDef object for the current Class object.
 PrimitiveElement createPrimitiveElement(java.lang.String fieldName, PType type, int size, int scale)
          Allows to obtain a new PrimitiveElement from a class field name an its type.
 boolean detectFilterElementNotInPK(Expression exp, NameDef nd)
          Return true if one element of the expression exp is not part of the namedef.
 boolean generateKFPNC()
          Return true if the KFPNC has to be generated.
 java.util.List getAllAncestors()
          Return all the ancestors in the inheritance graph.
 java.util.Collection getAllFields()
          Returns an iterator on existing class fields + fields from super classes.
 java.util.Collection getAllHiddenFields()
           
 java.util.List getAncestors()
          Returns only the top ancestors.
 ClassMapping getClassMapping(java.lang.String projectName, java.lang.String mapperName)
          Returns a ClassMapping object.
 ClassProject getClassProject(java.lang.String projectName)
          Returns a ClassProject object.
 java.util.Collection getClassProjects()
          Returns a collection of ClassProject objects.
 java.lang.String getConstantValue(java.lang.String fieldName)
          Obtains the value of a constant PrimitiveElement, defined either in the current class or in one of its ancestors.
 int getFieldRefNumber()
          Returns the number of fields which are references to classes.
 java.util.Collection getFields()
          Returns an iterator on existing class fields.
 java.lang.String getFileName()
          Allows to retrieve the file name of this class MO.
 java.lang.String getFQName()
          Gets the fully qualified name (including the package name) associated with this class.
 ScalarField getHiddenField(java.lang.String fieldname)
          Retrieve the hiddenfield identified by its name in the current class.
 java.util.Collection getHiddenFields()
           
 Expression getInheritanceFilter(NameDef nd)
           
 java.lang.Object getInheritanceNamingKey(NameDef nd)
           
 int getInheritedClassNumber()
          Returns the number of inherited classes for the current Class object.
 java.lang.String getName()
          Allows to know the name of the current class object.
 NameDef getNameDef(java.lang.String projectName)
          Returns a NameDef object from a given mapperName and mappingName.
 java.util.Collection getNameDefs()
           
 Package getPackage()
           
 PType getPType()
           
 java.util.Collection getSubClasses()
          Allows us to obtain all classes derived from the current class object.
 Class getSuperClass(java.lang.String fqcn)
          Retrieves a super class whith its name.
 java.util.Collection getSuperClasses()
          Retrieves the collection of super classes
 TypedElement getTypedElement(java.lang.String fieldName)
          Allows to obtain an existing Field.
 boolean isAbstract()
          Allows to know if the current class is an abstract class or not.
 boolean isPolymorphic()
          Returns true if the class is polymorphic, i.e.
 ClassProject removeClassProject(java.lang.String projectname)
          Removes a ClassProject instance.
 TypedElement removeTypedElement(java.lang.String fieldName)
          Removes a typed element.
 void setAbstract(boolean isAbstract)
           
 void setConstantValue(java.lang.String fieldName, java.lang.String cv)
          Defines the value of a constant PrimitiveElement, defined either in the current class or in one of its ancestors.
 void setFileName(java.lang.String filename)
          Allows to assign the file name of this class MO.
 void setInheritanceFilter(NameDef nd, Expression filter)
           
 void setInheritanceNamingKey(NameDef nd, java.lang.Object key)
           
 
Methods inherited from interface org.objectweb.jorm.metainfo.api.MetaObject
getParent, setParent
 

Method Detail

getPackage

public Package getPackage()

getFileName

public java.lang.String getFileName()
Allows to retrieve the file name of this class MO.

Returns:
The file name.

setFileName

public void setFileName(java.lang.String filename)
Allows to assign the file name of this class MO.

Parameters:
filename - The file name.

isAbstract

public boolean isAbstract()
Allows to know if the current class is an abstract class or not.

Returns:
true, if the current class is an abstract class, and false, if the current class is not abstract

setAbstract

public void setAbstract(boolean isAbstract)

getName

public java.lang.String getName()
Allows to know the name of the current class object.

Returns:
the string representation of the class name

getFQName

public java.lang.String getFQName()
Gets the fully qualified name (including the package name) associated with this class.

Returns:
the string representation of the fully qualified class name

getTypedElement

public TypedElement getTypedElement(java.lang.String fieldName)
Allows to obtain an existing Field. A TypedElement is a class field, and this method finds a field with its name (fieldName). This method is a generic method to return a TypedElement object.

Parameters:
fieldName - the name of the class field
Returns:
a field object. If the field does not exist, null is returned.

removeTypedElement

public TypedElement removeTypedElement(java.lang.String fieldName)
Removes a typed element.

Parameters:
fieldName - is the name of the field to be removed
Returns:
the removed element or null if the field has not been found.

createNameDef

public NameDef createNameDef()
Creates a new NameDef object for the current Class object. Here we can define if the namedef is defined outside jorm or not. In the case where the namedef is already defined for the current class, the old one is used and returned. associated.

Returns:
a new object used to describe the PName projection for the current Class

createHiddenField

public ScalarField createHiddenField(java.lang.String fieldname,
                                     PType type,
                                     int size,
                                     int scale)
Creates an hiddenfield for the current Class object. An hidden field is used to map the pname of the class or the pname of a ref field. An hidden field is a scalarfield.

Parameters:
fieldname - the name of the hiddenfield
type - the ptype of the hiddenfield
size - is the
Returns:
a new scalarfield object used to describe the hiddenfield

getHiddenFields

public java.util.Collection getHiddenFields()
Returns:
a collection of hidden field of the class WITHOUT inherited fields.

getAllHiddenFields

public java.util.Collection getAllHiddenFields()
Returns:
a collection of hidden field of the class including inherited fields.

getHiddenField

public ScalarField getHiddenField(java.lang.String fieldname)
Retrieve the hiddenfield identified by its name in the current class.

Parameters:
fieldname - the name of the hiddenfield.
Returns:
the scalarfield object describing the hiddenfield or null if the field does not exist in the class.

getNameDef

public NameDef getNameDef(java.lang.String projectName)
Returns a NameDef object from a given mapperName and mappingName. If the namedef does not exist, null is returned.

Parameters:
projectName - the name of the class project
Returns:
an existing namedef object if exists, either null

getNameDefs

public java.util.Collection getNameDefs()
Returns:
a collection of NameDef object

getInheritanceFilter

public Expression getInheritanceFilter(NameDef nd)
                                throws ExpressionException
Returns:
the filter expression (Medor expression) permitting to known if instance of the parent class is in fact an instance of the current persistent class. The filter uses the field name (composite field in case of a composite or the field class name). If the current class has no parent, then this method return null;
Throws:
ExpressionException

getInheritanceNamingKey

public java.lang.Object getInheritanceNamingKey(NameDef nd)
Returns:
the key matching to the current class. This value is the result of the inheritance filter evaluation.

setInheritanceNamingKey

public void setInheritanceNamingKey(NameDef nd,
                                    java.lang.Object key)

setInheritanceFilter

public void setInheritanceFilter(NameDef nd,
                                 Expression filter)
Parameters:
filter - is the filter expression (Medor expression) permitting to known if instance of the parent class is in fact an instance of the current persistent class. The filter uses the field name (composite field in case of a composite or the field class name).

createPrimitiveElement

public PrimitiveElement createPrimitiveElement(java.lang.String fieldName,
                                               PType type,
                                               int size,
                                               int scale)
Allows to obtain a new PrimitiveElement from a class field name an its type. A PrimitiveElement is a Class field. If the class field already exists, it is returned.

Parameters:
fieldName - the name of the primitive field
type - the PType of the primitive field
Returns:
a new PrimitiveElement object, or the existing one if already defined

setConstantValue

public void setConstantValue(java.lang.String fieldName,
                             java.lang.String cv)
Defines the value of a constant PrimitiveElement, defined either in the current class or in one of its ancestors.

The constant value is represented by a String.

Parameters:
fieldName - the existing PrimitiveElement
cv - the constant value

getConstantValue

public java.lang.String getConstantValue(java.lang.String fieldName)
Obtains the value of a constant PrimitiveElement, defined either in the current class or in one of its ancestors.

The constant value is represented by a String.

Parameters:
fieldName - the existing PrimitiveElement
Returns:
the constant value as a String

createClassRef

public ClassRef createClassRef(java.lang.String fieldName,
                               Class class_)
Allows to obtain a new ClassRef from a field name an its class. A ClassRef object is a field which is represented by a reference to a Class. If the field already exists, it is returned.

Parameters:
fieldName - the name of the field
class_ - the class meta-object which represents the reference of the field
Returns:
a new ClassRef object, or the existing one if already defined

createGenClassRef

public GenClassRef createGenClassRef(java.lang.String fieldName,
                                     java.lang.String genName)
Allows to obtain a new GenClassRef from a field name an its generic class. A GenClassRef object is a field which is represented by a reference to a generic class. If the field already exists, it is returned.

Parameters:
fieldName - the name of the field
genName - the GenClass object which represents the reference of the field
Returns:
a new GenClassRef object, or the existing one if already defined

getFields

public java.util.Collection getFields()
Returns an iterator on existing class fields. If no field is defined, an empty iterator is returned. This iterator contains PrimitiveElements, ClassRef and GenClassRef objects. The top level object is TypedElement.

Returns:
an iterator on fields, or null if there is no defined field

getAllFields

public java.util.Collection getAllFields()
Returns an iterator on existing class fields + fields from super classes. This iterator contains PrimitiveElement, ClassRef and GenClassRef objects.

Returns:
an iterator on all defined fields, plus fields from super

getSubClasses

public java.util.Collection getSubClasses()
Allows us to obtain all classes derived from the current class object. This collection contains Class objects. In the case where there is no derived class, an empty collection is returned.

Returns:
a collection on derived classes (Class objets). If no object exists, an empty collection is returned.

getSuperClasses

public java.util.Collection getSuperClasses()
Retrieves the collection of super classes

Returns:
a collection of Class meta objects.

getSuperClass

public Class getSuperClass(java.lang.String fqcn)
Retrieves a super class whith its name.

Parameters:
fqcn - is the fully qualified class name of the super class
Returns:
a Class meta object instance if the specified class name is a super class of the current class. A null value if the specified class name is not a super class of the current class.

addSuperClass

public void addSuperClass(Class class_)
Adds a new inherited class to the list of the inherited classes for the current class object. If the class already exists, nothing is done.

Parameters:
class_ - the inherited class to add to inherited classes list

addSubClass

public void addSubClass(Class class_)
Adds a new class to the list of the derived classes for the current class object. If the class already exists, nothing is done.

Parameters:
class_ - the inherited class to add to inherited classes list

getInheritedClassNumber

public int getInheritedClassNumber()
Returns the number of inherited classes for the current Class object.

Returns:
the number of inherited classes

getPType

public PType getPType()
Returns:
the PType of the persistent class

getFieldRefNumber

public int getFieldRefNumber()
Returns the number of fields which are references to classes.

Returns:
the number of fieldRef

getClassProject

public ClassProject getClassProject(java.lang.String projectName)
Returns a ClassProject object.

Parameters:
projectName - a project name.
Returns:
a ClassProject object.

getClassMapping

public ClassMapping getClassMapping(java.lang.String projectName,
                                    java.lang.String mapperName)
Returns a ClassMapping object.

Parameters:
projectName - a project name, mappername a mapper name.
Returns:
a ClassMapping object.

getClassProjects

public java.util.Collection getClassProjects()
Returns a collection of ClassProject objects.

Returns:
a collection.

addClassProject

public void addClassProject(java.lang.String projectName,
                            ClassProject classProject)
Adds a ClassProject object.

Parameters:
projectName - a project name, classProject a ClassProject object.

createClassProject

public ClassProject createClassProject(java.lang.String projectName)
Creates a new ClassProject object.

Parameters:
projectName - the name of the project.
Returns:
a new ClassProject object, or an existing one.

removeClassProject

public ClassProject removeClassProject(java.lang.String projectname)
Removes a ClassProject instance.

Parameters:
projectname - is the name of removed ClassProject
Returns:
The removed ClassProject

getAncestors

public java.util.List getAncestors()
Returns only the top ancestors.


getAllAncestors

public java.util.List getAllAncestors()
Return all the ancestors in the inheritance graph.


isPolymorphic

public boolean isPolymorphic()
Returns true if the class is polymorphic, i.e. it has subclasses or superclasses

Returns:
true if the class is polymorphic

generateKFPNC

public boolean generateKFPNC()
                      throws ExpressionException
Return true if the KFPNC has to be generated. Else, return false.

Throws:
ExpressionException

detectFilterElementNotInPK

public boolean detectFilterElementNotInPK(Expression exp,
                                          NameDef nd)
                                   throws ExpressionException
Return true if one element of the expression exp is not part of the namedef. Else, return false.

Throws:
ExpressionException