Class ISBN10CheckDigit

java.lang.Object
org.apache.commons.validator.routines.checkdigit.ModulusCheckDigit
org.apache.commons.validator.routines.checkdigit.ISBN10CheckDigit
All Implemented Interfaces:
Serializable, CheckDigit

public final class ISBN10CheckDigit extends ModulusCheckDigit
Modulus 11 ISBN-10 Check Digit calculation/validation.

ISBN-10 Numbers are a numeric code except for the last (check) digit which can have a value of "X".

Check digit calculation is based on modulus 11 with digits being weighted based by their position, from right to left with the first digit being weighted 1, the second 2 and so on. If the check digit is calculated as "10" it is converted to "X".

N.B. From 1st January 2007 the book industry will start to use a new 13 digit ISBN number (rather than this 10 digit ISBN number) which uses the EAN-13 / UPC (see EAN13CheckDigit) standard.

For further information see:

Since:
1.4
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final CheckDigit
    Singleton ISBN-10 Check Digit instance.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs a modulus 11 Check Digit routine for ISBN-10.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Validates a modulus check digit for a code.
    protected String
    toCheckDigit(int charValue)
    Convert an integer value to a character at a specified position.
    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.

    Methods inherited from class ModulusCheckDigit

    calculate, calculateModulus, getModulus, sumDigits
    Modifier and Type
    Method
    Description
    Calculates a modulus Check Digit for a code which does not yet have one.
    protected int
    calculateModulus(String code, boolean includesCheckDigit)
    Calculates the modulus for a code.
    int
    Gets the modulus value this check digit routine is based on.
    static int
    sumDigits(int number)
    Adds together the individual digits in a number.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • ISBN10CheckDigit

      Constructs a modulus 11 Check Digit routine for ISBN-10.
  • Method Details

    • isValid

      public boolean isValid(String code)
      Validates a modulus check digit for a code.

      The weight is rightPos, which does not change when a character is prepended, and modulus 11 makes the leading position weight a multiple of the modulus, so ModulusCheckDigit would accept an over-length code with any prepended digit (for example 51930110995). The ten-character length is checked here before the check digit test.

      Specified by:
      isValid in interface CheckDigit
      Overrides:
      isValid in class ModulusCheckDigit
      Parameters:
      code - The code to validate.
      Returns:
      true if the check digit is valid, otherwise false.
    • toCheckDigit

      protected String toCheckDigit(int charValue) throws CheckDigitException
      Convert an integer value to a character at a specified position.

      Value '10' for position 1 (check digit) converted to 'X'.

      Overrides:
      toCheckDigit in class ModulusCheckDigit
      Parameters:
      charValue - The integer value of the character.
      Returns:
      The converted character.
      Throws:
      CheckDigitException - if an error occurs.
    • toInt

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

      Character 'X' check digit converted to 10.

      Overrides:
      toInt in class ModulusCheckDigit
      Parameters:
      character - The character to convert.
      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 integer value of the character.
      Throws:
      CheckDigitException - if an error occurs.
    • weightedValue

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

      For ISBN-10 (from right to left) digits are weighted by their position.

      Specified by:
      weightedValue in class ModulusCheckDigit
      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.