java.io.Serializable
, CheckDigit
ABANumberCheckDigit
, CUSIPCheckDigit
, EAN13CheckDigit
, ISBN10CheckDigit
, ISINCheckDigit
, ISSNCheckDigit
, LuhnCheckDigit
, ModulusTenCheckDigit
, SedolCheckDigit
public abstract class ModulusCheckDigit extends java.lang.Object implements CheckDigit, java.io.Serializable
Provides a base class for building modulus Check Digit routines.
This implementation only handles single-digit numeric codes, such as
EAN-13. For alphanumeric codes such as EAN-128 you
will need to implement/override the toInt()
and
toChar()
methods.
Constructor | Description |
---|---|
ModulusCheckDigit(int modulus) |
Construct a
CheckDigit routine for a specified modulus. |
Modifier and Type | Method | Description |
---|---|---|
java.lang.String |
calculate(java.lang.String code) |
Calculate a modulus Check Digit for a code which does not yet have one.
|
protected int |
calculateModulus(java.lang.String code,
boolean includesCheckDigit) |
Calculate the modulus for a code.
|
int |
getModulus() |
Return the modulus value this check digit routine is based on.
|
boolean |
isValid(java.lang.String code) |
Validate a modulus check digit for a code.
|
static int |
sumDigits(int number) |
Add together the individual digits in a number.
|
protected java.lang.String |
toCheckDigit(int charValue) |
Convert an integer value to a check digit.
|
protected int |
toInt(char character,
int leftPos,
int rightPos) |
Convert a character at a specified position to an integer value.
|
protected abstract int |
weightedValue(int charValue,
int leftPos,
int rightPos) |
Calculates the weighted value of a character in the
code at a specified position.
|
public ModulusCheckDigit(int modulus)
CheckDigit
routine for a specified modulus.modulus
- The modulus value to use for the check digit calculationpublic int getModulus()
public boolean isValid(java.lang.String code)
isValid
in interface CheckDigit
code
- The code to validatetrue
if the check digit is valid, otherwise
false
public java.lang.String calculate(java.lang.String code) throws CheckDigitException
calculate
in interface CheckDigit
code
- The code for which to calculate the Check Digit;
the check digit should not be includedCheckDigitException
- if an error occurs calculating the check digitprotected int calculateModulus(java.lang.String code, boolean includesCheckDigit) throws CheckDigitException
code
- The code to calculate the modulus for.includesCheckDigit
- Whether the code includes the Check Digit or not.CheckDigitException
- if an error occurs calculating the modulus
for the specified codeprotected abstract int weightedValue(int charValue, int leftPos, int rightPos) throws CheckDigitException
Some modulus routines weight the value of a character depending on its position in the code (e.g. ISBN-10), while others use different weighting factors for odd/even positions (e.g. EAN or Luhn). Implement the appropriate mechanism required by overriding this method.
charValue
- The numeric value of the characterleftPos
- The position of the character in the code, counting from left to rightrightPos
- The positionof the character in the code, counting from right to leftCheckDigitException
- if an error occurs calculating
the weighted valueprotected int toInt(char character, int leftPos, int rightPos) throws CheckDigitException
Note: this implementation only handlers numeric values For non-numeric characters, override this method to provide character-->integer conversion.
character
- The character to convertleftPos
- The position of the character in the code, counting from left to right (for identifiying the position in the string)rightPos
- The position of the character in the code, counting from right to left (not used here)CheckDigitException
- if character is non-numericprotected java.lang.String toCheckDigit(int charValue) throws CheckDigitException
Note: this implementation only handles single-digit numeric values For non-numeric characters, override this method to provide integer-->character conversion.
charValue
- The integer value of the characterCheckDigitException
- if integer character value
doesn't represent a numeric characterpublic static int sumDigits(int number)
number
- The number whose digits are to be addedCopyright © 2002–2018. All rights reserved.