1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.moneywise.lethe.data.analysis.values;
18
19 import io.github.tonywasher.joceanus.oceanus.decimal.OceanusMoney;
20 import io.github.tonywasher.joceanus.oceanus.decimal.OceanusUnits;
21 import io.github.tonywasher.joceanus.moneywise.lethe.data.analysis.base.MoneyWiseAnalysisValues;
22
23 import java.util.Currency;
24
25
26
27
28 public final class MoneyWiseAnalysisSecurityValues
29 extends MoneyWiseAnalysisValues<MoneyWiseAnalysisSecurityValues, MoneyWiseAnalysisSecurityAttr> {
30
31
32
33
34
35 public MoneyWiseAnalysisSecurityValues(final Currency pCurrency) {
36
37 super(MoneyWiseAnalysisSecurityAttr.class);
38
39
40 super.setValue(MoneyWiseAnalysisSecurityAttr.UNITS, new OceanusUnits());
41 super.setValue(MoneyWiseAnalysisSecurityAttr.RESIDUALCOST, new OceanusMoney(pCurrency));
42 super.setValue(MoneyWiseAnalysisSecurityAttr.INVESTED, new OceanusMoney(pCurrency));
43 super.setValue(MoneyWiseAnalysisSecurityAttr.REALISEDGAINS, new OceanusMoney(pCurrency));
44 super.setValue(MoneyWiseAnalysisSecurityAttr.GROWTHADJUST, new OceanusMoney(pCurrency));
45 super.setValue(MoneyWiseAnalysisSecurityAttr.DIVIDEND, new OceanusMoney(pCurrency));
46 }
47
48
49
50
51
52
53
54 public MoneyWiseAnalysisSecurityValues(final Currency pCurrency,
55 final Currency pReportingCurrency) {
56
57 this(pReportingCurrency);
58
59
60 super.setValue(MoneyWiseAnalysisSecurityAttr.FOREIGNINVESTED, new OceanusMoney(pCurrency));
61 }
62
63
64
65
66
67
68
69 public MoneyWiseAnalysisSecurityValues(final MoneyWiseAnalysisSecurityValues pSource,
70 final boolean pCountersOnly) {
71
72 super(pSource, pCountersOnly);
73 }
74
75 @Override
76 protected MoneyWiseAnalysisSecurityValues getCounterSnapShot() {
77 return new MoneyWiseAnalysisSecurityValues(this, true);
78 }
79
80 @Override
81 protected MoneyWiseAnalysisSecurityValues getFullSnapShot() {
82 return new MoneyWiseAnalysisSecurityValues(this, false);
83 }
84
85
86
87
88
89
90 private boolean isForeignSecurity() {
91 return getValue(MoneyWiseAnalysisSecurityAttr.FOREIGNINVESTED) != null;
92 }
93
94 @Override
95 public void adjustToBaseValues(final MoneyWiseAnalysisSecurityValues pBase) {
96
97 adjustMoneyToBase(pBase, MoneyWiseAnalysisSecurityAttr.INVESTED);
98 adjustMoneyToBase(pBase, MoneyWiseAnalysisSecurityAttr.REALISEDGAINS);
99 adjustMoneyToBase(pBase, MoneyWiseAnalysisSecurityAttr.GROWTHADJUST);
100 adjustMoneyToBase(pBase, MoneyWiseAnalysisSecurityAttr.DIVIDEND);
101
102
103 if (isForeignSecurity()) {
104 adjustMoneyToBase(pBase, MoneyWiseAnalysisSecurityAttr.FOREIGNINVESTED);
105 }
106 }
107
108 @Override
109 public void resetBaseValues() {
110
111 OceanusMoney myValue = getMoneyValue(MoneyWiseAnalysisSecurityAttr.RESIDUALCOST);
112 myValue = new OceanusMoney(myValue);
113 myValue.setZero();
114
115
116 super.setValue(MoneyWiseAnalysisSecurityAttr.GROWTHADJUST, myValue);
117 super.setValue(MoneyWiseAnalysisSecurityAttr.INVESTED, new OceanusMoney(myValue));
118 super.setValue(MoneyWiseAnalysisSecurityAttr.REALISEDGAINS, new OceanusMoney(myValue));
119 super.setValue(MoneyWiseAnalysisSecurityAttr.DIVIDEND, new OceanusMoney(myValue));
120
121
122 if (isForeignSecurity()) {
123
124 myValue = getMoneyValue(MoneyWiseAnalysisSecurityAttr.FOREIGNINVESTED);
125 myValue = new OceanusMoney(myValue);
126 myValue.setZero();
127
128
129 super.setValue(MoneyWiseAnalysisSecurityAttr.FOREIGNINVESTED, myValue);
130 }
131 }
132
133
134
135
136
137
138 public boolean isActive() {
139 final OceanusUnits myUnits = getUnitsValue(MoneyWiseAnalysisSecurityAttr.UNITS);
140 return myUnits != null && myUnits.isNonZero();
141 }
142 }
143
144