Class ISINCheckDigit

All Implemented Interfaces:
Serializable, CheckDigit

public final class ISINCheckDigit extends ModulusCheckDigit
Modulus 10 ISIN (International Securities Identifying Number) Check Digit calculation/validation.

ISIN Numbers are 12 character alphanumeric codes used to identify Securities.

Check digit calculation uses the Modulus 10 Double Add Double technique with every second digit being weighted by 2. Alphabetic characters are converted to numbers by their position in the alphabet starting with A being 10. Weighted numbers greater than ten are treated as two separate numbers.

See Wikipedia - ISIN for more details.

See Also:
  • Field Details

  • Constructor Details

    • ISINCheckDigit

      public ISINCheckDigit()
      Constructs an ISIN Identifier Check Digit routine.
  • Method Details

    • calculateModulus

      protected int calculateModulus(String code, boolean includesCheckDigit) throws CheckDigitException
      Calculate the modulus for an ISIN code.
      calculateModulus in class ModulusCheckDigit
      code - The code to calculate the modulus for.
      includesCheckDigit - Whether the code includes the Check Digit or not.
      The modulus value
      CheckDigitException - if an error occurs calculating the modulus for the specified code
    • weightedValue

      protected int weightedValue(int charValue, int leftPos, int rightPos)

      Calculates the weighted value of a character in the code at a specified position.

      For ISIN (from right to left) odd digits are weighted with a factor of one and even digits with a factor of two. Weighted values are reduced to their digital root

      Specified by:
      weightedValue in class ModulusCheckDigit
      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
      The weighted value of the character.