org.apache.commons.validator.routines.checkdigit
Class CUSIPCheckDigit

java.lang.Object
  extended by org.apache.commons.validator.routines.checkdigit.ModulusCheckDigit
      extended by 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: 1227719 $ $Date: 2012-01-05 18:45:51 +0100 (Thu, 05 Jan 2012) $
See Also:
Serialized Form

Field Summary
static CheckDigit CUSIP_CHECK_DIGIT
          Singleton CUSIP Check Digit instance
 
Constructor Summary
CUSIPCheckDigit()
          Construct an CUSIP Indetifier Check Digit routine.
 
Method Summary
protected  int toInt(char character, int leftPos, int rightPos)
          Convert a character at a specified position to an integer value.
protected  int weightedValue(int charValue, int leftPos, int rightPos)
          Calculates the weighted value of a charcter in the code at a specified position.
 
Methods inherited from class org.apache.commons.validator.routines.checkdigit.ModulusCheckDigit
calculate, calculateModulus, getModulus, isValid, sumDigits, toCheckDigit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CUSIP_CHECK_DIGIT

public static final CheckDigit CUSIP_CHECK_DIGIT
Singleton CUSIP Check Digit instance

Constructor Detail

CUSIPCheckDigit

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

Method Detail

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 positionof 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 Luhn (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.


Copyright © 2002-2012 The Apache Software Foundation. All Rights Reserved.