%line | %branch | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
org.apache.commons.validator.GenericValidator |
|
|
1 | /* |
|
2 | * $Id: GenericValidator.java 367237 2006-01-09 07:39:35Z niallp $ |
|
3 | * $Rev: 367237 $ |
|
4 | * $Date: 2006-01-09 07:39:35 +0000 (Mon, 09 Jan 2006) $ |
|
5 | * |
|
6 | * ==================================================================== |
|
7 | * Copyright 2001-2006 The Apache Software Foundation |
|
8 | * |
|
9 | * Licensed under the Apache License, Version 2.0 (the "License"); |
|
10 | * you may not use this file except in compliance with the License. |
|
11 | * You may obtain a copy of the License at |
|
12 | * |
|
13 | * http://www.apache.org/licenses/LICENSE-2.0 |
|
14 | * |
|
15 | * Unless required by applicable law or agreed to in writing, software |
|
16 | * distributed under the License is distributed on an "AS IS" BASIS, |
|
17 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
18 | * See the License for the specific language governing permissions and |
|
19 | * limitations under the License. |
|
20 | */ |
|
21 | ||
22 | package org.apache.commons.validator; |
|
23 | ||
24 | import java.io.Serializable; |
|
25 | import java.util.Locale; |
|
26 | ||
27 | import org.apache.oro.text.perl.Perl5Util; |
|
28 | ||
29 | /** |
|
30 | * This class contains basic methods for performing validations. |
|
31 | */ |
|
32 | 0 | public class GenericValidator implements Serializable { |
33 | ||
34 | /** |
|
35 | * UrlValidator used in wrapper method. |
|
36 | */ |
|
37 | 30 | private static final UrlValidator URL_VALIDATOR = new UrlValidator(); |
38 | ||
39 | /** |
|
40 | * CreditCardValidator used in wrapper method. |
|
41 | */ |
|
42 | 15 | private static final CreditCardValidator CREDIT_CARD_VALIDATOR = |
43 | new CreditCardValidator(); |
|
44 | ||
45 | /** |
|
46 | * <p>Checks if the field isn't null and length of the field is greater |
|
47 | * than zero not including whitespace.</p> |
|
48 | * |
|
49 | * @param value The value validation is being performed on. |
|
50 | * @return true if blank or null. |
|
51 | */ |
|
52 | public static boolean isBlankOrNull(String value) { |
|
53 | 9531 | return ((value == null) || (value.trim().length() == 0)); |
54 | } |
|
55 | ||
56 | /** |
|
57 | * <p>Checks if the value matches the regular expression.</p> |
|
58 | * |
|
59 | * @param value The value validation is being performed on. |
|
60 | * @param regexp The regular expression. |
|
61 | * @return true if matches the regular expression. |
|
62 | */ |
|
63 | public static boolean matchRegexp(String value, String regexp) { |
|
64 | 0 | if (regexp == null || regexp.length() <= 0) { |
65 | 0 | return false; |
66 | } |
|
67 | ||
68 | 0 | Perl5Util matcher = new Perl5Util(); |
69 | 0 | return matcher.match("/" + regexp + "/", value); |
70 | } |
|
71 | ||
72 | /** |
|
73 | * <p>Checks if the value can safely be converted to a byte primitive.</p> |
|
74 | * |
|
75 | * @param value The value validation is being performed on. |
|
76 | * @return true if the value can be converted to a Byte. |
|
77 | */ |
|
78 | public static boolean isByte(String value) { |
|
79 | 8 | return (GenericTypeValidator.formatByte(value) != null); |
80 | } |
|
81 | ||
82 | /** |
|
83 | * <p>Checks if the value can safely be converted to a short primitive.</p> |
|
84 | * |
|
85 | * @param value The value validation is being performed on. |
|
86 | * @return true if the value can be converted to a Short. |
|
87 | */ |
|
88 | public static boolean isShort(String value) { |
|
89 | 6 | return (GenericTypeValidator.formatShort(value) != null); |
90 | } |
|
91 | ||
92 | /** |
|
93 | * <p>Checks if the value can safely be converted to a int primitive.</p> |
|
94 | * |
|
95 | * @param value The value validation is being performed on. |
|
96 | * @return true if the value can be converted to an Integer. |
|
97 | */ |
|
98 | public static boolean isInt(String value) { |
|
99 | 14 | return (GenericTypeValidator.formatInt(value) != null); |
100 | } |
|
101 | ||
102 | /** |
|
103 | * <p>Checks if the value can safely be converted to a long primitive.</p> |
|
104 | * |
|
105 | * @param value The value validation is being performed on. |
|
106 | * @return true if the value can be converted to a Long. |
|
107 | */ |
|
108 | public static boolean isLong(String value) { |
|
109 | 8 | return (GenericTypeValidator.formatLong(value) != null); |
110 | } |
|
111 | ||
112 | /** |
|
113 | * <p>Checks if the value can safely be converted to a float primitive.</p> |
|
114 | * |
|
115 | * @param value The value validation is being performed on. |
|
116 | * @return true if the value can be converted to a Float. |
|
117 | */ |
|
118 | public static boolean isFloat(String value) { |
|
119 | 6 | return (GenericTypeValidator.formatFloat(value) != null); |
120 | } |
|
121 | ||
122 | /** |
|
123 | * <p>Checks if the value can safely be converted to a double primitive.</p> |
|
124 | * |
|
125 | * @param value The value validation is being performed on. |
|
126 | * @return true if the value can be converted to a Double. |
|
127 | */ |
|
128 | public static boolean isDouble(String value) { |
|
129 | 6 | return (GenericTypeValidator.formatDouble(value) != null); |
130 | } |
|
131 | ||
132 | /** |
|
133 | * <p>Checks if the field is a valid date. The <code>Locale</code> is |
|
134 | * used with <code>java.text.DateFormat</code>. The setLenient method |
|
135 | * is set to <code>false</code> for all.</p> |
|
136 | * |
|
137 | * @param value The value validation is being performed on. |
|
138 | * @param locale The locale to use for the date format, defaults to the |
|
139 | * system default if null. |
|
140 | * @return true if the value can be converted to a Date. |
|
141 | */ |
|
142 | public static boolean isDate(String value, Locale locale) { |
|
143 | 0 | return DateValidator.getInstance().isValid(value, locale); |
144 | } |
|
145 | ||
146 | /** |
|
147 | * <p>Checks if the field is a valid date. The pattern is used with |
|
148 | * <code>java.text.SimpleDateFormat</code>. If strict is true, then the |
|
149 | * length will be checked so '2/12/1999' will not pass validation with |
|
150 | * the format 'MM/dd/yyyy' because the month isn't two digits. |
|
151 | * The setLenient method is set to <code>false</code> for all.</p> |
|
152 | * |
|
153 | * @param value The value validation is being performed on. |
|
154 | * @param datePattern The pattern passed to <code>SimpleDateFormat</code>. |
|
155 | * @param strict Whether or not to have an exact match of the datePattern. |
|
156 | * @return true if the value can be converted to a Date. |
|
157 | */ |
|
158 | public static boolean isDate(String value, String datePattern, class="keyword">boolean strict) { |
|
159 | 0 | return DateValidator.getInstance().isValid(value, datePattern, strict); |
160 | } |
|
161 | ||
162 | /** |
|
163 | * <p>Checks if a value is within a range (min & max specified |
|
164 | * in the vars attribute).</p> |
|
165 | * |
|
166 | * @param value The value validation is being performed on. |
|
167 | * @param min The minimum value of the range. |
|
168 | * @param max The maximum value of the range. |
|
169 | * @return true if the value is in the specified range. |
|
170 | */ |
|
171 | public static boolean isInRange(byte value, byte min, byte max) { |
|
172 | 0 | return ((value >= min) && (value <= max)); |
173 | } |
|
174 | ||
175 | /** |
|
176 | * <p>Checks if a value is within a range (min & max specified |
|
177 | * in the vars attribute).</p> |
|
178 | * |
|
179 | * @param value The value validation is being performed on. |
|
180 | * @param min The minimum value of the range. |
|
181 | * @param max The maximum value of the range. |
|
182 | * @return true if the value is in the specified range. |
|
183 | */ |
|
184 | public static boolean isInRange(int value, class="keyword">int min, class="keyword">int max) { |
|
185 | 0 | return ((value >= min) && (value <= max)); |
186 | } |
|
187 | ||
188 | /** |
|
189 | * <p>Checks if a value is within a range (min & max specified |
|
190 | * in the vars attribute).</p> |
|
191 | * |
|
192 | * @param value The value validation is being performed on. |
|
193 | * @param min The minimum value of the range. |
|
194 | * @param max The maximum value of the range. |
|
195 | * @return true if the value is in the specified range. |
|
196 | */ |
|
197 | public static boolean isInRange(float value, class="keyword">float min, class="keyword">float max) { |
|
198 | 0 | return ((value >= min) && (value <= max)); |
199 | } |
|
200 | ||
201 | /** |
|
202 | * <p>Checks if a value is within a range (min & max specified |
|
203 | * in the vars attribute).</p> |
|
204 | * |
|
205 | * @param value The value validation is being performed on. |
|
206 | * @param min The minimum value of the range. |
|
207 | * @param max The maximum value of the range. |
|
208 | * @return true if the value is in the specified range. |
|
209 | */ |
|
210 | public static boolean isInRange(short value, class="keyword">short min, class="keyword">short max) { |
|
211 | 0 | return ((value >= min) && (value <= max)); |
212 | } |
|
213 | ||
214 | /** |
|
215 | * <p>Checks if a value is within a range (min & max specified |
|
216 | * in the vars attribute).</p> |
|
217 | * |
|
218 | * @param value The value validation is being performed on. |
|
219 | * @param min The minimum value of the range. |
|
220 | * @param max The maximum value of the range. |
|
221 | * @return true if the value is in the specified range. |
|
222 | */ |
|
223 | public static boolean isInRange(long value, class="keyword">long min, class="keyword">long max) { |
|
224 | 0 | return ((value >= min) && (value <= max)); |
225 | } |
|
226 | ||
227 | /** |
|
228 | * <p>Checks if a value is within a range (min & max specified |
|
229 | * in the vars attribute).</p> |
|
230 | * |
|
231 | * @param value The value validation is being performed on. |
|
232 | * @param min The minimum value of the range. |
|
233 | * @param max The maximum value of the range. |
|
234 | * @return true if the value is in the specified range. |
|
235 | */ |
|
236 | public static boolean isInRange(double value, class="keyword">double min, class="keyword">double max) { |
|
237 | 0 | return ((value >= min) && (value <= max)); |
238 | } |
|
239 | ||
240 | /** |
|
241 | * Checks if the field is a valid credit card number. |
|
242 | * @param value The value validation is being performed on. |
|
243 | * @return true if the value is valid Credit Card Number. |
|
244 | */ |
|
245 | public static boolean isCreditCard(String value) { |
|
246 | 0 | return CREDIT_CARD_VALIDATOR.isValid(value); |
247 | } |
|
248 | ||
249 | /** |
|
250 | * <p>Checks if a field has a valid e-mail address.</p> |
|
251 | * |
|
252 | * @param value The value validation is being performed on. |
|
253 | * @return true if the value is valid Email Address. |
|
254 | */ |
|
255 | public static boolean isEmail(String value) { |
|
256 | 29 | return EmailValidator.getInstance().isValid(value); |
257 | } |
|
258 | ||
259 | /** |
|
260 | * <p>Checks if a field is a valid url address.</p> |
|
261 | * If you need to modify what is considered valid then |
|
262 | * consider using the UrlValidator directly. |
|
263 | * |
|
264 | * @param value The value validation is being performed on. |
|
265 | * @return true if the value is valid Url. |
|
266 | */ |
|
267 | public static boolean isUrl(String value) { |
|
268 | 0 | return URL_VALIDATOR.isValid(value); |
269 | } |
|
270 | ||
271 | /** |
|
272 | * <p>Checks if the value's length is less than or equal to the max.</p> |
|
273 | * |
|
274 | * @param value The value validation is being performed on. |
|
275 | * @param max The maximum length. |
|
276 | * @return true if the value's length is less than the specified maximum. |
|
277 | */ |
|
278 | public static boolean maxLength(String value, int max) { |
|
279 | 0 | return (value.length() <= max); |
280 | } |
|
281 | ||
282 | /** |
|
283 | * <p>Checks if the value's adjusted length is less than or equal to the max.</p> |
|
284 | * |
|
285 | * @param value The value validation is being performed on. |
|
286 | * @param max The maximum length. |
|
287 | * @param lineEndLength The length to use for line endings. |
|
288 | * @return true if the value's length is less than the specified maximum. |
|
289 | */ |
|
290 | public static boolean maxLength(String value, int max, class="keyword">int lineEndLength) { |
|
291 | 12 | int adjustAmount = adjustForLineEnding(value, lineEndLength); |
292 | 12 | return ((value.length() + adjustAmount) <= max); |
293 | } |
|
294 | ||
295 | /** |
|
296 | * <p>Checks if the value's length is greater than or equal to the min.</p> |
|
297 | * |
|
298 | * @param value The value validation is being performed on. |
|
299 | * @param min The minimum length. |
|
300 | * @return true if the value's length is more than the specified minimum. |
|
301 | */ |
|
302 | public static boolean minLength(String value, int min) { |
|
303 | 0 | return (value.length() >= min); |
304 | } |
|
305 | ||
306 | /** |
|
307 | * <p>Checks if the value's adjusted length is greater than or equal to the min.</p> |
|
308 | * |
|
309 | * @param value The value validation is being performed on. |
|
310 | * @param min The minimum length. |
|
311 | * @param lineEndLength The length to use for line endings. |
|
312 | * @return true if the value's length is more than the specified minimum. |
|
313 | */ |
|
314 | public static boolean minLength(String value, int min, class="keyword">int lineEndLength) { |
|
315 | 12 | int adjustAmount = adjustForLineEnding(value, lineEndLength); |
316 | 12 | return ((value.length() + adjustAmount) >= min); |
317 | } |
|
318 | ||
319 | /** |
|
320 | * Calculate an adjustment amount for line endings. |
|
321 | * |
|
322 | * See Bug 37962 for the rational behind this. |
|
323 | * |
|
324 | * @param value The value validation is being performed on. |
|
325 | * @param lineEndLength The length to use for line endings. |
|
326 | * @return the adjustment amount. |
|
327 | */ |
|
328 | private static int adjustForLineEnding(String value, class="keyword">int lineEndLength) { |
|
329 | 24 | int nCount = 0; |
330 | 24 | int rCount = 0; |
331 | 192 | for (int i = 0; i < value.length(); i++) { |
332 | 168 | if (value.charAt(i) == '\n') { |
333 | 24 | nCount++; |
334 | } |
|
335 | 168 | if (value.charAt(i) == '\r') { |
336 | 24 | rCount++; |
337 | } |
|
338 | } |
|
339 | 24 | return ((nCount * lineEndLength) - (rCount + nCount)); |
340 | } |
|
341 | ||
342 | // See http://issues.apache.org/bugzilla/show_bug.cgi?id=29015 WRT the "value" methods |
|
343 | ||
344 | /** |
|
345 | * <p>Checks if the value is greater than or equal to the min.</p> |
|
346 | * |
|
347 | * @param value The value validation is being performed on. |
|
348 | * @param min The minimum numeric value. |
|
349 | * @return true if the value is >= the specified minimum. |
|
350 | */ |
|
351 | public static boolean minValue(int value, class="keyword">int min) { |
|
352 | 0 | return (value >= min); |
353 | } |
|
354 | ||
355 | /** |
|
356 | * <p>Checks if the value is greater than or equal to the min.</p> |
|
357 | * |
|
358 | * @param value The value validation is being performed on. |
|
359 | * @param min The minimum numeric value. |
|
360 | * @return true if the value is >= the specified minimum. |
|
361 | */ |
|
362 | public static boolean minValue(long value, class="keyword">long min) { |
|
363 | 0 | return (value >= min); |
364 | } |
|
365 | ||
366 | /** |
|
367 | * <p>Checks if the value is greater than or equal to the min.</p> |
|
368 | * |
|
369 | * @param value The value validation is being performed on. |
|
370 | * @param min The minimum numeric value. |
|
371 | * @return true if the value is >= the specified minimum. |
|
372 | */ |
|
373 | public static boolean minValue(double value, class="keyword">double min) { |
|
374 | 0 | return (value >= min); |
375 | } |
|
376 | ||
377 | /** |
|
378 | * <p>Checks if the value is greater than or equal to the min.</p> |
|
379 | * |
|
380 | * @param value The value validation is being performed on. |
|
381 | * @param min The minimum numeric value. |
|
382 | * @return true if the value is >= the specified minimum. |
|
383 | */ |
|
384 | public static boolean minValue(float value, class="keyword">float min) { |
|
385 | 0 | return (value >= min); |
386 | } |
|
387 | ||
388 | /** |
|
389 | * <p>Checks if the value is less than or equal to the max.</p> |
|
390 | * |
|
391 | * @param value The value validation is being performed on. |
|
392 | * @param max The maximum numeric value. |
|
393 | * @return true if the value is <= the specified maximum. |
|
394 | */ |
|
395 | public static boolean maxValue(int value, class="keyword">int max) { |
|
396 | 0 | return (value <= max); |
397 | } |
|
398 | ||
399 | /** |
|
400 | * <p>Checks if the value is less than or equal to the max.</p> |
|
401 | * |
|
402 | * @param value The value validation is being performed on. |
|
403 | * @param max The maximum numeric value. |
|
404 | * @return true if the value is <= the specified maximum. |
|
405 | */ |
|
406 | public static boolean maxValue(long value, class="keyword">long max) { |
|
407 | 0 | return (value <= max); |
408 | } |
|
409 | ||
410 | /** |
|
411 | * <p>Checks if the value is less than or equal to the max.</p> |
|
412 | * |
|
413 | * @param value The value validation is being performed on. |
|
414 | * @param max The maximum numeric value. |
|
415 | * @return true if the value is <= the specified maximum. |
|
416 | */ |
|
417 | public static boolean maxValue(double value, class="keyword">double max) { |
|
418 | 0 | return (value <= max); |
419 | } |
|
420 | ||
421 | /** |
|
422 | * <p>Checks if the value is less than or equal to the max.</p> |
|
423 | * |
|
424 | * @param value The value validation is being performed on. |
|
425 | * @param max The maximum numeric value. |
|
426 | * @return true if the value is <= the specified maximum. |
|
427 | */ |
|
428 | public static boolean maxValue(float value, class="keyword">float max) { |
|
429 | 0 | return (value <= max); |
430 | } |
|
431 | ||
432 | } |
This report is generated by jcoverage, Maven and Maven JCoverage Plugin. |