1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package net.sf.plausj.bank.german.strategy.util;
18
19 import net.sf.plausj.bank.german.AccountCode;
20 import net.sf.plausj.bank.german.CheckDigit;
21
22 /**
23 * Helper methods for Strategy02 alike strategies
24 *
25 * @author ninan
26 *
27 */
28 public class Strategy02AlikeHelper {
29
30 /**
31 * Calculates the sum of the digit iteration
32 *
33 * @param accountCode
34 * The account code to use
35 * @param multiplicators
36 * The multiplicators
37 * @return The sum
38 */
39 public static int calculateSum(AccountCode accountCode, int[] multiplicators) {
40 int sum = 0;
41 for (int i = AccountCode.ACCOUNT_CODE_MAX_LENGTH - 2; i >= 0; --i) {
42 sum += accountCode.getDigitAtPos(i) * multiplicators[i];
43 }
44 return sum;
45 }
46
47 public static CheckDigit getCheckDigitFromSum(int sum, int pos) {
48 int mod = sum % 11;
49 CheckDigit cd = null;
50
51 switch (mod) {
52 case 0:
53 cd = new CheckDigit(pos, 0);
54 break;
55 case 1:
56 cd = CheckDigit.NO_CHECK;
57 break;
58 default:
59 cd = new CheckDigit(pos, 11 - mod);
60 break;
61 }
62 return cd;
63 }
64
65 }