org.kuali.rice.kns.service
Interface DataObjectMetaDataService

All Known Subinterfaces:
BusinessObjectMetaDataService
All Known Implementing Classes:
BusinessObjectMetaDataServiceImpl, DataObjectMetaDataServiceImpl

public interface DataObjectMetaDataService

Provides metadata such as relationships and key fields for data objects

Author:
Kuali Rice Team (rice.collab@kuali.org)

Method Summary
 boolean equalsByPrimaryKeys(Object do1, Object do2)
          Compares two dataObject instances for equality of type and key values using toString() of each value for comparison purposes.
 BusinessObjectRelationship getDataObjectRelationship(Object dataObject, Class<?> dataObjectClass, String attributeName, String attributePrefix, boolean keysOnly, boolean supportsLookup, boolean supportInquiry)
          Attempts to find a relationship for the given attribute within the given data object
 RelationshipDefinition getDictionaryRelationship(Class<?> dataObjectClass, String attributeName)
          This method fetches the RelationshipDefinition using the parameters.
 Map<String,?> getPrimaryKeyFieldValues(Object dataObject)
           
 Map<String,?> getPrimaryKeyFieldValues(Object dataObject, boolean sortFieldNames)
           
 String getTitleAttribute(Class<?> dataObjectClass)
          Returns the attribute to be associated with for object level markings.
 List<String> listPrimaryKeyFieldNames(Class<?> clazz)
          Checks the DataDictionary and OJB Repository File to determine the primary fields names for a given class.
 

Method Detail

listPrimaryKeyFieldNames

List<String> listPrimaryKeyFieldNames(Class<?> clazz)
Checks the DataDictionary and OJB Repository File to determine the primary fields names for a given class.

Parameters:
clazz - The Class to check for primary keys
Returns:
a list of the primary key field names or an empty list if none are found

getPrimaryKeyFieldValues

Map<String,?> getPrimaryKeyFieldValues(Object dataObject)
Parameters:
DataObject - object whose primary key field name,value pairs you want
Returns:
a Map containing the names and values of fields for the given class which are designated as key fields in the OJB repository file or DataDictionary
Throws:
IllegalArgumentException - if the given Object is null

getPrimaryKeyFieldValues

Map<String,?> getPrimaryKeyFieldValues(Object dataObject,
                                       boolean sortFieldNames)
Parameters:
persistableObject - object whose primary key field name,value pairs you want
sortFieldNames - if true, the returned Map will iterate through its entries sorted by fieldName
Returns:
a Map containing the names and values of fields for the given class which are designated as key fields in the OJB repository file or DataDictionary
Throws:
IllegalArgumentException - if the given Object is null

equalsByPrimaryKeys

boolean equalsByPrimaryKeys(Object do1,
                            Object do2)
Compares two dataObject instances for equality of type and key values using toString() of each value for comparison purposes.

Parameters:
do1 -
do2 -
Returns:
boolean indicating whether the two objects are equal.

getDataObjectRelationship

BusinessObjectRelationship getDataObjectRelationship(Object dataObject,
                                                     Class<?> dataObjectClass,
                                                     String attributeName,
                                                     String attributePrefix,
                                                     boolean keysOnly,
                                                     boolean supportsLookup,
                                                     boolean supportInquiry)
Attempts to find a relationship for the given attribute within the given data object

First the data dictionary is queried to find any relationship definitions setup that include the attribute, if found the BusinessObjectRetationship is build from that. If not and the data object class is persistent, relationships are retrieved from the persistence service. Nested attributes are handled in addition to external business objects. If multiple relationships are found, the one that contains the least amount of joining keys is returned

Parameters:
dataObject - - data object instance that contains the attribute
dataObjectClass - - class for the data object that contains the attribute
attributeName - - property name for the attribute
attributePrefix - - property prefix for the attribute
keysOnly - - indicates whether only primary key fields should be returned in the relationship
supportsLookup - - indicates whether the relationship should support lookup
supportsInquiry - - indicates whether the relationship should support inquiry
Returns:
BusinessObjectRelationship for the attribute, or null if not found

getDictionaryRelationship

RelationshipDefinition getDictionaryRelationship(Class<?> dataObjectClass,
                                                 String attributeName)
This method fetches the RelationshipDefinition using the parameters.

Parameters:
dataObjectClass - - data object class that contains the attribute
attributeName - - property name for the attribute
Returns:
RelationshipDefinition for the attribute, or null if not found

getTitleAttribute

String getTitleAttribute(Class<?> dataObjectClass)
Returns the attribute to be associated with for object level markings. This would be the field chosen for inquiry links etc.

Parameters:
dataObjectClass - - data object class to obtain title attribute of
Returns:
property name of title attribute or null if data object entry not found
Throws:
IllegalArgumentException - if the given Class is null


Copyright © 2004-2011 The Kuali Foundation. All Rights Reserved.