# Class ISSNValidator

java.lang.Object
org.apache.commons.validator.routines.ISSNValidator

All Implemented Interfaces:
  `Serializable`

public class ISSNValidator extends Object implements Serializable
International Standard Serial Number (ISSN) is an eight-digit serial number used to uniquely identify a serial publication.

    The format is:

    ISSN dddd-dddC
    where:
    d = decimal digit (0-9)
    C = checksum (0-9 or X)

    The checksum is formed by adding the first 7 digits multiplied by
    the position in the entire number (counting from the right).

    For example, abcd-efg would be 8a + 7b + 6c + 5d + 4e +3f +2g.
    The check digit is modulus 11, where the value 10 is represented by 'X'
    For example:
    ISSN 0317-8471
    ISSN 1050-124X

    This class strips off the 'ISSN ' prefix if it is present before passing
    the remainder to the checksum routine.

Note: the `isValid(String)` and `validate(String)` methods strip off any leading or trailing spaces before doing the validation. To ensure that only a valid code (without 'ISSN ' prefix) is passed to a method, use the following code:

    Object valid = validator.validate(input);
    if (valid != null) {
       some_method(valid.toString());
    }

Since:
  1.5.0
See Also:
  - Serialized Form

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ISSNValidator()`
  Constructs a new instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `convertToEAN13(String issn, String suffix)`
  Converts an ISSN code to an EAN-13 code.
  `String`
  `extractFromEAN13(String ean13)`
  Extracts an ISSN code from an ISSN-EAN-13 code.
  `static ISSNValidator`
  `getInstance()`
  Gets the singleton instance of the ISSN validator.
  `boolean`
  `isValid(String code)`
  Tests whether the code is a valid ISSN code after any transformation by the validate routine.
  `Object`
  `validate(String code)`
  Checks the code is valid ISSN code.
  `Object`
  `validateEan(String code)`
  Checks the code is a valid EAN code.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ISSNValidator

    public ISSNValidator()
    Constructs a new instance.

- ## Method Details

  - ### getInstance

    public static ISSNValidator getInstance()
    Gets the singleton instance of the ISSN validator.
    Returns:
      A singleton instance of the ISSN validator.

  - ### convertToEAN13

    public String convertToEAN13(String issn, String suffix)
    Converts an ISSN code to an EAN-13 code.

    This method requires a valid ISSN code. It may contain a leading 'ISSN ' prefix, as the input is passed through the `validate(String)` method.

    Parameters:
      `issn` - The ISSN code to convert
      `suffix` - The two digit suffix, for example, "00"
    Returns:
      A converted EAN-13 code or `null` if the input ISSN code is not valid

  - ### extractFromEAN13

    public String extractFromEAN13(String ean13)
    Extracts an ISSN code from an ISSN-EAN-13 code.

    This method requires a valid ISSN-EAN-13 code with NO formatting characters. That is a 13 digit EAN-13 code with the '977' prefix.

    Parameters:
      `ean13` - The ISSN code to convert
    Returns:
      A valid ISSN code or `null` if the input ISSN EAN-13 code is not valid
    Since:
      1.7

  - ### isValid

    public boolean isValid(String code)
    Tests whether the code is a valid ISSN code after any transformation by the validate routine.
    Parameters:
      `code` - The code to validate.
    Returns:
      `true` if a valid ISSN code, otherwise `false`.

  - ### validate

    public Object validate(String code)
    Checks the code is valid ISSN code.

    If valid, this method returns the ISSN code with the 'ISSN ' prefix removed (if it was present)

    Parameters:
      `code` - The code to validate.
    Returns:
      A valid ISSN code if valid, otherwise `null`.

  - ### validateEan

    public Object validateEan(String code)
    Checks the code is a valid EAN code.

    If valid, this method returns the EAN code

    Parameters:
      `code` - The code to validate.
    Returns:
      A valid EAN code if valid, otherwise `null`.
    Since:
      1.7