public class DataDictionaryServiceImpl extends Object implements DataDictionaryService
| Constructor and Description |
|---|
DataDictionaryServiceImpl()
Default constructor.
|
DataDictionaryServiceImpl(DataDictionary dataDictionary) |
| Modifier and Type | Method and Description |
|---|---|
void |
addDataDictionaryLocation(String location) |
void |
addDataDictionaryLocations(List<String> locations) |
boolean |
containsDictionaryObject(String id)
Indicates whether the data dictionary contains a bean with the given id
|
Set<InactivationBlockingMetadata> |
getAllInactivationBlockingDefinitions(Class inactivationBlockedBusinessObjectClass)
Returns all of the inactivation blocks registered for a particular business object
|
ControlDefinition |
getAttributeControlDefinition(Class dataObjectClass,
String attributeName)
the html control type used to render the field
|
ControlDefinition |
getAttributeControlDefinition(String entryName,
String attributeName)
the html control type used to render the field
|
AttributeDefinition |
getAttributeDefinition(String entryName,
String attributeName)
AttributeDefinition associated with the given attributeName within the given entry
|
String |
getAttributeDescription(Class dataObjectClass,
String attributeName)
detailed help text for attribute
|
String |
getAttributeDescription(String entryName,
String attributeName)
detailed help text for attribute
|
String |
getAttributeErrorLabel(Class dataObjectClass,
String attributeName)
the "label (short label)" used for displaying error messages
|
String |
getAttributeErrorLabel(String entryName,
String attributeName)
the "label (short label)" used for displaying error messages
|
String |
getAttributeExclusiveMin(String entryName,
String attributeName) |
Boolean |
getAttributeForceUppercase(Class dataObjectClass,
String attributeName)
indicates whether or not to force input text into uppercase
|
Boolean |
getAttributeForceUppercase(String entryName,
String attributeName)
indicates whether or not to force input text into uppercase
|
Class<? extends Formatter> |
getAttributeFormatter(Class dataObjectClass,
String attributeName)
the formatter class used to format the attribute value
|
Class<? extends Formatter> |
getAttributeFormatter(String entryName,
String attributeName)
the formatter class used to format the attribute value
|
String |
getAttributeInclusiveMax(String entryName,
String attributeName) |
String |
getAttributeLabel(Class dataObjectClass,
String attributeName)
the label to be used for displaying the attribute.
|
String |
getAttributeLabel(String entryName,
String attributeName)
the label to be used for displaying the attribute.
|
Integer |
getAttributeMaxLength(Class dataObjectClass,
String attributeName)
the max length defined for the given attribute name.
|
Integer |
getAttributeMaxLength(String entryName,
String attributeName)
the max length defined for the given attribute name.
|
Integer |
getAttributeMinLength(String entryName,
String attributeName)
the min length defined for the given attribute name.
|
AttributeSecurity |
getAttributeSecurity(String entryName,
String attributeName)
the AttributeSecurity object defined for the attribute's data value
|
String |
getAttributeShortLabel(Class dataObjectClass,
String attributeName)
the short label to be used for displaying the attribute.
|
String |
getAttributeShortLabel(String entryName,
String attributeName)
the short label to be used for displaying the attribute.
|
Integer |
getAttributeSize(Class dataObjectClass,
String attributeName)
the display size of the field if text control
|
Integer |
getAttributeSize(String entryName,
String attributeName)
the display size of the field if text control
|
String |
getAttributeSummary(Class dataObjectClass,
String attributeName)
short help text for attribute
|
String |
getAttributeSummary(String entryName,
String attributeName)
short help text for attribute
|
String |
getAttributeValidatingErrorMessageKey(String entryName,
String attributeName) |
String[] |
getAttributeValidatingErrorMessageParameters(String entryName,
String attributeName) |
Pattern |
getAttributeValidatingExpression(Class dataObjectClass,
String attributeName)
the regular expression defined to validate the given attribute name.
|
Pattern |
getAttributeValidatingExpression(String entryName,
String attributeName)
the regular expression defined to validate the given attribute name.
|
Class |
getAttributeValuesFinderClass(Class dataObjectClass,
String attributeName)
the Class that returns a values list for this attribute
|
Class<? extends KeyValuesFinder> |
getAttributeValuesFinderClass(String entryName,
String attributeName)
the Class that returns a values list for this attribute
|
String |
getCollectionDescription(Class dataObjectClass,
String collectionName)
detailed help text for collection
|
String |
getCollectionDescription(String entryName,
String collectionName)
detailed help text for collection
|
String |
getCollectionElementLabel(String entryName,
String collectionName,
Class dataObjectClass)
the element label to be used for displaying the collection.
|
String |
getCollectionLabel(Class dataObjectClass,
String collectionName)
the label to be used for displaying the collection.
|
String |
getCollectionLabel(String entryName,
String collectionName)
the label to be used for displaying the collection.
|
String |
getCollectionShortLabel(Class dataObjectClass,
String collectionName)
the short label to be used for displaying the collection.
|
String |
getCollectionShortLabel(String entryName,
String collectionName)
the short label to be used for displaying the collection.
|
String |
getCollectionSummary(Class dataObjectClass,
String collectionName)
short help text for collection
|
String |
getCollectionSummary(String entryName,
String collectionName)
short help text for collection
|
DataDictionary |
getDataDictionary() |
Object |
getDictionaryObject(String id)
Returns an object from the dictionary by its spring bean name or id
|
Class<? extends Document> |
getDocumentClassByTypeName(String documentTypeName)
Returns the document class declared in the dd for the given document type
name.
|
String |
getDocumentLabelByClass(Class documentOrBusinessObjectClass)
This method returns the user friendly label based on the document or business object class
|
String |
getDocumentLabelByTypeName(String documentTypeName)
This method returns the user friendly label based on the workflow doc type name
|
String |
getDocumentTypeNameByClass(Class documentClass)
Returns the document type name declared in the dd for the given document
class.
|
DocumentTypeService |
getDocumentTypeService() |
List<String> |
getGroupByAttributesForEffectiveDating(Class dataObjectClass)
Returns the list of attributes that should be used for grouping when determining the current
status of a business object that implements InactivateableFromTo
|
ConfigurationService |
getKualiConfigurationService() |
KualiModuleService |
getKualiModuleService() |
Map<String,String> |
getRelationshipAttributeMap(String entryName,
String relationshipName)
returns a Map that specifies the attributes of the relationship
|
List<String> |
getRelationshipEntriesForSourceAttribute(String entryName,
String sourceAttributeName)
returns a list of names for all entries whose source parameter matches the parameter
|
List<String> |
getRelationshipEntriesForTargetAttribute(String entryName,
String targetAttributeName)
returns a list of names for all entries whose source parameter matches the parameter
|
List<String> |
getRelationshipNames(String entryName)
Returns all of the relationships defined for a BO in the DD
|
List<String> |
getRelationshipSourceAttributes(String entryName,
String relationshipName) |
Class<? extends BusinessObject> |
getRelationshipSourceClass(String entryName,
String relationshipName) |
List<String> |
getRelationshipTargetAttributes(String entryName,
String relationshipName) |
Class<? extends BusinessObject> |
getRelationshipTargetClass(String entryName,
String relationshipName) |
Class<? extends Document> |
getValidDocumentClassByTypeName(String documentTypeName)
Returns the document class declared in the dd for the given document type
name.
|
String |
getValidDocumentTypeNameByClass(Class documentClass)
Returns the document type name declared in the dd for the given document
class.
|
View |
getViewById(String viewId)
Returns the View entry identified by the given id
|
View |
getViewByTypeIndex(UifConstants.ViewType viewTypeName,
Map<String,String> indexKey)
Returns View instance identified by the view type name and index
|
boolean |
hasRelationship(String entryName,
String relationshipName)
Determines whether there is a relationship defined for the given entry with the given name
|
Boolean |
isAttributeDefined(Class dataObjectClass,
String attributeName)
indicates whether or not the named attribute is defined in the business object xml
|
Boolean |
isAttributeDefined(String entryName,
String attributeName)
indicates whether or not the named attribute is defined in the business object xml
|
Boolean |
isAttributeRequired(Class dataObjectClass,
String attributeName)
indicates whether or not the named attribute is required
|
Boolean |
isAttributeRequired(String entryName,
String attributeName)
indicates whether or not the named attribute is required
|
void |
setBaselinePackages(List baselinePackages)
Sequentially adds each package named (as a String) in the given List as a source of unique entries to the DataDictionary
being constructed.
|
void |
setKualiConfigurationService(ConfigurationService kualiConfigurationService) |
void |
setKualiModuleService(KualiModuleService kualiModuleService) |
public DataDictionaryServiceImpl()
public DataDictionaryServiceImpl(DataDictionary dataDictionary)
public void setBaselinePackages(List baselinePackages) throws IOException
DataDictionaryServicesetBaselinePackages in interface DataDictionaryServiceIOExceptionorg.kuali.rice.krad.service.DataDictionaryService#setBaselinePackages(java.lang.String)public DataDictionary getDataDictionary()
getDataDictionary in interface DataDictionaryServiceDataDictionaryService.getDataDictionary()public ControlDefinition getAttributeControlDefinition(String entryName, String attributeName)
DataDictionaryServicegetAttributeControlDefinition in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getAttributeControlDefinition(java.lang.String)public Integer getAttributeSize(String entryName, String attributeName)
DataDictionaryServicegetAttributeSize in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getAttributeSize(java.lang.String)public Integer getAttributeMinLength(String entryName, String attributeName)
DataDictionaryServicegetAttributeMinLength in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getAttributeMinLength(java.lang.String)public Integer getAttributeMaxLength(String entryName, String attributeName)
DataDictionaryServicegetAttributeMaxLength in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getAttributeMaxLength(java.lang.String)public String getAttributeExclusiveMin(String entryName, String attributeName)
getAttributeExclusiveMin in interface DataDictionaryServicenull if none.DataDictionaryService.getAttributeExclusiveMin(java.lang.String, java.lang.String)public String getAttributeInclusiveMax(String entryName, String attributeName)
getAttributeInclusiveMax in interface DataDictionaryServicenull if none.DataDictionaryService.getAttributeInclusiveMax(java.lang.String, java.lang.String)public Pattern getAttributeValidatingExpression(String entryName, String attributeName)
DataDictionaryServicegetAttributeValidatingExpression in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getAttributeValidatingExpression(java.lang.String)public String getAttributeLabel(String entryName, String attributeName)
DataDictionaryServicegetAttributeLabel in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getAttributeLabel(java.lang.String)public String getAttributeShortLabel(String entryName, String attributeName)
DataDictionaryServicegetAttributeShortLabel in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getAttributeShortLabel(java.lang.String)public String getAttributeErrorLabel(String entryName, String attributeName)
DataDictionaryServicegetAttributeErrorLabel in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getAttributeErrorLabel(java.lang.String)public Class<? extends Formatter> getAttributeFormatter(String entryName, String attributeName)
DataDictionaryServicegetAttributeFormatter in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getAttributeFormatter(java.lang.String)public Boolean getAttributeForceUppercase(String entryName, String attributeName) throws UnknownBusinessClassAttributeException
DataDictionaryServicegetAttributeForceUppercase in interface DataDictionaryServiceUnknownBusinessClassAttributeExceptionorg.kuali.rice.krad.service.DataDictionaryService#getAttributeForceUppercase(java.lang.String)public AttributeSecurity getAttributeSecurity(String entryName, String attributeName)
DataDictionaryServicegetAttributeSecurity in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getAttributeDisplayMask(java.lang.String, java.lang.String)public String getAttributeSummary(String entryName, String attributeName)
DataDictionaryServicegetAttributeSummary in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getAttributeSummary(java.lang.String)public String getAttributeDescription(String entryName, String attributeName)
DataDictionaryServicegetAttributeDescription in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getAttributeDescription(java.lang.String)public Boolean isAttributeRequired(String entryName, String attributeName)
DataDictionaryServiceisAttributeRequired in interface DataDictionaryServiceDataDictionaryService.isAttributeRequired(java.lang.Class, java.lang.String)public Boolean isAttributeDefined(String entryName, String attributeName)
DataDictionaryServiceisAttributeDefined in interface DataDictionaryServiceDataDictionaryService.isAttributeDefined(java.lang.Class, java.lang.String)public Class<? extends KeyValuesFinder> getAttributeValuesFinderClass(String entryName, String attributeName)
DataDictionaryServicegetAttributeValuesFinderClass in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getAttributeValuesScopeId(java.lang.Class,
java.lang.String)public String getCollectionLabel(String entryName, String collectionName)
DataDictionaryServicegetCollectionLabel in interface DataDictionaryServiceDataDictionaryService.getCollectionLabel(java.lang.Class, java.lang.String)public String getCollectionShortLabel(String entryName, String collectionName)
DataDictionaryServicegetCollectionShortLabel in interface DataDictionaryServiceDataDictionaryService.getCollectionShortLabel(java.lang.Class, java.lang.String)public String getCollectionElementLabel(String entryName, String collectionName, Class dataObjectClass)
DataDictionaryServicegetCollectionElementLabel in interface DataDictionaryServiceorg.kuali.rice.krad.service.DataDictionaryService#getCollectionElementLabel(java.lang.Class,
java.lang.String)public String getCollectionSummary(String entryName, String collectionName)
DataDictionaryServicegetCollectionSummary in interface DataDictionaryServiceDataDictionaryService.getCollectionSummary(java.lang.Class, java.lang.String)public String getCollectionDescription(String entryName, String collectionName)
DataDictionaryServicegetCollectionDescription in interface DataDictionaryServiceDataDictionaryService.getCollectionDescription(java.lang.Class,
java.lang.String)public Class<? extends BusinessObject> getRelationshipSourceClass(String entryName, String relationshipName)
getRelationshipSourceClass in interface DataDictionaryServicepublic Class<? extends BusinessObject> getRelationshipTargetClass(String entryName, String relationshipName)
getRelationshipTargetClass in interface DataDictionaryServicepublic List<String> getRelationshipSourceAttributes(String entryName, String relationshipName)
getRelationshipSourceAttributes in interface DataDictionaryServicepublic List<String> getRelationshipTargetAttributes(String entryName, String relationshipName)
getRelationshipTargetAttributes in interface DataDictionaryServicepublic List<String> getRelationshipEntriesForSourceAttribute(String entryName, String sourceAttributeName)
DataDictionaryServicegetRelationshipEntriesForSourceAttribute in interface DataDictionaryServiceentryName - Name of the Business Object entrysourceAttributeName - name of the source attributepublic List<String> getRelationshipEntriesForTargetAttribute(String entryName, String targetAttributeName)
DataDictionaryServicegetRelationshipEntriesForTargetAttribute in interface DataDictionaryServiceentryName - Name of the Business Object entrytargetAttributeName - name of the target attributepublic AttributeDefinition getAttributeDefinition(String entryName, String attributeName)
DataDictionaryServicegetAttributeDefinition in interface DataDictionaryServiceobjectClass - attributeName - IllegalArgumentException - if the given Class is null or is not a BusinessObject classpublic Map<String,String> getRelationshipAttributeMap(String entryName, String relationshipName)
DataDictionaryServicegetRelationshipAttributeMap in interface DataDictionaryServiceentryName - - Name of the Business Object entryrelationshipName - - Name of the relationshipDataDictionaryService.getRelationshipAttributeMap(java.lang.String, java.lang.String)public boolean hasRelationship(String entryName, String relationshipName)
DataDictionaryServicehasRelationship in interface DataDictionaryServiceentryName - name of the BO entryrelationshipName - name of the relationship for the entrypublic List<String> getRelationshipNames(String entryName)
DataDictionaryServicegetRelationshipNames in interface DataDictionaryServicepublic ControlDefinition getAttributeControlDefinition(Class dataObjectClass, String attributeName)
DataDictionaryServicegetAttributeControlDefinition in interface DataDictionaryServiceDataDictionaryService.getAttributeControlDefinition(java.lang.String, java.lang.String)public String getAttributeDescription(Class dataObjectClass, String attributeName)
DataDictionaryServicegetAttributeDescription in interface DataDictionaryServiceDataDictionaryService.getAttributeDescription(java.lang.String, java.lang.String)public Boolean getAttributeForceUppercase(Class dataObjectClass, String attributeName)
DataDictionaryServicegetAttributeForceUppercase in interface DataDictionaryServiceDataDictionaryService.getAttributeForceUppercase(java.lang.String, java.lang.String)public Class<? extends Formatter> getAttributeFormatter(Class dataObjectClass, String attributeName)
DataDictionaryServicegetAttributeFormatter in interface DataDictionaryServiceDataDictionaryService.getAttributeFormatter(java.lang.String, java.lang.String)public String getAttributeLabel(Class dataObjectClass, String attributeName)
DataDictionaryServicegetAttributeLabel in interface DataDictionaryServiceDataDictionaryService.getAttributeLabel(java.lang.String, java.lang.String)public Integer getAttributeMaxLength(Class dataObjectClass, String attributeName)
DataDictionaryServicegetAttributeMaxLength in interface DataDictionaryServiceDataDictionaryService.getAttributeMaxLength(java.lang.String, java.lang.String)public String getAttributeShortLabel(Class dataObjectClass, String attributeName)
DataDictionaryServicegetAttributeShortLabel in interface DataDictionaryServiceDataDictionaryService.getAttributeShortLabel(java.lang.String, java.lang.String)public String getAttributeErrorLabel(Class dataObjectClass, String attributeName)
DataDictionaryServicegetAttributeErrorLabel in interface DataDictionaryServiceDataDictionaryService.getAttributeErrorLabel(java.lang.String, java.lang.String)public Integer getAttributeSize(Class dataObjectClass, String attributeName)
DataDictionaryServicegetAttributeSize in interface DataDictionaryServiceDataDictionaryService.getAttributeSize(java.lang.String, java.lang.String)public String getAttributeSummary(Class dataObjectClass, String attributeName)
DataDictionaryServicegetAttributeSummary in interface DataDictionaryServiceDataDictionaryService.getAttributeSummary(java.lang.String, java.lang.String)public Pattern getAttributeValidatingExpression(Class dataObjectClass, String attributeName)
DataDictionaryServicegetAttributeValidatingExpression in interface DataDictionaryServiceDataDictionaryService.getAttributeValidatingExpression(java.lang.String, java.lang.String)public Class getAttributeValuesFinderClass(Class dataObjectClass, String attributeName)
DataDictionaryServicegetAttributeValuesFinderClass in interface DataDictionaryServiceDataDictionaryService.getAttributeValuesFinderClass(java.lang.String, java.lang.String)public String getAttributeValidatingErrorMessageKey(String entryName, String attributeName)
getAttributeValidatingErrorMessageKey in interface DataDictionaryServiceDataDictionaryService.getAttributeValidatingErrorMessageKey(java.lang.String, java.lang.String)public String[] getAttributeValidatingErrorMessageParameters(String entryName, String attributeName)
public String getCollectionDescription(Class dataObjectClass, String collectionName)
DataDictionaryServicegetCollectionDescription in interface DataDictionaryServiceDataDictionaryService.getCollectionDescription(java.lang.String, java.lang.String)public String getCollectionLabel(Class dataObjectClass, String collectionName)
DataDictionaryServicegetCollectionLabel in interface DataDictionaryServiceDataDictionaryService.getCollectionLabel(java.lang.String, java.lang.String)public String getCollectionShortLabel(Class dataObjectClass, String collectionName)
DataDictionaryServicegetCollectionShortLabel in interface DataDictionaryServiceDataDictionaryService.getCollectionShortLabel(java.lang.String, java.lang.String)public String getCollectionSummary(Class dataObjectClass, String collectionName)
DataDictionaryServicegetCollectionSummary in interface DataDictionaryServiceDataDictionaryService.getCollectionSummary(java.lang.String, java.lang.String)public Boolean isAttributeDefined(Class dataObjectClass, String attributeName)
DataDictionaryServiceisAttributeDefined in interface DataDictionaryServiceDataDictionaryService.isAttributeDefined(java.lang.String, java.lang.String)public Boolean isAttributeRequired(Class dataObjectClass, String attributeName)
DataDictionaryServiceisAttributeRequired in interface DataDictionaryServiceDataDictionaryService.isAttributeRequired(java.lang.String, java.lang.String)public String getDocumentLabelByClass(Class documentOrBusinessObjectClass)
DataDictionaryServicegetDocumentLabelByClass in interface DataDictionaryServiceDataDictionaryService.getDocumentLabelByClass(java.lang.Class)public String getDocumentLabelByTypeName(String documentTypeName)
DataDictionaryServicegetDocumentLabelByTypeName in interface DataDictionaryServiceDataDictionaryService.getDocumentLabelByTypeName(java.lang.String)public String getDocumentTypeNameByClass(Class documentClass)
DataDictionaryServicegetDocumentTypeNameByClass in interface DataDictionaryServiceDataDictionaryService.getDocumentTypeNameByClass(java.lang.Class)public String getValidDocumentTypeNameByClass(Class documentClass)
DataDictionaryServiceUnknownDocumentTypeException is thrown.getValidDocumentTypeNameByClass in interface DataDictionaryServiceDataDictionaryService.getValidDocumentTypeNameByClass(java.lang.Class)public Class<? extends Document> getDocumentClassByTypeName(String documentTypeName)
DataDictionaryServicegetDocumentClassByTypeName in interface DataDictionaryServiceDataDictionaryService.getDocumentClassByTypeName(java.lang.String)public Class<? extends Document> getValidDocumentClassByTypeName(String documentTypeName)
DataDictionaryServiceUnknownDocumentTypeException will be thrown.getValidDocumentClassByTypeName in interface DataDictionaryServiceDataDictionaryService.getValidDocumentClassByTypeName(java.lang.String)public View getViewById(String viewId)
DataDictionaryServicegetViewById in interface DataDictionaryServiceviewId - - unique id for viewDataDictionaryService.getViewById(java.lang.String)public Object getDictionaryObject(String id)
DataDictionaryServicegetDictionaryObject in interface DataDictionaryServiceid - - id or name for the bean definitionDataDictionaryService.getDictionaryObject(java.lang.String)public boolean containsDictionaryObject(String id)
DataDictionaryServicecontainsDictionaryObject in interface DataDictionaryServiceid - - id of the bean to check forDataDictionaryService.containsDictionaryObject(java.lang.String)public View getViewByTypeIndex(UifConstants.ViewType viewTypeName, Map<String,String> indexKey)
DataDictionaryServicegetViewByTypeIndex in interface DataDictionaryServiceviewTypeName - - type name for the viewindexKey - - Map of index key parameters, these are the parameters the
indexer used to index the view initially and needs to identify
an unique view instanceorg.kuali.rice.krad.service.DataDictionaryService#getViewByTypeIndex(java.lang.String,
java.util.Map)public void addDataDictionaryLocation(String location) throws IOException
IOExceptionpublic void addDataDictionaryLocations(List<String> locations) throws IOException
addDataDictionaryLocations in interface DataDictionaryServiceIOExceptionpublic List<String> getGroupByAttributesForEffectiveDating(Class dataObjectClass)
DataDictionaryServicegetGroupByAttributesForEffectiveDating in interface DataDictionaryServicedataObjectClass - - business object class to get configured list forDataDictionaryService.getGroupByAttributesForEffectiveDating(java.lang.Class)public Set<InactivationBlockingMetadata> getAllInactivationBlockingDefinitions(Class inactivationBlockedBusinessObjectClass)
getAllInactivationBlockingDefinitions in interface DataDictionaryServiceDataDictionaryService.getAllInactivationBlockingDefinitions(java.lang.Class)public DocumentTypeService getDocumentTypeService()
public void setKualiConfigurationService(ConfigurationService kualiConfigurationService)
public ConfigurationService getKualiConfigurationService()
public KualiModuleService getKualiModuleService()
public void setKualiModuleService(KualiModuleService kualiModuleService)
Copyright © 2005–2016 The Kuali Foundation. All rights reserved.