001package org.xbib.standardnumber.check.iso7064; 002 003import org.xbib.standardnumber.check.Digit; 004 005import java.math.BigDecimal; 006 007public class MOD9710 implements Digit { 008 009 private static final BigDecimal CONSTANT_97 = new BigDecimal(97); 010 011 @Override 012 public String encode(String digits) { 013 int c = compute(digits); 014 if (c == 0) { 015 return digits + "00"; 016 } else if (c < 10) { 017 return digits + '0' + c; 018 } else { 019 return digits + c; 020 } 021 } 022 023 @Override 024 public boolean verify(String digits) { 025 return new BigDecimal(digits != null ? digits : "0").remainder(CONSTANT_97).intValue() == 1; 026 } 027 028 @Override 029 public int compute(String digits) { 030 return new BigDecimal(digits).remainder(CONSTANT_97).intValue(); 031 } 032 033 @Override 034 public int getDigit(String digits) { 035 return Integer.parseInt(digits.substring(digits.length() - 2)); 036 } 037 038 @Override 039 public String getNumber(String digits) { 040 return digits.substring(0, digits.length() - 2); 041 } 042}