Class ABANumberValidator

  • All Implemented Interfaces:
    javax.validation.ConstraintValidator<ABANumber,​CharSequence>

    public final class ABANumberValidator
    extends Object
    Modulus 10 ABA Number (or Routing Transit Number (RTN)) Check Digit calculation/validation.

    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:

    • Digits 1, 4 and & 7 are weighted 1
    • Digits 2, 5 and & 8 are weighted 7
    • Digits 3, 6 and & 9 are weighted 3

    For further information see Wikipedia - Routing transit number.

    • Constructor Detail

      • ABANumberValidator

        public ABANumberValidator()
    • Method Detail

      • weightedValue

        protected int weightedValue​(int charValue,
                                    int leftPos,
                                    int rightPos)
                             throws Exception
        Calculates the weighted value of a character in the code at a specified position.

        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.

        Parameters:
        charValue - The numeric value of the character
        leftPos - The position of the character in the code, counting from left to right
        rightPos - The position of the character in the code, counting from right to left
        Returns:
        The weighted value of the character
        Throws:
        Exception
      • initialize

        public final void initialize​(A annotation)
        Specified by:
        initialize in interface javax.validation.ConstraintValidator<A extends Annotation,​CharSequence>
      • isValid

        public boolean isValid​(CharSequence code,
                               javax.validation.ConstraintValidatorContext context)
        Specified by:
        isValid in interface javax.validation.ConstraintValidator<A extends Annotation,​CharSequence>
      • toInt

        protected int toInt​(char character,
                            int leftPos,
                            int rightPos)
        Convert a character at a specified position to an integer value.

        Note: this implementation only handlers numeric values For non-numeric characters, override this method to provide character-->integer conversion.

        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
      • sumDigits

        protected static int sumDigits​(int number)
        Add together the individual digits in a number.
        Parameters:
        number - The number whose digits are to be added
        Returns:
        The sum of the digits