Coverage report

  %line %branch
org.apache.commons.validator.GenericValidator
47% 
97% 

 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &lt;= 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 &lt;= 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 &lt;= 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 &lt;= 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.