Annotation Type Mod11Check


Modulo 11 check constraint.

Allows to validate that a series of digits passes the Mod11 checksum algorithm. For the most common Mod11 variant the sum calculation is done by multiplying a weight from the rightmost digit (excluding the check digit) to the leftmost. The weight starts with 2 and increases by 1 for each digit. Then the result is used to calculate the check digit using 11 - ( sum % 11 ).

Example: The check digit for 24187 is 3
Sum = 7x2 + 8x3 + 1x4 + 4x5 + 2x6 = 74
11 - (74 % 11) = 11 - 8 = 3, so "24187-3" is a valid character sequence.

The Mod11 calculation can result in 10 or 11; per default 10 is treated as 'X' and 11 as '0', this behavior can be changed using the options treatCheck10As and treatCheck10As.

Some implementations do the sum calculation in the reverse order (left to right); specify the processing direction Mod11Check.ProcessingDirection.LEFT_TO_RIGHT in this case.

The supported type is CharSequence. null is considered valid.

Author:
George Gastaldi, Hardy Ferentschik, Victor Rezende dos Santos
  • Element Details

    • message

      String message
      Default:
      "{org.hibernate.validator.constraints.Mod11Check.message}"
    • groups

      Class<?>[] groups
      Default:
      {}
    • payload

      Class<? extends Payload>[] payload
      Default:
      {}
    • threshold

      int threshold
      Returns:
      The threshold for the Mod11 algorithm multiplier growth, if no value is specified the multiplier will grow indefinitely
      Default:
      2147483647
    • startIndex

      int startIndex
      Returns:
      the start index (inclusive) for calculating the checksum. If not specified 0 is assumed.
      Default:
      0
    • endIndex

      int endIndex
      Returns:
      the end index (inclusive) for calculating the checksum. If not specified the whole value is considered
      Default:
      2147483647
    • checkDigitIndex

      int checkDigitIndex
      Returns:
      The index of the check digit in the input. Per default it is assumed that the check digit is the last digit of the specified range. If set, the digit at the specified index is used. If set the following must hold true:
      checkDigitIndex > 0 && (checkDigitIndex < startIndex || checkDigitIndex >= endIndex.
      Default:
      -1
    • ignoreNonDigitCharacters

      boolean ignoreNonDigitCharacters
      Returns:
      Whether non-digit characters in the validated input should be ignored (true) or result in a validation error (false).
      Default:
      false
    • treatCheck10As

      char treatCheck10As
      Returns:
      The char that represents the check digit when the Mod11 checksum equals 10. If not specified 'X' is assumed.
      Default:
      'X'
    • treatCheck11As

      char treatCheck11As
      Returns:
      The char that represents the check digit when the Mod11 checksum equals 11. If not specified '0' is assumed.
      Default:
      '0'
    • processingDirection

      Mod11Check.ProcessingDirection processingDirection
      Returns:
      Returns RIGHT_TO_LEFT if the Mod11 checksum must be done from the rightmost to the leftmost digit. e.g. Code 12345-?:
      • RIGHT_TO_LEFT the sum (5*2 + 4*3 + 3*4 + 2*5 + 1*6) with check digit 5
      • LEFT_TO_RIGHT the sum (1*2 + 2*3 + 3*4 + 4*5 + 5*6) with check digit 7
      If not specified RIGHT_TO_LEFT is assumed, it is the default Mod11 behavior.
      Default:
      RIGHT_TO_LEFT