View Javadoc

1   /*
2    * $Header: /home/cvs/jakarta-commons/validator/src/share/org/apache/commons/validator/GenericValidator.java,v 1.29 2004/02/21 17:10:29 rleland Exp $
3    * $Revision: 1.29 $
4    * $Date: 2004/02/21 17:10:29 $
5    *
6    * ====================================================================
7    * Copyright 2001-2004 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  public class GenericValidator implements Serializable {
33  
34      /***
35       * Delimiter to put around a regular expression following Perl 5 syntax.
36       * @deprecated Use ValidatorUtils.REGEXP_DELIMITER instead.
37       */
38      public final static String REGEXP_DELIM = ValidatorUtil.REGEXP_DELIMITER;
39  
40      /***
41       * UrlValidator used in wrapper method.
42       */
43      private static final UrlValidator urlValidator = new UrlValidator();
44  
45      /***
46       * CreditCardValidator used in wrapper method.
47       */
48      private static final CreditCardValidator creditCardValidator =
49              new CreditCardValidator();
50  
51      /***
52       * <p>Checks if the field isn't null and length of the field is greater than zero not
53       * including whitespace.</p>
54       *
55       * @param value The value validation is being performed on.
56       */
57      public static boolean isBlankOrNull(String value) {
58          return ((value == null) || (value.trim().length() == 0));
59      }
60  
61      /***
62       * <p>Checks if the value matches the regular expression.</p>
63       *
64       * @param value The value validation is being performed on.
65       * @param regexp The regular expression.
66       */
67      public static boolean matchRegexp(String value, String regexp) {
68          if (regexp == null || regexp.length() <= 0) {
69              return false;
70          }
71  
72          Perl5Util matcher = new Perl5Util();
73          return matcher.match("/" + regexp + "/", value);
74      }
75  
76      /***
77       * <p>Checks if the value can safely be converted to a byte primitive.</p>
78       *
79       * @param     value         The value validation is being performed on.
80       */
81      public static boolean isByte(String value) {
82          return (GenericTypeValidator.formatByte(value) != null);
83      }
84  
85      /***
86       * <p>Checks if the value can safely be converted to a short primitive.</p>
87       *
88       * @param     value         The value validation is being performed on.
89       */
90      public static boolean isShort(String value) {
91          return (GenericTypeValidator.formatShort(value) != null);
92      }
93  
94      /***
95       * <p>Checks if the value can safely be converted to a int primitive.</p>
96       *
97       * @param     value         The value validation is being performed on.
98       */
99      public static boolean isInt(String value) {
100         return (GenericTypeValidator.formatInt(value) != null);
101     }
102 
103     /***
104      * <p>Checks if the value can safely be converted to a long primitive.</p>
105      *
106      * @param value The value validation is being performed on.
107      */
108     public static boolean isLong(String value) {
109         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      */
117     public static boolean isFloat(String value) {
118         return (GenericTypeValidator.formatFloat(value) != null);
119     }
120 
121     /***
122      * <p>Checks if the value can safely be converted to a double primitive.</p>
123      *
124      * @param value The value validation is being performed on.
125      */
126     public static boolean isDouble(String value) {
127         return (GenericTypeValidator.formatDouble(value) != null);
128     }
129 
130     /***
131      * <p>Checks if the field is a valid date.  The <code>Locale</code> is
132      * used with <code>java.text.DateFormat</code>.  The setLenient method
133      * is set to <code>false</code> for all.</p>
134      *
135      * @param value The value validation is being performed on.
136      * @param locale The locale to use for the date format, defaults to the default
137      * system default if null.
138      */
139     public static boolean isDate(String value, Locale locale) {
140         return DateValidator.getInstance().isValid(value, locale);
141     }
142 
143     /***
144      * <p>Checks if the field is a valid date.  The pattern is used with
145      * <code>java.text.SimpleDateFormat</code>.  If strict is true, then the
146      * length will be checked so '2/12/1999' will not pass validation with
147      * the format 'MM/dd/yyyy' because the month isn't two digits.
148      * The setLenient method is set to <code>false</code> for all.</p>
149      *
150      * @param value The value validation is being performed on.
151      * @param datePattern The pattern passed to <code>SimpleDateFormat</code>.
152      * @param strict Whether or not to have an exact match of the datePattern.
153      */
154     public static boolean isDate(String value, String datePattern, boolean strict) {
155         return DateValidator.getInstance().isValid(value, datePattern, strict);
156     }
157 
158     /***
159 	* <p>Checks if a value is within a range (min &amp; max specified
160 	* in the vars attribute).</p>
161 	*
162 	* @param 	value 		The value validation is being performed on.
163 	* @param 	min		The minimum value of the range.
164 	* @param 	max		The maximum value of the range.
165 	*/
166    public static boolean isInRange(byte value, byte min, byte max) {
167 	  return ((value >= min) && (value <= max));
168    }
169 
170     /***
171      * <p>Checks if a value is within a range (min &amp; max specified
172      * in the vars attribute).</p>
173      *
174      * @param     value      The value validation is being performed on.
175      * @param     min        The minimum value of the range.
176      * @param     max        The maximum value of the range.
177      */
178     public static boolean isInRange(int value, int min, int max) {
179         return ((value >= min) && (value <= max));
180     }
181 
182     /***
183      * <p>Checks if a value is within a range (min &amp; max specified
184      * in the vars attribute).</p>
185      *
186      * @param     value      The value validation is being performed on.
187      * @param     min        The minimum value of the range.
188      * @param     max        The maximum value of the range.
189      */
190     public static boolean isInRange(float value, float min, float max) {
191         return ((value >= min) && (value <= max));
192     }
193 
194     /***
195      * <p>Checks if a value is within a range (min &amp; max specified
196      * in the vars attribute).</p>
197      *
198      * @param     value      The value validation is being performed on.
199      * @param     min        The minimum value of the range.
200      * @param     max        The maximum value of the range.
201      */
202     public static boolean isInRange(short value, short min, short max) {
203         return ((value >= min) && (value <= max));
204     }
205 
206    /***
207     * <p>Checks if a value is within a range (min &amp; max specified
208     * in the vars attribute).</p>
209     *
210     * @param 	value 		The value validation is being performed on.
211     * @param 	min		The minimum value of the range.
212     * @param 	max		The maximum value of the range.
213     */
214    public static boolean isInRange(long value, long min, long max) {
215       return ((value >= min) && (value <= max));
216    }
217 
218     /***
219      * <p>Checks if a value is within a range (min &amp; max specified
220      * in the vars attribute).</p>
221      *
222      * @param     value      The value validation is being performed on.
223      * @param     min        The minimum value of the range.
224      * @param     max        The maximum value of the range.
225      */
226     public static boolean isInRange(double value, double min, double max) {
227         return ((value >= min) && (value <= max));
228     }
229 
230     /***
231      * Checks if the field is a valid credit card number.
232      * @param value The value validation is being performed on.
233      */
234     public static boolean isCreditCard(String value) {
235         return creditCardValidator.isValid(value);
236     }
237 
238     /***
239      * Checks for a valid credit card number.
240      *
241      * @param cardNumber Credit Card Number.
242      * @deprecated This functionality has moved to CreditCardValidator.
243      */
244     protected static boolean validateCreditCardLuhnCheck(String cardNumber) {
245         return (new CreditCardValidator()).luhnCheck(cardNumber);
246     }
247 
248     /***
249      * Checks for a valid credit card number.
250      *
251      * @param cardNumber Credit Card Number.
252      * @deprecated This functionality has move to CreditCardValidator.
253      */
254     protected boolean validateCreditCardPrefixCheck(String cardNumber) {
255         return (new CreditCardValidator()).isValidPrefix(cardNumber);
256     }
257 
258     /***
259      * <p>Checks if a field has a valid e-mail address.</p>
260      *
261      * @param value The value validation is being performed on.
262      */
263     public static boolean isEmail(String value) {
264         return EmailValidator.getInstance().isValid(value);
265     }
266 
267     /***
268      * <p>Checks if a field is a valid url address.</p>
269      * If you need to modify what is considered valid then
270      * consider using the UrlValidator directly.
271      *
272      * @param value The value validation is being performed on.
273      */
274     public static boolean isUrl(String value) {
275         return urlValidator.isValid(value);
276     }
277 
278     /***
279      * <p>Checks if the value's length is less than or equal to the max.</p>
280      *
281      * @param value The value validation is being performed on.
282      * @param max The maximum length.
283      */
284     public static boolean maxLength(String value, int max) {
285         return (value.length() <= max);
286     }
287 
288     /***
289      * <p>Checks if the value's length is greater than or equal to the min.</p>
290      *
291      * @param     value         The value validation is being performed on.
292      * @param     min        The minimum length.
293      */
294     public static boolean minLength(String value, int min) {
295         return (value.length() >= min);
296     }
297 
298     /***
299      * Adds a '/' on either side of the regular expression.
300      * @deprecated use ValidatorUtils.getDelimitedRegExp() instead.
301      */
302     protected static String getDelimittedRegexp(String regexp) {
303         return ValidatorUtil.getDelimitedRegExp(regexp);
304     }
305 }