Class CASNumberCheckDigit
java.lang.Object
org.apache.commons.validator.routines.checkdigit.ModulusCheckDigit
org.apache.commons.validator.routines.checkdigit.CASNumberCheckDigit
- All Implemented Interfaces:
Serializable
,CheckDigit
Modulus 10 CAS Registry Number (or Chemical Abstracts Service (CAS RN)) Check Digit
calculation/validation.
CAS Numbers are unique identification numbers used to identify chemical substance described in the open scientific literature.
Check digit calculation is based on modulus 10 with digits being weighted based on their position (from right to left).
The check digit is found by taking the last digit times 1, the preceding digit times 2,
the preceding digit times 3 etc., adding all these up and computing the sum modulo 10.
For example, the CAS number of water is 7732-18-5
:
the checksum 5 is calculated as (8×1 + 1×2 + 2×3 + 3×4 + 7×5 + 7×6) = 105; 105 mod 10 = 5.
For further information see Wikipedia - CAS Registry Number.
- Since:
- 1.9.0
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionCalculate a modulus Check Digit for a code which does not yet have one.static CheckDigit
Gets the singleton instance of this validator.boolean
Validate a modulus check digit for a code.protected int
weightedValue
(int charValue, int leftPos, int rightPos) Calculates the weighted value of a character in the code at a specified position.Methods inherited from class org.apache.commons.validator.routines.checkdigit.ModulusCheckDigit
calculateModulus, getModulus, sumDigits, toCheckDigit, toInt
-
Method Details
-
getInstance
Gets the singleton instance of this validator.- Returns:
- A singleton instance of the CAS Number validator.
-
weightedValue
Calculates the weighted value of a character in the code at a specified position.CAS numbers are weighted in the following manner:
right position: 1 2 3 4 5 6 7 8 9 10 weight: 1 2 3 4 5 6 7 8 9 0
- 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.
-
calculate
Calculate a modulus Check Digit for a code which does not yet have one.- Specified by:
calculate
in interfaceCheckDigit
- Overrides:
calculate
in classModulusCheckDigit
- 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
Validate a modulus check digit for a code.- Specified by:
isValid
in interfaceCheckDigit
- Overrides:
isValid
in classModulusCheckDigit
- Parameters:
code
- The code to validate- Returns:
true
if the check digit is valid, otherwisefalse
-