public final class ABANumberValidator extends Object
ABA Numbers (or Routing Transit Numbers) are a nine digit numeric code used to identify American financial institutions for things such as checks or deposits (ABA stands for the American Bankers Association).
Check digit calculation is based on modulus 10 with digits being weighted based on their position (from right to left) as follows:
For further information see Wikipedia - Routing transit number.
Constructor and Description |
---|
ABANumberValidator() |
Modifier and Type | Method and Description |
---|---|
void |
initialize(A annotation) |
boolean |
isValid(String code,
javax.validation.ConstraintValidatorContext context) |
protected static int |
sumDigits(int number)
Add together the individual digits in a number.
|
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 character in the
code at a specified position.
|
protected int weightedValue(int charValue, int leftPos, int rightPos) throws Exception
ABA Routing numbers are weighted in the following manner:
left position: 1 2 3 4 5 6 7 8 9
weight: 3 7 1 3 7 1 3 7 1
Calculates the weighted value of a character in the
code at a specified position.
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 position of the character in the code, counting from right to leftException
public final void initialize(A annotation)
initialize
in interface javax.validation.ConstraintValidator<A extends Annotation,String>
public boolean isValid(String code, javax.validation.ConstraintValidatorContext context)
isValid
in interface javax.validation.ConstraintValidator<A extends Annotation,String>
protected int toInt(char character, int leftPos, int rightPos)
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 rightrightPos
- The positionof the character in the code, counting from right to leftprotected static int sumDigits(int number)
number
- The number whose digits are to be addedCopyright © 2010–2013 The Apache Software Foundation. All rights reserved.