001/**
002 * Copyright 2005-2016 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.krad.datadictionary.validation.processor;
017
018import org.kuali.rice.krad.datadictionary.exception.AttributeValidationException;
019import org.kuali.rice.krad.datadictionary.validation.AttributeValueReader;
020import org.kuali.rice.krad.datadictionary.validation.ValidationUtils;
021import org.kuali.rice.krad.datadictionary.validation.constraint.Constraint;
022import org.kuali.rice.krad.datadictionary.validation.constraint.PrerequisiteConstraint;
023import org.kuali.rice.krad.datadictionary.validation.result.ConstraintValidationResult;
024import org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult;
025import org.kuali.rice.krad.datadictionary.validation.result.ProcessorResult;
026
027/**
028 * 
029 * @author Kuali Rice Team (rice.collab@kuali.org) 
030 */
031public class PrerequisiteConstraintProcessor extends BasePrerequisiteConstraintProcessor<PrerequisiteConstraint> {
032        
033        private static final String CONSTRAINT_NAME = "prerequisite constraint";
034
035        
036        /**
037         * @see org.kuali.rice.krad.datadictionary.validation.processor.ConstraintProcessor#process(DictionaryValidationResult, Object, org.kuali.rice.krad.datadictionary.validation.capability.Validatable, org.kuali.rice.krad.datadictionary.validation.AttributeValueReader)
038         */
039        @Override
040        public ProcessorResult process(DictionaryValidationResult result, Object value, PrerequisiteConstraint constraint, AttributeValueReader attributeValueReader) throws AttributeValidationException {
041
042                if (ValidationUtils.isNullOrEmpty(value))
043                        return new ProcessorResult(result.addSkipped(attributeValueReader, CONSTRAINT_NAME));
044                
045        
046                ConstraintValidationResult constraintValidationResult = processPrerequisiteConstraint(constraint, attributeValueReader);
047
048        if(constraint != null){
049            constraintValidationResult.setConstraintLabelKey(constraint.getLabelKey());
050            constraintValidationResult.setErrorParameters(constraint.getValidationMessageParamsArray());
051        }
052
053                result.addConstraintValidationResult(attributeValueReader, constraintValidationResult);
054                
055                return new ProcessorResult(constraintValidationResult);
056        }
057
058        @Override 
059        public String getName() {
060                return CONSTRAINT_NAME;
061        }
062        
063        /**
064         * @see org.kuali.rice.krad.datadictionary.validation.processor.ConstraintProcessor#getConstraintType()
065         */
066        @Override
067        public Class<? extends Constraint> getConstraintType() {
068                return PrerequisiteConstraint.class;
069        }
070
071}