Class CUSIPCheckDigit

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

public final class CUSIPCheckDigit extends ModulusCheckDigit
Modulus 10 CUSIP (North American Securities) Check Digit calculation/validation.

CUSIP Numbers are 9 character alphanumeric codes used to identify North American 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 - CUSIP for more details.

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

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • CUSIP_CHECK_DIGIT

      public static final CheckDigit CUSIP_CHECK_DIGIT
      Singleton CUSIP Check Digit instance
    • POSITION_WEIGHT

      private static final int[] POSITION_WEIGHT
      weighting given to digits depending on their right position
  • Constructor Details

    • CUSIPCheckDigit

      public CUSIPCheckDigit()
      Construct an CUSIP Indetifier Check Digit routine.
  • Method Details

    • toInt

      protected int toInt(char character, int leftPos, int rightPos) throws CheckDigitException
      Convert a character at a specified position to an integer value.
      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
      rightPos - The position of the character in the code, counting from right to left
      Returns:
      The integer value of the character
      Throws:
      CheckDigitException - if character is not alphanumeric
    • weightedValue

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

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

      For CUSIP (from right to left) odd digits are weighted with a factor of one and even digits with a factor of two. Weighted values > 9, have 9 subtracted

      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 positionof the character in the code, counting from right to left
      Returns:
      The weighted value of the character.