View Javadoc
1   /**
2    * Copyright 2005-2014 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.kns.datadictionary.validation.charlevel;
17  
18  import org.apache.commons.lang.StringUtils;
19  import org.apache.log4j.Logger;
20  import org.kuali.rice.krad.datadictionary.exporter.ExportMap;
21  import org.kuali.rice.krad.datadictionary.validation.CharacterLevelValidationPattern;
22  
23  /**
24   * This is a description of what this class does - ctdang don't forget to fill this in. 
25   * 
26   * @author Kuali Rice Team (rice.collab@kuali.org)
27   *
28   * @deprecated Use {@link org.kuali.rice.krad.datadictionary.validation.constraint.ConfigurationBasedRegexPatternConstraint}.
29   */
30  @Deprecated
31  public class RegexValidationPattern extends CharacterLevelValidationPattern {
32  
33      private static final long serialVersionUID = -5642894236634278352L;
34      private static final Logger LOG=Logger.getLogger(RegexValidationPattern.class);
35      /**
36       * Regular expression, e.g. "[a-zA-Z0-9]"
37       */
38      private String pattern;
39  
40      private String validationErrorMessageKey;
41      /**
42       * This exports a representation of this instance by an ExportMap.
43       * 
44       * @see org.kuali.rice.krad.datadictionary.validation.CharacterLevelValidationPattern#extendExportMap(org.kuali.rice.krad.datadictionary.exporter.ExportMap)
45       */
46      @Override
47  	public void extendExportMap(ExportMap exportMap) {
48          if (LOG.isTraceEnabled()) {
49              String message=String.format("ENTRY %s",
50                      (exportMap==null)?"null":exportMap.toString());
51              LOG.trace(message);
52          }
53          
54          // Set element value
55          exportMap.set("type", "regex");
56          // Set attribute (of the above element) value
57          exportMap.set("pattern", getPattern());
58  
59          if (LOG.isTraceEnabled()) {
60              String message=String.format("EXIT %s",
61                      (exportMap==null)?"null":exportMap.toString());
62              LOG.trace(message);
63          }
64          
65       }
66  
67      /**
68       * This returns an instance of this class as string.
69       * 
70       * @see org.kuali.rice.krad.datadictionary.validation.ValidationPattern#getPatternXml()
71       */
72      public String getPatternXml() {
73          if (LOG.isTraceEnabled()) {
74              String message=String.format("ENTRY");
75              LOG.trace(message);
76          }
77          
78          StringBuffer xml = new StringBuffer("<regex ");
79          xml.append(pattern);
80          xml.append("/>");
81  
82          if (LOG.isTraceEnabled()) {
83              String message=String.format("EXIT %s", xml.toString());
84              LOG.trace(message);
85          }
86          
87          return xml.toString();
88      }
89  
90      /**
91       * This returns the specified regular expression defined in the data dictionary
92       * entry for validating the value of an attribute.
93       * 
94       * @see org.kuali.rice.krad.datadictionary.validation.ValidationPattern#getRegexString()
95       */
96      @Override
97  	protected String getRegexString() {
98          if (LOG.isTraceEnabled()) {
99              String message=String.format("ENTRY %s",
100                     (pattern==null)?"null":pattern.toString());
101             LOG.trace(message);
102         }
103         
104         if (StringUtils.isEmpty(pattern)) {
105             throw new IllegalStateException(this.getClass().getName()+".pattern is empty");
106         }
107 
108         if (LOG.isTraceEnabled()) {
109             String message=String.format("EXIT");
110             LOG.trace(message);
111         }
112         
113         return pattern;
114     }
115 
116     /**
117      * @return the pattern
118      */
119     public final String getPattern() {
120         return this.pattern;
121     }
122 
123     /**
124      * @param pattern the pattern to set
125      */
126     public final void setPattern(String pattern) {
127         this.pattern = pattern;
128     }
129 
130 	/**
131 	 * @return the validationErrorMessageKey
132 	 */
133     @Override
134 	public String getValidationErrorMessageKey() {
135 		return this.validationErrorMessageKey;
136 	}
137 
138 	/**
139 	 * @param validationErrorMessageKey a message key from the application's message resource bundle signifying the error message
140 	 * to display if some validation does not match this pattern
141 	 */
142 	public void setValidationErrorMessageKey(String validationErrorMessageKey) {
143 		this.validationErrorMessageKey = validationErrorMessageKey;
144 	}
145 
146 	/**
147 	 * @see org.kuali.rice.krad.datadictionary.validation.ValidationPattern#completeValidation()
148 	 */
149 	@Override
150 	public void completeValidation() {
151 		super.completeValidation();
152 		if (StringUtils.isBlank(validationErrorMessageKey)) {
153 			throw new ValidationPatternException("Regex Validation Patterns must have a validation error message key defined");
154 		}
155 	}
156 }