1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package net.sf.plausj.bank.german.strategy;
18
19 import net.sf.plausj.bank.german.AccountCode;
20 import net.sf.plausj.bank.german.BankCode;
21 import net.sf.plausj.bank.german.CheckDigit;
22 import net.sf.plausj.bank.german.strategy.util.Strategy06AlikeHelper;
23
24 /**
25 * @author ninan
26 *
27 */
28 public class Strategy91 implements Strategy {
29
30 private static final int[][] multiplicators = new int[][] {
31 { 7, 6, 5, 4, 3, 2, 0, 0, 0, 0 }, { 2, 3, 4, 5, 6, 7, 0, 0, 0, 0 },
32 { 10, 9, 8, 7, 6, 5, 0, 4, 3, 2 },
33 { 9, 10, 5, 8, 4, 2, 0, 0, 0, 0 } };
34
35 /**
36 * @see net.sf.plausj.bank.german.strategy.Strategy#calculateCheckDigit(net.sf.plausj.bank.german.BankCode,
37 * net.sf.plausj.bank.german.AccountCode)
38 */
39 public CheckDigit calculateCheckDigit(final BankCode bankCode,
40 final AccountCode accountCode) {
41
42 CheckDigit cdObj = null;
43 for (int i = 0; i < multiplicators.length; ++i) {
44 int sum = 0;
45 for (int j = AccountCode.ACCOUNT_CODE_MAX_LENGTH - 1; j >= 0; --j) {
46 sum += accountCode.getDigitAtPos(j) * multiplicators[i][j];
47 }
48 int cd = Strategy06AlikeHelper.getCheckDigitFromSum(sum);
49 cdObj = new CheckDigit(6, cd);
50 if (accountCode.matchesCheckDigit(cdObj)) {
51 break;
52 }
53 }
54 return cdObj;
55
56 }
57
58 }