1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.validator;
18
19 import org.apache.commons.validator.util.ValidatorUtils;
20
21
22
23
24 public class GenericValidatorImpl {
25
26 public static final String FIELD_TEST_NULL = "NULL";
27
28 public static final String FIELD_TEST_NOTNULL = "NOTNULL";
29
30 public static final String FIELD_TEST_EQUAL = "EQUAL";
31
32 private static boolean isStringOrNull(final Object o) {
33 if (o == null) {
34 return true;
35 }
36 return o instanceof String;
37 }
38
39
40
41
42
43
44
45
46 public static boolean validateByte(final Object bean, final Field field) {
47 final String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
48
49 return GenericValidator.isByte(value);
50 }
51
52
53
54
55
56
57
58
59 public static boolean validateDouble(final Object bean, final Field field) {
60 final String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
61
62 return GenericValidator.isDouble(value);
63 }
64
65
66
67
68
69
70
71
72 public static boolean validateEmail(final Object bean, final Field field) {
73 final String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
74
75 return GenericValidator.isEmail(value);
76 }
77
78
79
80
81
82
83
84
85 public static boolean validateFloat(final Object bean, final Field field) {
86 final String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
87
88 return GenericValidator.isFloat(value);
89 }
90
91
92
93
94
95
96
97
98 public static boolean validateInt(final Object bean, final Field field) {
99 final String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
100
101 return GenericValidator.isInt(value);
102 }
103
104
105
106
107
108
109
110
111 public static boolean validateLong(final Object bean, final Field field) {
112 final String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
113
114 return GenericValidator.isLong(value);
115 }
116
117
118
119
120
121
122
123
124 public static boolean validatePositive(final Object bean, final Field field) {
125 final String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
126
127 return GenericTypeValidator.formatInt(value).intValue() > 0;
128 }
129
130
131
132
133
134
135
136
137
138 public static boolean validateRaiseException(final Object bean, final Field field) throws Exception {
139
140 final String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
141
142 if ("RUNTIME".equals(value)) {
143 throw new RuntimeException("RUNTIME-EXCEPTION");
144
145 }
146 if ("CHECKED".equals(value)) {
147 throw new Exception("CHECKED-EXCEPTION");
148
149 }
150 throw new ValidatorException("VALIDATOR-EXCEPTION");
151 }
152
153
154
155
156
157
158 public static boolean validateRequired(final Object bean, final Field field) {
159 final String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
160
161 return !GenericValidator.isBlankOrNull(value);
162 }
163
164 public static boolean validateRequiredIf(final Object bean, final Field field, final Validator validator) {
165
166 final Object form = validator.getParameterValue(Validator.BEAN_PARAM);
167 String value = null;
168 boolean required = false;
169 if (isStringOrNull(bean)) {
170 value = (String) bean;
171 } else {
172 value = ValidatorUtils.getValueAsString(bean, field.getProperty());
173 }
174 int i = 0;
175 String fieldJoin = "AND";
176 if (!GenericValidator.isBlankOrNull(field.getVarValue("fieldJoin"))) {
177 fieldJoin = field.getVarValue("fieldJoin");
178 }
179 if (fieldJoin.equalsIgnoreCase("AND")) {
180 required = true;
181 }
182 while (!GenericValidator.isBlankOrNull(field.getVarValue("field[" + i + "]"))) {
183 String dependProp = field.getVarValue("field[" + i + "]");
184 final String dependTest = field.getVarValue("fieldTest[" + i + "]");
185 final String dependTestValue = field.getVarValue("fieldValue[" + i + "]");
186 String dependIndexed = field.getVarValue("fieldIndexed[" + i + "]");
187 if (dependIndexed == null) {
188 dependIndexed = "false";
189 }
190 boolean thisRequired = false;
191 if (field.isIndexed() && Boolean.parseBoolean(dependIndexed)) {
192 final String key = field.getKey();
193 if (key.contains("[") && key.contains("]")) {
194 final String ind = key.substring(0, key.indexOf(".") + 1);
195 dependProp = ind + dependProp;
196 }
197 }
198 final String dependVal = ValidatorUtils.getValueAsString(form, dependProp);
199 if (dependTest.equals(FIELD_TEST_NULL)) {
200 if (dependVal != null && !dependVal.isEmpty()) {
201 thisRequired = false;
202 } else {
203 thisRequired = true;
204 }
205 }
206 if (dependTest.equals(FIELD_TEST_NOTNULL)) {
207 if (dependVal != null && !dependVal.isEmpty()) {
208 thisRequired = true;
209 } else {
210 thisRequired = false;
211 }
212 }
213 if (dependTest.equals(FIELD_TEST_EQUAL)) {
214 thisRequired = dependTestValue.equalsIgnoreCase(dependVal);
215 }
216 if (fieldJoin.equalsIgnoreCase("AND")) {
217 required = required && thisRequired;
218 } else {
219 required = required || thisRequired;
220 }
221 i++;
222 }
223 if (required) {
224 if (value != null && !value.isEmpty()) {
225 return true;
226 }
227 return false;
228 }
229 return true;
230 }
231
232
233
234
235
236
237
238
239 public static boolean validateShort(final Object bean, final Field field) {
240 final String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
241
242 return GenericValidator.isShort(value);
243 }
244
245 }