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.constraint;
017
018import java.util.ArrayList;
019import java.util.List;
020
021import javax.xml.bind.annotation.XmlAccessType;
022import javax.xml.bind.annotation.XmlAccessorType;
023import javax.xml.bind.annotation.XmlElement;
024
025
026/**
027 * A class that implements the required accessor for label keys. This provides a convenient base class
028 * from which other constraints can be derived.
029 * 
030 * This class is a direct copy of one that was in Kuali Student. 
031 * 
032 * @author Kuali Rice Team (rice.collab@kuali.org)
033 * @since 1.1
034 */
035@XmlAccessorType(XmlAccessType.FIELD)
036public class BaseConstraint implements Constraint {
037    @XmlElement
038    protected String labelKey; 
039    @XmlElement
040    protected Boolean applyClientSide;
041    
042    List<String> validationMessageParams;
043    
044    public BaseConstraint(){
045        applyClientSide = Boolean.valueOf(true);
046    }
047    
048        /**
049         * LabelKey should be a single word key.  This key is used to find a message to use for this
050         * constraint from available messages.  The key is also used for defining/retrieving validation method
051         * names when applicable for ValidCharactersContraints.
052         * 
053         * If a comma separated list of keys is used, a message will be generated that is a comma separated list of
054         * the messages retrieved for each key.
055         * 
056         * @see ValidCharactersConstraint
057         * 
058         * @return
059         */
060        public String getLabelKey() {
061                return labelKey;
062        }
063
064        public void setLabelKey(String labelKey) {
065                this.labelKey = labelKey;
066        }
067
068        /**
069         * If this is true, the constraint should be applied on the client side when the user interacts with
070         * a field - if this constraint can be interpreted for client side use. Default is true.
071         * @return the applyClientSide
072         */
073        public Boolean getApplyClientSide() {
074                return this.applyClientSide;
075        }
076
077        /**
078         * @param applyClientSide the applyClientSide to set
079         */
080        public void setApplyClientSide(Boolean applyClientSide) {
081                this.applyClientSide = applyClientSide;
082        }
083        
084
085    /**
086     * Parameters to be used in the string retrieved by this constraint's labelKey, ordered by number of
087     * the param
088     * @return the validationMessageParams
089     */
090    public List<String> getValidationMessageParams() {
091        return this.validationMessageParams;
092    }
093    
094    /**
095     * Parameters to be used in the string retrieved by this constraint's labelKey, ordered by number of
096     * the param
097     * @return the validationMessageParams
098     */
099    public String[] getValidationMessageParamsArray() {
100        if(this.getValidationMessageParams() != null){
101            return this.getValidationMessageParams().toArray(new String[this.getValidationMessageParams().size()]);
102        }
103        else{
104            return null;
105        }
106
107    }
108
109    /**
110     * @param validationMessageParams the validationMessageParams to set
111     */
112    public void setValidationMessageParams(List<String> validationMessageParams) {
113        this.validationMessageParams = validationMessageParams;
114    }
115        
116
117}