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 Strategy16 alike strategies
24 *
25 * @author ninan
26 *
27 */
28 public class Strategy16AlikeHelper {
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 return Strategy06AlikeHelper.calculateSum(accountCode, multiplicators);
41 }
42
43 public static CheckDigit getCheckDigit(AccountCode accountCode, int sum,
44 int defaultPos, int firstEqual, int secondEqual) {
45 int cd = Strategy06AlikeHelper.getCheckDigitFromSum(sum, -1);
46 int pos = defaultPos;
47
48 if (cd == -1
49 && (accountCode.getDigitAtPos(firstEqual) == accountCode
50 .getDigitAtPos(secondEqual))) {
51 pos = CheckDigit.ALWAYS_VALID;
52 } else if (cd == -1) {
53 cd = Strategy06AlikeHelper.getCheckDigitFromSum(sum);
54 }
55
56 return new CheckDigit(pos, cd);
57 }
58
59 }