Package org.kuali.rice.krad.service.impl
Class DictionaryValidationServiceImpl
java.lang.Object
org.kuali.rice.krad.service.impl.DictionaryValidationServiceImpl
- All Implemented Interfaces:
org.kuali.rice.krad.service.DictionaryValidationService
public class DictionaryValidationServiceImpl
extends Object
implements org.kuali.rice.krad.service.DictionaryValidationService
Validates Documents, Business Objects, and Attributes against the data dictionary. Including min, max lengths, and
validating expressions. This is the default, Kuali delivered implementation.
KULRICE - 3355 Modified to prevent infinite looping (to maxDepth) scenario when a parent references a child which
references a parent
- Author:
- Kuali Rice Team (rice.collab@kuali.org)
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected org.kuali.rice.krad.service.DataDictionaryServiceprotected org.kuali.rice.krad.service.DocumentDictionaryServicestatic final StringConstant defines a validation method for an attribute value. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionList<org.kuali.rice.krad.datadictionary.validation.processor.CollectionConstraintProcessor> gets the list ofCollectionConstraintProcessorList<org.kuali.rice.krad.datadictionary.validation.constraint.provider.ConstraintProvider> gets the list ofConstraintProvidersorg.kuali.rice.krad.service.DataDictionaryServiceorg.kuali.rice.krad.data.DataObjectServiceorg.kuali.rice.krad.service.DocumentDictionaryServiceList<org.kuali.rice.krad.datadictionary.validation.processor.ConstraintProcessor> gets the list of elementConstraintProcessororg.kuali.rice.krad.service.LegacyDataAdapterDeprecated.booleanisBusinessObjectValid(Object businessObject) booleanisBusinessObjectValid(Object businessObject, String prefix) creates a new IdentitySet.protected voidprocessCollectionConstraints(org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult result, Collection<?> collection, org.kuali.rice.krad.datadictionary.validation.capability.Constrainable definition, org.kuali.rice.krad.datadictionary.validation.AttributeValueReader attributeValueReader, boolean doOptionalProcessing, String validationState, org.kuali.rice.krad.datadictionary.state.StateMapping stateMapping) process constraints for the provided collection using the collection constraint processorsprotected voidprocessElementConstraints(org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult result, Object value, org.kuali.rice.krad.datadictionary.validation.capability.Constrainable definition, org.kuali.rice.krad.datadictionary.validation.AttributeValueReader attributeValueReader, boolean doOptionalProcessing, String validationState, org.kuali.rice.krad.datadictionary.state.StateMapping stateMapping) process constraints for the provided value using the element constraint processorsvoidsetCollectionConstraintProcessors(List<org.kuali.rice.krad.datadictionary.validation.processor.CollectionConstraintProcessor> collectionConstraintProcessors) sets the list ofCollectionConstraintProcessorvoidsetConstraintProviders(List<org.kuali.rice.krad.datadictionary.validation.constraint.provider.ConstraintProvider> constraintProviders) sets a list ofConstraintProvidervoidsetDataDictionaryService(org.kuali.rice.krad.service.DataDictionaryService dataDictionaryService) voidsetDataObjectService(org.kuali.rice.krad.data.DataObjectService dataObjectService) voidsetDocumentDictionaryService(org.kuali.rice.krad.service.DocumentDictionaryService documentDictionaryService) voidsetElementConstraintProcessors(List<org.kuali.rice.krad.datadictionary.validation.processor.ConstraintProcessor> elementConstraintProcessors) sets the list ofConstraintProcessorvoidsetLegacyDataAdapter(org.kuali.rice.krad.service.LegacyDataAdapter legacyDataAdapter) org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResultorg.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResultorg.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResultvalidate(Object object, String entryName, org.kuali.rice.krad.datadictionary.DataDictionaryEntry entry, boolean doOptionalProcessing) org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResultvalidate(org.kuali.rice.krad.datadictionary.validation.AttributeValueReader valueReader, boolean doOptionalProcessing, String validationState, org.kuali.rice.krad.datadictionary.state.StateMapping stateMapping) Validates using the defined AttributeValueReader (which allows access the object being validated) against the validationState and stateMapping (if specified).org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResultvalidateAgainstNextState(Object object) org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResultvalidateAgainstState(Object object, String validationState) protected voidvalidateAttribute(org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult result, org.kuali.rice.krad.datadictionary.validation.AttributeValueReader attributeValueReader, boolean checkIfRequired, String validationState, org.kuali.rice.krad.datadictionary.state.StateMapping stateMapping) validates an attributeprotected voidvalidateAttribute(org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult result, org.kuali.rice.krad.datadictionary.validation.capability.Constrainable definition, org.kuali.rice.krad.datadictionary.validation.AttributeValueReader attributeValueReader, boolean checkIfRequired, String validationState, org.kuali.rice.krad.datadictionary.state.StateMapping stateMapping) Validates the attribute specified by definitionvoidvalidateBusinessObject(Object businessObject) voidvalidateBusinessObject(Object businessObject, boolean validateRequired) protected voidvalidateBusinessObjectsFromDescriptors(Object object, PropertyDescriptor[] propertyDescriptors, int depth) iterates through the property descriptors looking for business objects or lists of business objects. calls validate method for each bo foundvoidvalidateBusinessObjectsRecursively(Object businessObject, int depth) booleanvalidateDefaultExistenceChecks(Object dataObject) booleanvalidateDefaultExistenceChecksForNewCollectionItem(Object dataObject, Object newCollectionItem, String collectionName) booleanvalidateDefaultExistenceChecksForNewCollectionItem(org.kuali.rice.krad.document.TransactionalDocument document, Object newCollectionItem, String collectionName) booleanvalidateDefaultExistenceChecksForTransDoc(org.kuali.rice.krad.document.TransactionalDocument document) voidvalidateDocument(org.kuali.rice.krad.document.Document document) voidvalidateDocumentAndUpdatableReferencesRecursively(org.kuali.rice.krad.document.Document document, int maxDepth, boolean validateRequired) voidvalidateDocumentAndUpdatableReferencesRecursively(org.kuali.rice.krad.document.Document document, int maxDepth, boolean validateRequired, boolean chompLastLetterSFromCollectionName) voidvalidateDocumentAttribute(org.kuali.rice.krad.document.Document document, String attributeName, String errorPrefix) protected voidvalidateObject(org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult result, org.kuali.rice.krad.datadictionary.validation.AttributeValueReader attributeValueReader, boolean doOptionalProcessing, boolean processAttributes, String validationState, org.kuali.rice.krad.datadictionary.state.StateMapping stateMapping) validates an object and its attributes recursivelyvoidvalidatePrimitiveFromDescriptor(String entryName, Object object, PropertyDescriptor propertyDescriptor, String errorPrefix, boolean validateRequired) Deprecated.booleanvalidateReferenceExists(Object dataObject, String referenceName) booleanvalidateReferenceExists(Object dataObject, org.kuali.rice.krad.datadictionary.ReferenceDefinition reference) booleanvalidateReferenceExistsAndIsActive(Object dataObject, String referenceName, String attributeToHighlightOnFail, String displayFieldName) booleanvalidateReferenceExistsAndIsActive(Object dataObject, org.kuali.rice.krad.datadictionary.ReferenceDefinition reference) booleanvalidateReferenceIsActive(Object dataObject, String referenceName) booleanvalidateReferenceIsActive(Object dataObject, org.kuali.rice.krad.datadictionary.ReferenceDefinition reference) protected voidvalidateUpdatabableReferencesRecursively(Object businessObject, int maxDepth, boolean validateRequired, boolean chompLastLetterSFromCollectionName, Set<Object> processedBOs)
-
Field Details
-
VALIDATE_METHOD
Constant defines a validation method for an attribute value.Value is "validate"
- See Also:
-
dataDictionaryService
protected org.kuali.rice.krad.service.DataDictionaryService dataDictionaryService -
documentDictionaryService
protected org.kuali.rice.krad.service.DocumentDictionaryService documentDictionaryService
-
-
Constructor Details
-
DictionaryValidationServiceImpl
public DictionaryValidationServiceImpl()
-
-
Method Details
-
newIdentitySet
creates a new IdentitySet.- Returns:
- a new Set
-
validate
public org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult validate(Object object) - Specified by:
validatein interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validate
public org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult validate(Object object, String entryName, String attributeName, boolean doOptionalProcessing) - Specified by:
validatein interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateAgainstNextState
public org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult validateAgainstNextState(Object object) - Specified by:
validateAgainstNextStatein interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateAgainstState
public org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult validateAgainstState(Object object, String validationState) - Specified by:
validateAgainstStatein interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validate
public org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult validate(Object object, String entryName, org.kuali.rice.krad.datadictionary.DataDictionaryEntry entry, boolean doOptionalProcessing) - Specified by:
validatein interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateDocument
public void validateDocument(org.kuali.rice.krad.document.Document document) - Specified by:
validateDocumentin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateDocumentAttribute
public void validateDocumentAttribute(org.kuali.rice.krad.document.Document document, String attributeName, String errorPrefix) - Specified by:
validateDocumentAttributein interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateDocumentAndUpdatableReferencesRecursively
public void validateDocumentAndUpdatableReferencesRecursively(org.kuali.rice.krad.document.Document document, int maxDepth, boolean validateRequired) - Specified by:
validateDocumentAndUpdatableReferencesRecursivelyin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateDocumentAndUpdatableReferencesRecursively
public void validateDocumentAndUpdatableReferencesRecursively(org.kuali.rice.krad.document.Document document, int maxDepth, boolean validateRequired, boolean chompLastLetterSFromCollectionName) - Specified by:
validateDocumentAndUpdatableReferencesRecursivelyin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateUpdatabableReferencesRecursively
-
isBusinessObjectValid
- Specified by:
isBusinessObjectValidin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
isBusinessObjectValid
- Specified by:
isBusinessObjectValidin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateBusinessObjectsRecursively
-
validateBusinessObject
- Specified by:
validateBusinessObjectin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateBusinessObject
- Specified by:
validateBusinessObjectin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateBusinessObjectsFromDescriptors
protected void validateBusinessObjectsFromDescriptors(Object object, PropertyDescriptor[] propertyDescriptors, int depth) iterates through the property descriptors looking for business objects or lists of business objects. calls validate method for each bo found -
validatePrimitiveFromDescriptor
@Deprecated public void validatePrimitiveFromDescriptor(String entryName, Object object, PropertyDescriptor propertyDescriptor, String errorPrefix, boolean validateRequired) Deprecated.calls validate format and required check for the given propertyDescriptor- Specified by:
validatePrimitiveFromDescriptorin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateReferenceExists
public boolean validateReferenceExists(Object dataObject, org.kuali.rice.krad.datadictionary.ReferenceDefinition reference) - Specified by:
validateReferenceExistsin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateReferenceExists
- Specified by:
validateReferenceExistsin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateReferenceIsActive
public boolean validateReferenceIsActive(Object dataObject, org.kuali.rice.krad.datadictionary.ReferenceDefinition reference) - Specified by:
validateReferenceIsActivein interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateReferenceIsActive
- Specified by:
validateReferenceIsActivein interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateReferenceExistsAndIsActive
public boolean validateReferenceExistsAndIsActive(Object dataObject, org.kuali.rice.krad.datadictionary.ReferenceDefinition reference) - Specified by:
validateReferenceExistsAndIsActivein interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateReferenceExistsAndIsActive
public boolean validateReferenceExistsAndIsActive(Object dataObject, String referenceName, String attributeToHighlightOnFail, String displayFieldName) - Specified by:
validateReferenceExistsAndIsActivein interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateDefaultExistenceChecks
- Specified by:
validateDefaultExistenceChecksin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateDefaultExistenceChecksForNewCollectionItem
public boolean validateDefaultExistenceChecksForNewCollectionItem(Object dataObject, Object newCollectionItem, String collectionName) - Specified by:
validateDefaultExistenceChecksForNewCollectionItemin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateDefaultExistenceChecksForTransDoc
public boolean validateDefaultExistenceChecksForTransDoc(org.kuali.rice.krad.document.TransactionalDocument document) - Specified by:
validateDefaultExistenceChecksForTransDocin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validateDefaultExistenceChecksForNewCollectionItem
public boolean validateDefaultExistenceChecksForNewCollectionItem(org.kuali.rice.krad.document.TransactionalDocument document, Object newCollectionItem, String collectionName) - Specified by:
validateDefaultExistenceChecksForNewCollectionItemin interfaceorg.kuali.rice.krad.service.DictionaryValidationService
-
validate
public org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult validate(org.kuali.rice.krad.datadictionary.validation.AttributeValueReader valueReader, boolean doOptionalProcessing, String validationState, org.kuali.rice.krad.datadictionary.state.StateMapping stateMapping) Validates using the defined AttributeValueReader (which allows access the object being validated) against the validationState and stateMapping (if specified).If state information is null, validates the constraints as stateless (ie all constraints apply regardless of their states attribute).
- Specified by:
validatein interfaceorg.kuali.rice.krad.service.DictionaryValidationService- Parameters:
valueReader- - an object to validatedoOptionalProcessing- true if the validation should do optional validation (e.g. to check if empty values are required or not), false otherwise
-
processElementConstraints
protected void processElementConstraints(org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult result, Object value, org.kuali.rice.krad.datadictionary.validation.capability.Constrainable definition, org.kuali.rice.krad.datadictionary.validation.AttributeValueReader attributeValueReader, boolean doOptionalProcessing, String validationState, org.kuali.rice.krad.datadictionary.state.StateMapping stateMapping) process constraints for the provided value using the element constraint processors- Parameters:
result- - used to store the validation resultsvalue- - the object on which constraints are to be processed - the value of a complex attributedefinition- - a Data Dictionary definition e.g.ComplexAttributeDefinitionattributeValueReader- - a class that encapsulate access to both dictionary metadata and object field valuesdoOptionalProcessing- - true if the validation should do optional validation, false otherwise
-
processCollectionConstraints
protected void processCollectionConstraints(org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult result, Collection<?> collection, org.kuali.rice.krad.datadictionary.validation.capability.Constrainable definition, org.kuali.rice.krad.datadictionary.validation.AttributeValueReader attributeValueReader, boolean doOptionalProcessing, String validationState, org.kuali.rice.krad.datadictionary.state.StateMapping stateMapping) process constraints for the provided collection using the collection constraint processors- Parameters:
result- - used to store the validation resultscollection- - the object on which constraints are to be processed - a collectiondefinition- - a Data Dictionary definition e.g.CollectionDefinitionattributeValueReader- - a class that encapsulate access to both dictionary metadata and object field valuesdoOptionalProcessing- - true if the validation should do optional validation, false otherwise
-
validateAttribute
protected void validateAttribute(org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult result, org.kuali.rice.krad.datadictionary.validation.AttributeValueReader attributeValueReader, boolean checkIfRequired, String validationState, org.kuali.rice.krad.datadictionary.state.StateMapping stateMapping) throws org.kuali.rice.krad.datadictionary.exception.AttributeValidationException validates an attribute- Parameters:
result- - used to store the validation resultsattributeValueReader- - a class that encapsulate access to both dictionary metadata and object field valuescheckIfRequired- - check if empty values are required or not- Throws:
org.kuali.rice.krad.datadictionary.exception.AttributeValidationException
-
validateAttribute
protected void validateAttribute(org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult result, org.kuali.rice.krad.datadictionary.validation.capability.Constrainable definition, org.kuali.rice.krad.datadictionary.validation.AttributeValueReader attributeValueReader, boolean checkIfRequired, String validationState, org.kuali.rice.krad.datadictionary.state.StateMapping stateMapping) throws org.kuali.rice.krad.datadictionary.exception.AttributeValidationException Validates the attribute specified by definition- Parameters:
definition- - the constrainable attribute definition of a specific attribute name- Throws:
org.kuali.rice.krad.datadictionary.exception.AttributeValidationException
-
validateObject
protected void validateObject(org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult result, org.kuali.rice.krad.datadictionary.validation.AttributeValueReader attributeValueReader, boolean doOptionalProcessing, boolean processAttributes, String validationState, org.kuali.rice.krad.datadictionary.state.StateMapping stateMapping) throws org.kuali.rice.krad.datadictionary.exception.AttributeValidationException validates an object and its attributes recursively- Parameters:
result- - used to store the validation resultsattributeValueReader- - a class that encapsulate access to both dictionary metadata and object field valuesdoOptionalProcessing- - true if the validation should do optional validation, false otherwiseprocessAttributes- - if true process all attribute definitions, skip if false- Throws:
org.kuali.rice.krad.datadictionary.exception.AttributeValidationException
-
getCollectionConstraintProcessors
public List<org.kuali.rice.krad.datadictionary.validation.processor.CollectionConstraintProcessor> getCollectionConstraintProcessors()gets the list ofCollectionConstraintProcessorCollection constraint processors are classes that determine if a feature of a collection of objects satisfies some constraint
- Returns:
- the collectionConstraintProcessors
-
setCollectionConstraintProcessors
public void setCollectionConstraintProcessors(List<org.kuali.rice.krad.datadictionary.validation.processor.CollectionConstraintProcessor> collectionConstraintProcessors) sets the list ofCollectionConstraintProcessor- Parameters:
collectionConstraintProcessors- the collectionConstraintProcessors to set
-
getConstraintProviders
public List<org.kuali.rice.krad.datadictionary.validation.constraint.provider.ConstraintProvider> getConstraintProviders()gets the list ofConstraintProvidersConstraint providers are classes that map specific constraint types to a constraint resolver, which takes a constrainable definition
- Returns:
- the constraintProviders
-
setConstraintProviders
public void setConstraintProviders(List<org.kuali.rice.krad.datadictionary.validation.constraint.provider.ConstraintProvider> constraintProviders) sets a list ofConstraintProvider- Parameters:
constraintProviders- the constraintProviders to set
-
getElementConstraintProcessors
public List<org.kuali.rice.krad.datadictionary.validation.processor.ConstraintProcessor> getElementConstraintProcessors()gets the list of elementConstraintProcessorElement constraint processors are classes that determine if a passed value is valid for a specific constraint at the individual object or object attribute level
- Returns:
- the elementConstraintProcessors
-
setElementConstraintProcessors
public void setElementConstraintProcessors(List<org.kuali.rice.krad.datadictionary.validation.processor.ConstraintProcessor> elementConstraintProcessors) sets the list ofConstraintProcessor- Parameters:
elementConstraintProcessors- the elementConstraintProcessors to set
-
getDocumentDictionaryService
public org.kuali.rice.krad.service.DocumentDictionaryService getDocumentDictionaryService() -
getDataDictionaryService
public org.kuali.rice.krad.service.DataDictionaryService getDataDictionaryService() -
setDataDictionaryService
public void setDataDictionaryService(org.kuali.rice.krad.service.DataDictionaryService dataDictionaryService) -
getDataObjectService
public org.kuali.rice.krad.data.DataObjectService getDataObjectService() -
setDataObjectService
public void setDataObjectService(org.kuali.rice.krad.data.DataObjectService dataObjectService) -
setDocumentDictionaryService
public void setDocumentDictionaryService(org.kuali.rice.krad.service.DocumentDictionaryService documentDictionaryService) -
getLegacyDataAdapter
Deprecated. -
setLegacyDataAdapter
public void setLegacyDataAdapter(org.kuali.rice.krad.service.LegacyDataAdapter legacyDataAdapter)
-