package name.abuchen.portfolio.util;
public class Isin
{
private static final String CHARACTERS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //$NON-NLS-1$
public static final boolean isValid(String isin)
{
if (isin == null || isin.length() != 12)
return false;
int sum = 0;
boolean even = false;
for (int ii = 11; ii >= 0; ii--)
{
int v = CHARACTERS.indexOf(isin.charAt(ii));
if (v < 0)
return false;
int digit = v % 10 * (even ? 2 : 1);
sum += digit > 9 ? digit - 9 : digit;
even = !even;
if (v >= 10)
{
digit = v / 10 * (even ? 2 : 1);
sum += digit > 9 ? digit - 9 : digit;
even = !even;
}
}
return sum % 10 == 0;
}
}