Class Modulus10_731CheckDigit

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

public class Modulus10_731CheckDigit extends ModulusCheckDigit implements IsoIecConstants
Modulus 10 module for Check Digit calculation/validation of machine-readable travel document (MRTD).

MRTD has alphanumeric code. The last (check) digit is numeric.

Check digit calculation is based on modulus 10 with digits being weighted based by their position, to left to right.

See International Civil Aviation Organization, Doc 9303: Machine Readable Travel Documents, Part 3: Specifications Common to all MRTDs for more details.

Since:
2.10.5
See Also:
  • Method Details

    • getInstance

      public static CheckDigit getInstance()
      Gets the singleton instance of this class.
      Returns:
      A singleton instance of the class.
    • weightedValue

      protected int weightedValue(int charValue, int leftPos, int rightPos)
      Calculates the weighted value of a character in the code at a specified position.

      MRTD numbers are weighted in the following manner:

      
           left position: 1  2  3  4  5  6  7  8  9
                  weight: 7  3  1  7  3  1  7  3  1
       
      Specified by:
      weightedValue in class ModulusCheckDigit
      Parameters:
      charValue - The numeric value of the character.
      leftPos - The position of the character in the code, counting from left to right
      rightPos - The position of the character in the code, counting from right to left
      Returns:
      The weighted value of the character.
    • getCharacterSet

      protected String getCharacterSet()
    • toInt

      protected int toInt(char character, int leftPos, int rightPos) throws CheckDigitException
      Convert a character at a specified position to an integer value.

      Note: this implementation only handlers numeric values For non-numeric characters, override this method to provide character-->integer conversion.

      Overrides to handle numeric, alphabetic or alphanumeric values respectively.

      Overrides:
      toInt in class ModulusCheckDigit
      Parameters:
      character - The character to convert
      leftPos - The position of the character in the code, counting from left to right (for identifiying the position in the string)
      rightPos - The position of the character in the code, counting from right to left (not used here)
      Returns:
      The integer value of the character
      Throws:
      CheckDigitException - if character is non-numeric
    • calculate

      public String calculate(String code) throws CheckDigitException
      Description copied from class: ModulusCheckDigit
      Calculate a modulus Check Digit for a code which does not yet have one.
      Specified by:
      calculate in interface CheckDigit
      Overrides:
      calculate in class ModulusCheckDigit
      Parameters:
      code - The code for which to calculate the Check Digit; the check digit should not be included
      Returns:
      The calculated Check Digit
      Throws:
      CheckDigitException - if an error occurs calculating the check digit
    • isValid

      public boolean isValid(String code)
      Validate a modulus check digit for a code.
      Specified by:
      isValid in interface CheckDigit
      Overrides:
      isValid in class ModulusCheckDigit
      Parameters:
      code - The code to validate
      Returns:
      true if the check digit is valid, otherwise false