View Javadoc

1   /*
2    * Copyright 2011 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 1.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl1.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.student.r2.common.datadictionary;
17  
18  import java.util.List;
19  import org.kuali.rice.krad.datadictionary.DataObjectEntry;
20  import org.kuali.rice.krad.datadictionary.validation.result.DictionaryValidationResult;
21  import org.kuali.rice.krad.service.DictionaryValidationService;
22  import org.kuali.student.r2.common.dto.ContextInfo;
23  import org.kuali.student.r2.common.dto.ValidationResultInfo;
24  import org.kuali.student.r2.common.exceptions.InvalidParameterException;
25  import org.kuali.student.r2.common.exceptions.MissingParameterException;
26  import org.kuali.student.r2.common.exceptions.OperationFailedException;
27  import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
28  
29  /**
30   * This is an implementation that gets the dictionary directly using KS methods but then calls
31   * the rice validation method that takes in the dictionary entry to be used.
32   *
33   * *** THIS IS THE ONLY WAY I COULD GET THE INTEGRATION TO WORK ***
34   *
35   * I could not figure out how to get the validation to work by simply calling
36   * the validate(info, doOptionalProcessing) method so instead I had to read the dictionary
37   * myself and pass the dictionary in on the call using the
38   * validate(info,entryName, dictEntry, doOptionalProcessing) method instead
39   *
40   *
41   * @author nwright
42   */
43  public class RiceDataDictionaryValidatorImpl implements DataDictionaryValidator {
44  
45      private static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(RiceDataDictionaryValidatorImpl.class);
46      private RiceDataDictionaryServiceInfc riceDataDictionaryService;
47      private DictionaryValidationService riceDictionaryValidationService;
48  
49      public RiceDataDictionaryValidatorImpl() {
50      }
51  
52      public RiceDataDictionaryServiceInfc getRiceDataDictionaryService() {
53          return riceDataDictionaryService;
54      }
55  
56      public void setRiceDataDictionaryService(RiceDataDictionaryServiceInfc riceDataDictionaryService) {
57          this.riceDataDictionaryService = riceDataDictionaryService;
58      }
59  
60      public DictionaryValidationService getRiceDictionaryValidationService() {
61          return riceDictionaryValidationService;
62      }
63  
64      public void setRiceDictionaryValidationService(DictionaryValidationService riceDictionaryValidationService) {
65          this.riceDictionaryValidationService = riceDictionaryValidationService;
66      }
67  
68   
69      @Override
70      public List<ValidationResultInfo> validate(ValidationType validationType, Object info, ContextInfo context)
71              throws OperationFailedException, MissingParameterException, InvalidParameterException, PermissionDeniedException {
72          boolean doOptionalProcessing = true;
73  //       @param doOptionalProcessing true if the validation should do optional validation
74  //       (e.g. to check if empty values are required or not), false otherwise
75          if (validationType.equals(DataDictionaryValidator.ValidationType.SKIP_REQUREDNESS_VALIDATIONS)) {
76              doOptionalProcessing = false;
77          }
78          String entryName = info.getClass().getName();
79          DataObjectEntry dictEntry;
80          dictEntry = this.riceDataDictionaryService.getDataObjectEntry(entryName);
81          if (dictEntry == null) {
82              throw new OperationFailedException("Dictionary entry for " + entryName + " does not exist");
83          }
84          DictionaryValidationResult dvr = this.riceDictionaryValidationService.validate(info,
85            entryName,
86            dictEntry,
87            doOptionalProcessing);
88          Rice2ValidationResultConverter converter = new Rice2ValidationResultConverter();
89          List<ValidationResultInfo> vrs = converter.convert(dvr);
90          return vrs;
91      }
92  }