in src/main/java/org/apache/commons/validator/routines/ISSNValidator.java [148:171]
public String extractFromEAN13(final String ean13) {
String input = ean13.trim();
if (input.length() != EAN_ISSN_LEN) {
throw new IllegalArgumentException("Invalid length " + input.length() + " for '" + input + "'");
}
if (!input.startsWith(ISSN_PREFIX)) {
throw new IllegalArgumentException("Prefix must be " + ISSN_PREFIX + " to contain an ISSN: '" + ean13 + "'");
}
final Object result = validateEan(input);
if (result == null) {
return null;
}
// Calculate the ISSN code
input = result.toString();
try {
//CHECKSTYLE:OFF: MagicNumber
final String issnBase = input.substring(3, 10); // TODO: how to derive these
//CHECKSTYLE:ON: MagicNumber
final String checkDigit = ISSNCheckDigit.ISSN_CHECK_DIGIT.calculate(issnBase);
return issnBase + checkDigit;
} catch (final CheckDigitException e) { // Should not happen
throw new IllegalArgumentException("Check digit error for '" + ean13 + "' - " + e.getMessage());
}
}