Class CUSIPCheckDigit
java.lang.Object
org.apache.commons.validator.routines.checkdigit.ModulusCheckDigit
org.apache.commons.validator.routines.checkdigit.CUSIPCheckDigit
- All Implemented Interfaces:
Serializable
,CheckDigit
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 Summary
FieldsModifier and TypeFieldDescriptionstatic final CheckDigit
Singleton CUSIP Check Digit instanceprivate static final int[]
weighting given to digits depending on their right positionprivate static final long
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected 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
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
CUSIP_CHECK_DIGIT
Singleton CUSIP Check Digit instance -
POSITION_WEIGHT
private static final int[] POSITION_WEIGHTweighting given to digits depending on their right position
-
-
Constructor Details
-
CUSIPCheckDigit
public CUSIPCheckDigit()Construct an CUSIP Indetifier Check Digit routine.
-
-
Method Details
-
toInt
Convert a character at a specified position to an integer value.- Overrides:
toInt
in classModulusCheckDigit
- Parameters:
character
- The character to convertleftPos
- The position of the character in the code, counting from left to rightrightPos
- 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 classModulusCheckDigit
- Parameters:
charValue
- The numeric value of the character.leftPos
- The position of the character in the code, counting from left to rightrightPos
- The positionof the character in the code, counting from right to left- Returns:
- The weighted value of the character.
-