Class CodeValidator

java.lang.Object
org.apache.commons.validator.routines.CodeValidator
All Implemented Interfaces:
Serializable

public final class CodeValidator extends Object implements Serializable
Generic Code Validation providing format, minimum/maximum length and CheckDigit validations.

Performs the following validations on a code:

  • if the code is null, return null/false as appropriate
  • trim the input. If the resulting code is empty, return null/false as appropriate
  • Check the format of the code using a regular expression. (if specified)
  • Check the minimum and maximum length (if specified) of the parsed code (i.e. parsed by the regular expression).
  • Performs CheckDigit validation on the parsed code (if specified).
  • The validate(String) method returns the trimmed, parsed input (or null if validation failed)

Note The isValid(String) method will return true if the input passes validation. Since this includes trimming as well as potentially dropping parts of the input, it is possible for a String to pass validation but fail the checkdigit test if passed directly to it (the check digit routines generally don't trim input nor do they generally check the format/length). To be sure that you are passing valid input to a method use validate(String) as follows:

 Object valid = validator.validate(input);
 if (valid != null) {
    some_method(valid.toString());
 }
 

Configure the validator with the appropriate regular expression, minimum/maximum length and CheckDigit validator and then call one of the two validation methods provided:

  • boolean isValid(code)
  • String validate(code)

Codes often include format characters - such as hyphens - to make them more easily human readable. These can be removed prior to length and check digit validation by specifying them as a non-capturing group in the regular expression (i.e. use the (?: ) notation).
Or just avoid using parentheses except for the parts you want to capture

Since:
1.4
See Also:
  • Constructor Details

    • CodeValidator

      public CodeValidator(RegexValidator regexValidator, CheckDigit checkdigit)
      Constructs a code validator with a specified regular expression, validator and CheckDigit validation.
      Parameters:
      regexValidator - The format regular expression validator
      checkdigit - The check digit validation routine.
    • CodeValidator

      public CodeValidator(RegexValidator regexValidator, int length, CheckDigit checkdigit)
      Constructs a code validator with a specified regular expression, validator, length and CheckDigit validation.
      Parameters:
      regexValidator - The format regular expression validator
      length - The length of the code (sets the mimimum/maximum to the same value)
      checkdigit - The check digit validation routine
    • CodeValidator

      public CodeValidator(RegexValidator regexValidator, int minLength, int maxLength, CheckDigit checkdigit)
      Constructs a code validator with a specified regular expression validator, minimum/maximum length and CheckDigit validation.
      Parameters:
      regexValidator - The format regular expression validator
      minLength - The minimum length of the code
      maxLength - The maximum length of the code
      checkdigit - The check digit validation routine
    • CodeValidator

      public CodeValidator(String regex, CheckDigit checkdigit)
      Constructs a code validator with a specified regular expression and CheckDigit. The RegexValidator validator is created to be case-sensitive
      Parameters:
      regex - The format regular expression
      checkdigit - The check digit validation routine
    • CodeValidator

      public CodeValidator(String regex, int length, CheckDigit checkdigit)
      Constructs a code validator with a specified regular expression, length and CheckDigit. The RegexValidator validator is created to be case-sensitive
      Parameters:
      regex - The format regular expression.
      length - The length of the code (sets the mimimum/maximum to the same)
      checkdigit - The check digit validation routine
    • CodeValidator

      public CodeValidator(String regex, int minLength, int maxLength, CheckDigit checkdigit)
      Constructs a code validator with a specified regular expression, minimum/maximum length and CheckDigit validation. The RegexValidator validator is created to be case-sensitive
      Parameters:
      regex - The regular expression
      minLength - The minimum length of the code
      maxLength - The maximum length of the code
      checkdigit - The check digit validation routine
  • Method Details

    • getCheckDigit

      Return the check digit validation routine.

      N.B. Optional, if not set no Check Digit validation will be performed on the code.

      Returns:
      The check digit validation routine
    • getMaxLength

      public int getMaxLength()
      Return the maximum length of the code.

      N.B. Optional, if less than zero the maximum length will not be checked.

      Returns:
      The maximum length of the code or -1 if the code has no maximum length
    • getMinLength

      public int getMinLength()
      Return the minimum length of the code.

      N.B. Optional, if less than zero the minimum length will not be checked.

      Returns:
      The minimum length of the code or -1 if the code has no minimum length
    • getRegexValidator

      Return the regular expression validator.

      N.B. Optional, if not set no regular expression validation will be performed on the code.

      Returns:
      The regular expression validator
    • isValid

      public boolean isValid(String input)
      Validate the code returning either true or false.

      This calls validate(String) and returns false if the return value is null, true otherwise.

      Note that validate(String) trims the input and if there is a RegexValidator it may also change the input as part of the validation.

      Parameters:
      input - The code to validate
      Returns:
      true if valid, otherwise false
    • validate

      public Object validate(String input)
      Validate the code returning either the valid code or null if invalid.

      Note that this method trims the input and if there is a RegexValidator it may also change the input as part of the validation.

      Parameters:
      input - The code to validate
      Returns:
      The code if valid, otherwise null if invalid