View Javadoc

1   /**
2    * Copyright 2005-2013 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 org.apache.commons.lang.StringUtils;
19  import org.kuali.rice.krad.datadictionary.parse.BeanTag;
20  import org.kuali.rice.krad.datadictionary.parse.BeanTagAttribute;
21  import org.kuali.rice.krad.datadictionary.parse.BeanTags;
22  import org.kuali.rice.krad.uif.UifConstants;
23  
24  /**
25   * Pattern for matching alpha characters
26   *
27   * @author Kuali Rice Team (rice.collab@kuali.org)
28   */
29  @BeanTags({@BeanTag(name = "alphaPatternConstraint-bean", parent = "AlphaPatternConstraint"),
30          @BeanTag(name = "alphaWithBasicPunc-bean", parent = "AlphaWithBasicPunc")})
31  public class AlphaPatternConstraint extends AllowCharacterConstraint {
32      protected boolean lowerCase = false;
33      protected boolean upperCase = false;
34  
35      /**
36       * @see org.kuali.rice.krad.datadictionary.validation.ValidationPattern#getRegexString()
37       */
38      protected String getRegexString() {
39          StringBuilder regexString = new StringBuilder("[A-Za-z");
40          /*
41           * This check must be first because we are removing the base 'A-Z' if lowerCase == true
42           */
43          if (lowerCase) {
44              regexString = new StringBuilder("[a-z");
45          } else if (upperCase) {
46              regexString = new StringBuilder("[A-Z");
47          }
48          regexString.append(this.getAllowedCharacterRegex());
49          regexString.append("]");
50  
51          return regexString.toString();
52      }
53  
54      /**
55       * A message key is auto generated for this bean if none is set. This generated message can be
56       * overridden through setMessageKey, but the generated message should cover most cases.
57       *
58       * @see org.kuali.rice.krad.datadictionary.validation.constraint.BaseConstraint#getMessageKey()
59       */
60      @Override
61      public String getMessageKey() {
62          if (StringUtils.isEmpty(messageKey)) {
63              StringBuilder key = new StringBuilder("");
64              if (lowerCase) {
65                  return (UifConstants.Messages.VALIDATION_MSG_KEY_PREFIX + "alphaPatternLowerCase");
66              } else if (upperCase) {
67                  return (UifConstants.Messages.VALIDATION_MSG_KEY_PREFIX + "alphaPatternUpperCase");
68              } else {
69                  return (UifConstants.Messages.VALIDATION_MSG_KEY_PREFIX + "alphaPattern");
70              }
71          }
72  
73          return messageKey;
74      }
75  
76      /**
77       * @return the lowerCase
78       */
79      @BeanTagAttribute(name = "lowerCase")
80      public boolean isLowerCase() {
81          return this.lowerCase;
82      }
83  
84      /**
85       * Only allow lowerCase characters. DO NOT use with upperCase option, no flags set for case
86       * means both upper and lower case are allowed.
87       *
88       * @param lowerCase the lowerCase to set
89       */
90      public void setLowerCase(boolean lowerCase) {
91          this.lowerCase = lowerCase;
92      }
93  
94      @BeanTagAttribute(name = "upperCase")
95      public boolean isUpperCase() {
96          return upperCase;
97      }
98  
99      /**
100      * Only allow upperCase characters.  DO NOT use with lowerCase option, no flags set for case
101      * means both upper and lower case are allowed.
102      *
103      * @param upperCase the lowerCase to set
104      */
105     public void setUpperCase(boolean upperCase) {
106         this.upperCase = upperCase;
107     }
108 
109 }