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 Details

    • VALIDATE_METHOD

      public static final String 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

      protected final Set<Object> newIdentitySet()
      creates a new IdentitySet.
      Returns:
      a new Set
    • validate

      public org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult validate(Object object)
      Specified by:
      validate in interface org.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:
      validate in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateAgainstNextState

      public org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult validateAgainstNextState(Object object)
      Specified by:
      validateAgainstNextState in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateAgainstState

      public org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult validateAgainstState(Object object, String validationState)
      Specified by:
      validateAgainstState in interface org.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:
      validate in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateDocument

      public void validateDocument(org.kuali.rice.krad.document.Document document)
      Specified by:
      validateDocument in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateDocumentAttribute

      public void validateDocumentAttribute(org.kuali.rice.krad.document.Document document, String attributeName, String errorPrefix)
      Specified by:
      validateDocumentAttribute in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateDocumentAndUpdatableReferencesRecursively

      public void validateDocumentAndUpdatableReferencesRecursively(org.kuali.rice.krad.document.Document document, int maxDepth, boolean validateRequired)
      Specified by:
      validateDocumentAndUpdatableReferencesRecursively in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateDocumentAndUpdatableReferencesRecursively

      public void validateDocumentAndUpdatableReferencesRecursively(org.kuali.rice.krad.document.Document document, int maxDepth, boolean validateRequired, boolean chompLastLetterSFromCollectionName)
      Specified by:
      validateDocumentAndUpdatableReferencesRecursively in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateUpdatabableReferencesRecursively

      protected void validateUpdatabableReferencesRecursively(Object businessObject, int maxDepth, boolean validateRequired, boolean chompLastLetterSFromCollectionName, Set<Object> processedBOs)
    • isBusinessObjectValid

      public boolean isBusinessObjectValid(Object businessObject)
      Specified by:
      isBusinessObjectValid in interface org.kuali.rice.krad.service.DictionaryValidationService
    • isBusinessObjectValid

      public boolean isBusinessObjectValid(Object businessObject, String prefix)
      Specified by:
      isBusinessObjectValid in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateBusinessObjectsRecursively

      public void validateBusinessObjectsRecursively(Object businessObject, int depth)
    • validateBusinessObject

      public void validateBusinessObject(Object businessObject)
      Specified by:
      validateBusinessObject in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateBusinessObject

      public void validateBusinessObject(Object businessObject, boolean validateRequired)
      Specified by:
      validateBusinessObject in interface org.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:
      validatePrimitiveFromDescriptor in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateReferenceExists

      public boolean validateReferenceExists(Object dataObject, org.kuali.rice.krad.datadictionary.ReferenceDefinition reference)
      Specified by:
      validateReferenceExists in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateReferenceExists

      public boolean validateReferenceExists(Object dataObject, String referenceName)
      Specified by:
      validateReferenceExists in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateReferenceIsActive

      public boolean validateReferenceIsActive(Object dataObject, org.kuali.rice.krad.datadictionary.ReferenceDefinition reference)
      Specified by:
      validateReferenceIsActive in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateReferenceIsActive

      public boolean validateReferenceIsActive(Object dataObject, String referenceName)
      Specified by:
      validateReferenceIsActive in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateReferenceExistsAndIsActive

      public boolean validateReferenceExistsAndIsActive(Object dataObject, org.kuali.rice.krad.datadictionary.ReferenceDefinition reference)
      Specified by:
      validateReferenceExistsAndIsActive in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateReferenceExistsAndIsActive

      public boolean validateReferenceExistsAndIsActive(Object dataObject, String referenceName, String attributeToHighlightOnFail, String displayFieldName)
      Specified by:
      validateReferenceExistsAndIsActive in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateDefaultExistenceChecks

      public boolean validateDefaultExistenceChecks(Object dataObject)
      Specified by:
      validateDefaultExistenceChecks in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateDefaultExistenceChecksForNewCollectionItem

      public boolean validateDefaultExistenceChecksForNewCollectionItem(Object dataObject, Object newCollectionItem, String collectionName)
      Specified by:
      validateDefaultExistenceChecksForNewCollectionItem in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateDefaultExistenceChecksForTransDoc

      public boolean validateDefaultExistenceChecksForTransDoc(org.kuali.rice.krad.document.TransactionalDocument document)
      Specified by:
      validateDefaultExistenceChecksForTransDoc in interface org.kuali.rice.krad.service.DictionaryValidationService
    • validateDefaultExistenceChecksForNewCollectionItem

      public boolean validateDefaultExistenceChecksForNewCollectionItem(org.kuali.rice.krad.document.TransactionalDocument document, Object newCollectionItem, String collectionName)
      Specified by:
      validateDefaultExistenceChecksForNewCollectionItem in interface org.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:
      validate in interface org.kuali.rice.krad.service.DictionaryValidationService
      Parameters:
      valueReader - - an object to validate
      doOptionalProcessing - 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 results
      value - - the object on which constraints are to be processed - the value of a complex attribute
      definition - - a Data Dictionary definition e.g. ComplexAttributeDefinition
      attributeValueReader - - a class that encapsulate access to both dictionary metadata and object field values
      doOptionalProcessing - - 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 results
      collection - - the object on which constraints are to be processed - a collection
      definition - - a Data Dictionary definition e.g. CollectionDefinition
      attributeValueReader - - a class that encapsulate access to both dictionary metadata and object field values
      doOptionalProcessing - - 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 results
      attributeValueReader - - a class that encapsulate access to both dictionary metadata and object field values
      checkIfRequired - - 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 results
      attributeValueReader - - a class that encapsulate access to both dictionary metadata and object field values
      doOptionalProcessing - - true if the validation should do optional validation, false otherwise
      processAttributes - - 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 of CollectionConstraintProcessor

      Collection 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 of CollectionConstraintProcessor
      Parameters:
      collectionConstraintProcessors - the collectionConstraintProcessors to set
    • getConstraintProviders

      public List<org.kuali.rice.krad.datadictionary.validation.constraint.provider.ConstraintProvider> getConstraintProviders()
      gets the list of ConstraintProviders

      Constraint 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 of ConstraintProvider
      Parameters:
      constraintProviders - the constraintProviders to set
    • getElementConstraintProcessors

      public List<org.kuali.rice.krad.datadictionary.validation.processor.ConstraintProcessor> getElementConstraintProcessors()
      gets the list of element ConstraintProcessor

      Element 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 of ConstraintProcessor
      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 public org.kuali.rice.krad.service.LegacyDataAdapter getLegacyDataAdapter()
      Deprecated.
    • setLegacyDataAdapter

      public void setLegacyDataAdapter(org.kuali.rice.krad.service.LegacyDataAdapter legacyDataAdapter)