Coverage Report - org.kuali.rice.krad.datadictionary.validation.constraint.MustOccurConstraint
 
Classes in this File Line Coverage Branch Coverage Complexity
MustOccurConstraint
100%
13/13
N/A
1
 
 1  
 /**
 2  
  * Copyright 2005-2011 The Kuali Foundation
 3  
  *
 4  
  * Licensed under the Educational Community License, Version 2.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/ecl2.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.rice.krad.datadictionary.validation.constraint;
 17  
 
 18  
 import javax.xml.bind.annotation.XmlAccessType;
 19  
 import javax.xml.bind.annotation.XmlAccessorType;
 20  
 import javax.xml.bind.annotation.XmlElement;
 21  
 import java.util.List;
 22  
 
 23  
 /**
 24  
  * Must occur constraints are constraints that indicate some range of acceptable valid results. So a must occur constraint
 25  
  * might indicate that between 1 and 3 prequisite constraints must be valid. For example, on a person object, it might be
 26  
  * that one of three fields must be filled in:
 27  
  * 
 28  
  * 1. username
 29  
  * 2. email
 30  
  * 3. phone number
 31  
  * 
 32  
  * By imposing a must occur constraint on the person object iself, and setting three prequisite constraints below it, with a min of 1 
 33  
  * and a max of 3, this requirement can be enforced. 
 34  
  * 
 35  
  * A more complicated example might be that a US address is only valid if it provides either:
 36  
  * (a) a city and state, or
 37  
  * (b) a postal code
 38  
  * 
 39  
  * To enforce this, a single must occur constraint would have two children: (1) a prequisite constraint on postal code, and (2) a must occur constraint
 40  
  * with two child prequisite constraints, on city and state, respectively. By setting min=1/max=2 at the top must occur constraint, 
 41  
  * and min=2/max=2 at the leaf constraint, this requirement can be enforced.
 42  
  * 
 43  
  * @author Kuali Rice Team (rice.collab@kuali.org)
 44  
  * @since 1.1
 45  
  */
 46  
 @XmlAccessorType(XmlAccessType.FIELD)
 47  10
 public class MustOccurConstraint extends BaseConstraint {
 48  
         
 49  
     @XmlElement
 50  
     private List<PrerequisiteConstraint> prerequisiteConstraints;
 51  
         @XmlElement
 52  
     private List<MustOccurConstraint> mustOccurConstraints;
 53  
         @XmlElement
 54  
         private Integer min;
 55  
         @XmlElement
 56  
         private Integer max;
 57  
 
 58  
         public List<PrerequisiteConstraint> getPrerequisiteConstraints() {
 59  6
                 return prerequisiteConstraints;
 60  
         }
 61  
 
 62  
         public void setPrerequisiteConstraints(List<PrerequisiteConstraint> prerequisiteConstraints) {
 63  10
                 this.prerequisiteConstraints = prerequisiteConstraints;
 64  10
         }
 65  
 
 66  
         public List<MustOccurConstraint> getMustOccurConstraints() {
 67  6
                 return mustOccurConstraints;
 68  
         }
 69  
 
 70  
         public void setMustOccurConstraints(List<MustOccurConstraint> occurs) {
 71  5
                 this.mustOccurConstraints = occurs;
 72  5
         }
 73  
 
 74  
         public Integer getMin() {
 75  12
                 return min;
 76  
         }
 77  
 
 78  
         public void setMin(Integer min) {
 79  10
                 this.min = min;
 80  10
         }
 81  
 
 82  
         public Integer getMax() {
 83  12
                 return max;
 84  
         }
 85  
 
 86  
         public void setMax(Integer max) {
 87  10
                 this.max = max;
 88  10
         }
 89  
 }