Class VerhoeffCheckDigit

java.lang.Object
org.apache.commons.validator.routines.checkdigit.VerhoeffCheckDigit
All Implemented Interfaces:
Serializable, CheckDigit

public final class VerhoeffCheckDigit extends Object implements CheckDigit, Serializable
Verhoeff (Dihedral) Check Digit calculation/validation.

Check digit calculation for numeric codes using a Dihedral Group of order 10.

See Wikipedia - Verhoeff algorithm for more details.

Since:
Validator 1.4
Version:
$Revision: 1649191 $
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • VERHOEFF_CHECK_DIGIT

      public static final CheckDigit VERHOEFF_CHECK_DIGIT
      Singleton Verhoeff Check Digit instance
    • D_TABLE

      private static final int[][] D_TABLE
      D - multiplication table
    • P_TABLE

      private static final int[][] P_TABLE
      P - permutation table
    • INV_TABLE

      private static final int[] INV_TABLE
      inv: inverse table
  • Constructor Details

    • VerhoeffCheckDigit

      public VerhoeffCheckDigit()
  • Method Details

    • isValid

      public boolean isValid(String code)
      Validate the Verhoeff Check Digit for a code.
      Specified by:
      isValid in interface CheckDigit
      Parameters:
      code - The code to validate
      Returns:
      true if the check digit is valid, otherwise false
    • calculate

      public String calculate(String code) throws CheckDigitException
      Calculate a Verhoeff Check Digit for a code.
      Specified by:
      calculate in interface CheckDigit
      Parameters:
      code - The code to calculate the Check Digit for
      Returns:
      The calculated Check Digit
      Throws:
      CheckDigitException - if an error occurs calculating the check digit for the specified code
    • calculateChecksum

      private int calculateChecksum(String code, boolean includesCheckDigit) throws CheckDigitException
      Calculate the checksum.
      Parameters:
      code - The code to calculate the checksum for.
      includesCheckDigit - Whether the code includes the Check Digit or not.
      Returns:
      The checksum value
      Throws:
      CheckDigitException - if the code contains an invalid character (i.e. not numeric)