001    /**
002     * Copyright 2005-2014 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     */
016    package org.kuali.rice.krad.datadictionary.validation.constraint;
017    
018    import org.kuali.rice.core.api.data.DataType;
019    import org.kuali.rice.krad.datadictionary.parse.BeanTag;
020    import org.kuali.rice.krad.datadictionary.parse.BeanTagAttribute;
021    import org.kuali.rice.krad.datadictionary.parse.BeanTags;
022    
023    /**
024     * A simple constraint stores 'basic' constraints for a field.  This constraint is meant to be used as a
025     * constraint for WhenConstraints in CaseConstraint, and is also used internally in InputField.
026     *
027     * @author Kuali Rice Team (rice.collab@kuali.org)
028     */
029    @BeanTags({@BeanTag(name = "simpleContraint-bean", parent = "SimpleConstraint"),
030            @BeanTag(name = "requiredConstraint-bean", parent = "RequiredConstraint")})
031    public class SimpleConstraint extends BaseConstraint implements ExistenceConstraint, RangeConstraint, LengthConstraint {
032        private static final long serialVersionUID = -5988843786798202907L;
033    
034        private Boolean required;
035        private Integer maxLength;
036        private Integer minLength;
037        private String exclusiveMin;
038        private String inclusiveMax;
039    
040        //Don't know if we will support min/max occurs at this time
041        private Integer minOccurs;
042        private Integer maxOccurs;
043    
044        private DataType dataType;
045    
046        /**
047         * If true the field is required
048         *
049         * @return the required
050         */
051        @BeanTagAttribute(name = "required")
052        public Boolean getRequired() {
053            return this.required;
054        }
055    
056        /**
057         * @param required the required to set
058         */
059        public void setRequired(Boolean required) {
060            this.required = required;
061        }
062    
063        /**
064         * @see org.kuali.rice.krad.datadictionary.validation.constraint.ExistenceConstraint#isRequired()
065         */
066        @Override
067        public Boolean isRequired() {
068            return getRequired();
069        }
070    
071        /**
072         * The maximum amount of characters this field's value can be
073         *
074         * @return the maxLength
075         */
076        @BeanTagAttribute(name = "maxLength")
077        public Integer getMaxLength() {
078            return this.maxLength;
079        }
080    
081        /**
082         * @param maxLength the maxLength to set
083         */
084        public void setMaxLength(Integer maxLength) {
085            this.maxLength = maxLength;
086        }
087    
088        /**
089         * The minimum amount of characters this field's value has to be
090         *
091         * @return the minLength
092         */
093        @BeanTagAttribute(name = "minLength")
094        public Integer getMinLength() {
095            return this.minLength;
096        }
097    
098        /**
099         * @param minLength the minLength to set
100         */
101        public void setMinLength(Integer minLength) {
102            this.minLength = minLength;
103        }
104    
105        /**
106         * Exclusive minimum value for this field
107         *
108         * @return the exclusiveMin
109         */
110        @BeanTagAttribute(name = "exclusiveMin")
111        public String getExclusiveMin() {
112            return this.exclusiveMin;
113        }
114    
115        /**
116         * @param exclusiveMin the exclusiveMin to set
117         */
118        public void setExclusiveMin(String exclusiveMin) {
119            this.exclusiveMin = exclusiveMin;
120        }
121    
122        /**
123         * Inclusive max value for this field
124         *
125         * @return the inclusiveMax
126         */
127        @BeanTagAttribute(name = "inclusiveMax")
128        public String getInclusiveMax() {
129            return this.inclusiveMax;
130        }
131    
132        /**
133         * @param inclusiveMax the inclusiveMax to set
134         */
135        public void setInclusiveMax(String inclusiveMax) {
136            this.inclusiveMax = inclusiveMax;
137        }
138    
139        /**
140         * The minimum amount of items in this fields list of values - not yet used/do not use
141         *
142         * @return the minOccurs
143         */
144        @BeanTagAttribute(name = "minOccurs")
145        public Integer getMinOccurs() {
146            return this.minOccurs;
147        }
148    
149        /**
150         * @param minOccurs the minOccurs to set
151         */
152        public void setMinOccurs(Integer minOccurs) {
153            this.minOccurs = minOccurs;
154        }
155    
156        /**
157         * The maximum amount of items in this field's list of values - not yet used/do not use
158         *
159         * @return the maxOccurs
160         */
161        @BeanTagAttribute(name = "maxOccurs")
162        public Integer getMaxOccurs() {
163            return this.maxOccurs;
164        }
165    
166        /**
167         * @param maxOccurs the maxOccurs to set
168         */
169        public void setMaxOccurs(Integer maxOccurs) {
170            this.maxOccurs = maxOccurs;
171        }
172    
173        @BeanTagAttribute(name = "dataType", type = BeanTagAttribute.AttributeType.SINGLEBEAN)
174        public DataType getDataType() {
175            return dataType;
176        }
177    
178        public void setDataType(DataType dataType) {
179            this.dataType = dataType;
180        }
181    }
182