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