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.util.MathHelper;
21
22 /**
23 * Helper methods for Strategy00 alike strategies
24 *
25 * @author ninan
26 *
27 */
28 public class Strategy00AlikeHelper {
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
42 for (int i = AccountCode.ACCOUNT_CODE_MAX_LENGTH - 2; i >= 0; --i) {
43 int p = accountCode.getDigitAtPos(i) * multiplicators[i];
44 if (p > 9) {
45 p = MathHelper.calcCrossTotal(p);
46 }
47 sum += p;
48 }
49
50 return sum;
51 }
52
53 public static int getCheckDigitFromSum(int sum) {
54 int ld = MathHelper.getLastDigits(sum, 1);
55
56 int cd = 0;
57
58 if (ld > 0)
59 cd = 10 - ld;
60
61 return cd;
62 }
63
64 }