org.kuali.rice.krad.service
Interface PersistenceStructureService

All Known Implementing Classes:
PersistenceStructureServiceImpl, PersistenceStructureServiceJpaImpl, PersistenceStructureServiceOjbImpl

public interface PersistenceStructureService

This interface defines methods that a Persistence Service must provide. PersistenceMetadataService provides access to persistence-layer information about persistable classes.


Method Summary
 Object clearPrimaryKeyFields(Object persistableObject)
           
 Class<? extends PersistableBusinessObjectExtension> getBusinessObjectAttributeClass(Class<? extends PersistableBusinessObject> clazz, String attributeName)
          This method is a PersistableBusinessObject specifific utility method.
 String getForeignKeyFieldName(Class persistableObjectClass, String attributeName, String pkName)
           
 ForeignKeyFieldsPopulationState getForeignKeyFieldsPopulationState(PersistableBusinessObject bo, String referenceName)
          This method checks the foreign keys for a reference on a given BO, and tests that all fk fields are populated if any are populated.
 Map getForeignKeysForReference(Class clazz, String attributeName)
          This method will return a Map of all the foreign key fields and the corresponding primary key fields for a given reference.
 Map<String,String> getInverseForeignKeysForCollection(Class boClass, String collectionName)
          Returns a listing of the FK field mappings between a BO and the elements in a collection.
 Map getNestedForeignKeyMap(Class persistableObjectClass)
          Builds a map of reference pk attributes back to the foreign key.
 List getPrimaryKeys(Class clazz)
          This method returns a List of Strings, each containing the field name of one of the primary keys, as defined in the ORM layer.
 Map<String,Class> getReferencesForForeignKey(Class persistableObjectClass, String attributeName)
          Attempts to match the attribute name given for the class as a fk field to a reference class defined in the repository.
 Map<String,DataObjectRelationship> getRelationshipMetadata(Class persistableClass, String attributeName)
           
 Map<String,DataObjectRelationship> getRelationshipMetadata(Class persistableClass, String attributeName, String attributePrefix)
           
 String getTableName(Class<? extends PersistableBusinessObject> boClass)
          Returns the name of the table underlying the business object class
 boolean hasCollection(Class boClass, String collectionName)
          Returns whether BOs of the given class have a collection defined within them with the given collection name.
 boolean hasPrimaryKeyFieldValues(Object persistableObject)
           
 boolean hasReference(Class boClass, String referenceName)
          Returns whether there is a reference defined in the persistence layer with the given name.
 boolean isCollectionUpdatable(Class boClass, String collectionName)
           
 boolean isPersistable(Class clazz)
           
 boolean isReferenceUpdatable(Class boClass, String referenceName)
           
 Map<String,Class> listCollectionObjectTypes(Class boClass)
           
 Map<String,Class> listCollectionObjectTypes(PersistableBusinessObject bo)
           
 List listFieldNames(Class clazz)
           
 List listPersistableSubclasses(Class superclazz)
           
 List listPrimaryKeyFieldNames(Class clazz)
           
 Map<String,Class> listReferenceObjectFields(Class boClass)
          This method uses the persistence layer to determine the list of reference objects contained within this parent object.
 Map<String,Class> listReferenceObjectFields(PersistableBusinessObject bo)
          This method uses the persistence layer to determine the list of reference objects contained within this parent object.
 

Method Detail

isPersistable

boolean isPersistable(Class clazz)
Parameters:
clazz -
Returns:
true if the given Class is persistable (is known to OJB)

listPrimaryKeyFieldNames

List listPrimaryKeyFieldNames(Class clazz)
Parameters:
clazz - Class whose primary key field names you want to list
Returns:
a List of field names for the given class which are designated as key fields in the OJB repository file
Throws:
IllegalArgumentException - if the given Class is null
ClassNotPersistableException - if the given object is of a type not described in the OJB repository

listFieldNames

List listFieldNames(Class clazz)
Parameters:
clazz - Class whose field names you want to list
Returns:
a List of field names for the given class in the OJB repository file
Throws:
IllegalArgumentException - if the given Class is null
ClassNotPersistableException - if the given object is of a type not described in the OJB repository

getPrimaryKeys

List getPrimaryKeys(Class clazz)
This method returns a List of Strings, each containing the field name of one of the primary keys, as defined in the ORM layer.

Parameters:
clazz - - Class whose primary key field names are requested
Returns:
A List of Strings, each containing the field name of the primary key
Throws:
IllegalArgumentException - if the given Object is null
ClassNotPersistableException - if the given object is of a type not described in the OJB repository

hasPrimaryKeyFieldValues

boolean hasPrimaryKeyFieldValues(Object persistableObject)
Parameters:
persistableObject -
Returns:
true if all primary key fields of the string have a non-null (and non-empty, for Strings) value
Throws:
IllegalArgumentException - if the given Object is null
ClassNotPersistableException - if the given object is of a type not described in the OJB repository

clearPrimaryKeyFields

Object clearPrimaryKeyFields(Object persistableObject)
Parameters:
persistableObject - object whose primary key fields need to be cleared
Returns:
the object whose primary key fields have just been cleared
Throws:
IllegalArgumentException - if the given Object is null
ClassNotPersistableException - if the given object is of a type not described in the OJB repository

listPersistableSubclasses

List listPersistableSubclasses(Class superclazz)
Parameters:
superclazz - class whose persistable subclasses (or interface whose implementors) will be returned
Returns:
a List of persistable Classes which extend or implement the given Class
Throws:
IllegalArgumentException - if the given class is null

getRelationshipMetadata

Map<String,DataObjectRelationship> getRelationshipMetadata(Class persistableClass,
                                                           String attributeName,
                                                           String attributePrefix)
Parameters:
persistableClass -
attributeName - Name of an attribute used in the relationship
Returns:
BusinessObjectRelationship object containing information about the object type related via the named relationship of the given class, or null if the persistence service can find no object type related via the named relationship
Throws:
IllegalArgumentException - if the given Class is null
IllegalArgumentException - if the given relationshipName is blanks
ClassNotPersistableException - if the given Class is a type not described in the OJB repository

getRelationshipMetadata

Map<String,DataObjectRelationship> getRelationshipMetadata(Class persistableClass,
                                                           String attributeName)

getForeignKeyFieldName

String getForeignKeyFieldName(Class persistableObjectClass,
                              String attributeName,
                              String pkName)

getReferencesForForeignKey

Map<String,Class> getReferencesForForeignKey(Class persistableObjectClass,
                                             String attributeName)
Attempts to match the attribute name given for the class as a fk field to a reference class defined in the repository. Since a fk field can have references to many tables, this returns a list of all found.

Parameters:
persistableObjectClass -
attributeName -
Returns:
Map with attribue name as key of map and class as value

getForeignKeysForReference

Map getForeignKeysForReference(Class clazz,
                               String attributeName)
This method will return a Map of all the foreign key fields and the corresponding primary key fields for a given reference. The Map structure is: Key(String fkFieldName) => Value(String pkFieldName)

Parameters:
clazz - - Class that contains the named reference
attributeName - - Name of the member that is the reference you want foreign keys for
Returns:
returns a Map populated as described above, with one entry per foreign key field

getBusinessObjectAttributeClass

Class<? extends PersistableBusinessObjectExtension> getBusinessObjectAttributeClass(Class<? extends PersistableBusinessObject> clazz,
                                                                                    String attributeName)
This method is a PersistableBusinessObject specifific utility method. If the Class clazz passed in is a descendent of PersistableBusinessObject, and if the attributeName specified exists on the object, then the class of this attribute named will be returned.

Parameters:
clazz - - class to be examined for the attribute's class
attributeName - - name of the class' attribute to be examined
Returns:
the class of the named attribute, if no exceptions occur

getNestedForeignKeyMap

Map getNestedForeignKeyMap(Class persistableObjectClass)
Builds a map of reference pk attributes back to the foreign key.

Parameters:
persistableObjectClass -
Returns:

getForeignKeyFieldsPopulationState

ForeignKeyFieldsPopulationState getForeignKeyFieldsPopulationState(PersistableBusinessObject bo,
                                                                   String referenceName)
This method checks the foreign keys for a reference on a given BO, and tests that all fk fields are populated if any are populated. In other words, for a given reference, it finds all the attributes of the BO that make up the foreign keys, and checks to see if they all have values. It also keeps a list of all the fieldNames that do not have values.

Parameters:
bo - - A populated BusinessObject descendent. Must contain an attributed named referenceName.
referenceName - - The name of the field that is a reference we are analyzing.
Returns:
A populated ForeignKeyFieldsPopulation object which represents the state of population for the foreign key fields.

listReferenceObjectFields

Map<String,Class> listReferenceObjectFields(Class boClass)
This method uses the persistence layer to determine the list of reference objects contained within this parent object. For example, an Account object contains sub-objects such as Chart, as well as the key that connects the two, String chartOfAccountsCode. The return structure is: Map. As an example, an Account object passed into this would return: 0:['chartOfAccounts', org.kuali.module.chart.bo.Chart] 1:['organization', org.kuali.module.chart.bo.Org] etc.

Parameters:
boClass - Class that would like to be analyzed for reference names
Returns:
Map containing the reference name for the key as a string, and the class of the reference as the value. If the object contains no references, then this Map will be empty.

listReferenceObjectFields

Map<String,Class> listReferenceObjectFields(PersistableBusinessObject bo)
This method uses the persistence layer to determine the list of reference objects contained within this parent object. For example, an Account object contains sub-objects such as Chart, as well as the key that connects the two, String chartOfAccountsCode. The return structure is: Map. As an example, an Account object passed into this would return: 0:['chartOfAccounts', org.kuali.module.chart.bo.Chart] 1:['organization', org.kuali.module.chart.bo.Org] etc.

Parameters:
bo - BusinessObject (or subclass) instance that would like to be analyzed for reference names
Returns:
Map containing the reference name for the key as a string, and the class of the reference as the value. If the object contains no references, then this Map will be empty.

listCollectionObjectTypes

Map<String,Class> listCollectionObjectTypes(Class boClass)

listCollectionObjectTypes

Map<String,Class> listCollectionObjectTypes(PersistableBusinessObject bo)

hasReference

boolean hasReference(Class boClass,
                     String referenceName)
Returns whether there is a reference defined in the persistence layer with the given name. Depending on the type of underlying persistence mechanism, this method may or may not return true when the referenceName really refers to a collection type. To determine whether a reference is a collection, use the hasCollection method instead. In OJB, this method will return false for collection references.

Parameters:
boClass -
referenceName -
Returns:

hasCollection

boolean hasCollection(Class boClass,
                      String collectionName)
Returns whether BOs of the given class have a collection defined within them with the given collection name.

Parameters:
boClass -
collectionName -
Returns:

isReferenceUpdatable

boolean isReferenceUpdatable(Class boClass,
                             String referenceName)

isCollectionUpdatable

boolean isCollectionUpdatable(Class boClass,
                              String collectionName)

getInverseForeignKeysForCollection

Map<String,String> getInverseForeignKeysForCollection(Class boClass,
                                                      String collectionName)
Returns a listing of the FK field mappings between a BO and the elements in a collection. Since this is in effect a 1:n relationship, only the complete primary key set of the parent BO will be returned. for example, assume Account BO has an "acctNbrForAcct" PK, and it has a list of subAccounts, each of which has a ("acctNbrForSubAcct", "subAcctNbr") PK pair. the Account PK will be mapped to some of the PK fields of the element list. When called on the Account BO class with the "subAccounts" collection name, his method should return a map with a mapping of "acctNbrForAcct" (key) => "acctNbrForSubAcct"

Parameters:
boClass -
collectionName -
Returns:

getTableName

String getTableName(Class<? extends PersistableBusinessObject> boClass)
Returns the name of the table underlying the business object class

Parameters:
boClass -
Returns:


Copyright © 2005-2013 The Kuali Foundation. All Rights Reserved.