1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.moneywise.atlas.data.analysis.values;
18
19 import io.github.tonywasher.joceanus.oceanus.decimal.OceanusMoney;
20 import io.github.tonywasher.joceanus.moneywise.atlas.data.analysis.base.MoneyWiseXAnalysisValues;
21
22 import java.util.Currency;
23
24
25
26
27 public final class MoneyWiseXAnalysisTransValues
28 extends MoneyWiseXAnalysisValues<MoneyWiseXAnalysisTransValues, MoneyWiseXAnalysisTransAttr> {
29
30
31
32
33
34 public MoneyWiseXAnalysisTransValues(final Currency pCurrency) {
35
36 super(MoneyWiseXAnalysisTransAttr.class);
37
38
39 super.setValue(MoneyWiseXAnalysisTransAttr.INCOME, new OceanusMoney(pCurrency));
40 super.setValue(MoneyWiseXAnalysisTransAttr.EXPENSE, new OceanusMoney(pCurrency));
41 }
42
43
44
45
46
47
48 public MoneyWiseXAnalysisTransValues(final MoneyWiseXAnalysisTransValues pSource) {
49
50 super(pSource);
51 }
52
53 @Override
54 protected MoneyWiseXAnalysisTransValues newSnapShot() {
55 return new MoneyWiseXAnalysisTransValues(this);
56 }
57
58 @Override
59 public void adjustToBaseValues(final MoneyWiseXAnalysisTransValues pBase) {
60
61 adjustMoneyToBase(pBase, MoneyWiseXAnalysisTransAttr.INCOME);
62 adjustMoneyToBase(pBase, MoneyWiseXAnalysisTransAttr.EXPENSE);
63 calculateDelta();
64 }
65
66
67
68
69 public void calculateDelta() {
70
71 OceanusMoney myDelta = getMoneyValue(MoneyWiseXAnalysisTransAttr.INCOME);
72 myDelta = new OceanusMoney(myDelta);
73
74
75 final OceanusMoney myExpense = getMoneyValue(MoneyWiseXAnalysisTransAttr.EXPENSE);
76 myDelta.subtractAmount(myExpense);
77
78
79 super.setValue(MoneyWiseXAnalysisTransAttr.PROFIT, myDelta);
80 }
81
82 @Override
83 public void resetBaseValues() {
84
85 OceanusMoney myValue = getMoneyValue(MoneyWiseXAnalysisTransAttr.INCOME);
86 myValue = new OceanusMoney(myValue);
87 myValue.setZero();
88
89
90 super.setValue(MoneyWiseXAnalysisTransAttr.INCOME, myValue);
91 super.setValue(MoneyWiseXAnalysisTransAttr.EXPENSE, new OceanusMoney(myValue));
92 super.setValue(MoneyWiseXAnalysisTransAttr.PROFIT, new OceanusMoney(myValue));
93 }
94
95
96
97
98
99
100 public boolean isActive() {
101 final OceanusMoney myIncome = getMoneyValue(MoneyWiseXAnalysisTransAttr.INCOME);
102 final OceanusMoney myExpense = getMoneyValue(MoneyWiseXAnalysisTransAttr.EXPENSE);
103 return myIncome.isNonZero() || myExpense.isNonZero();
104 }
105 }