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.metis.data.MetisDataType;
20 import io.github.tonywasher.joceanus.moneywise.lethe.data.analysis.base.MoneyWiseAnalysisAttribute;
21 import io.github.tonywasher.joceanus.oceanus.resource.OceanusBundleId;
22
23
24
25
26 public enum MoneyWiseAnalysisSecurityAttr implements MoneyWiseAnalysisAttribute {
27
28
29
30 UNITS,
31
32
33
34
35 VALUATION,
36
37
38
39
40 FOREIGNVALUE,
41
42
43
44
45 VALUEDELTA,
46
47
48
49
50 FOREIGNVALUEDELTA,
51
52
53
54
55 EXCHANGERATE,
56
57
58
59
60 RESIDUALCOST,
61
62
63
64
65 REALISEDGAINS,
66
67
68
69
70 GROWTHADJUST,
71
72
73
74
75 INVESTED,
76
77
78
79
80 FOREIGNINVESTED,
81
82
83
84
85 DIVIDEND,
86
87
88
89
90 MARKETGROWTH,
91
92
93
94
95 FOREIGNMARKETGROWTH,
96
97
98
99
100 LOCALMARKETGROWTH,
101
102
103
104
105 CURRENCYFLUCT,
106
107
108
109
110 PROFIT,
111
112
113
114
115 MARKETPROFIT,
116
117
118
119
120 CASHINVESTED,
121
122
123
124
125 CONSIDERATION,
126
127
128
129
130 RETURNEDCASH,
131
132
133
134
135 XFERREDVALUE,
136
137
138
139
140 COSTDILUTION,
141
142
143
144
145 CAPITALGAIN,
146
147
148
149
150 ALLOWEDCOST,
151
152
153
154
155 XFERREDCOST,
156
157
158
159
160 PRICE,
161
162
163
164
165 CASHTYPE;
166
167
168
169
170 private String theName;
171
172 @Override
173 public String toString() {
174
175 if (theName == null) {
176
177 theName = bundleIdForSecurityAttr(this).getValue();
178 }
179
180
181 return theName;
182 }
183
184 @Override
185 public boolean isCounter() {
186 return switch (this) {
187 case UNITS, RESIDUALCOST, REALISEDGAINS, GROWTHADJUST, DIVIDEND, INVESTED, FOREIGNINVESTED -> true;
188 default -> false;
189 };
190 }
191
192 @Override
193 public MetisDataType getDataType() {
194 return switch (this) {
195 case UNITS -> MetisDataType.UNITS;
196 case PRICE -> MetisDataType.PRICE;
197 case EXCHANGERATE, COSTDILUTION -> MetisDataType.RATIO;
198 case CASHTYPE -> MetisDataType.ENUM;
199 default -> MetisDataType.MONEY;
200 };
201 }
202
203
204
205
206
207
208
209 private static OceanusBundleId bundleIdForSecurityAttr(final MoneyWiseAnalysisSecurityAttr pAttr) {
210
211 return switch (pAttr) {
212 case VALUATION -> MoneyWiseAnalysisValuesResource.ACCOUNTATTR_VALUATION;
213 case FOREIGNVALUE -> MoneyWiseAnalysisValuesResource.ACCOUNTATTR_FOREIGNVALUE;
214 case VALUEDELTA -> MoneyWiseAnalysisValuesResource.ACCOUNTATTR_VALUEDELTA;
215 case FOREIGNVALUEDELTA -> MoneyWiseAnalysisValuesResource.SECURITYATTR_FOREIGNVALUEDELTA;
216 case EXCHANGERATE -> MoneyWiseAnalysisValuesResource.ACCOUNTATTR_EXCHANGERATE;
217 case UNITS -> MoneyWiseAnalysisValuesResource.SECURITYATTR_UNITS;
218 case RESIDUALCOST -> MoneyWiseAnalysisValuesResource.SECURITYATTR_RESIDUALCOST;
219 case REALISEDGAINS -> MoneyWiseAnalysisValuesResource.SECURITYATTR_REALISEDGAINS;
220 case GROWTHADJUST -> MoneyWiseAnalysisValuesResource.SECURITYATTR_GROWTHADJUST;
221 case INVESTED -> MoneyWiseAnalysisValuesResource.SECURITYATTR_INVESTED;
222 case FOREIGNINVESTED -> MoneyWiseAnalysisValuesResource.SECURITYATTR_FOREIGNINVESTED;
223 case DIVIDEND -> MoneyWiseAnalysisValuesResource.SECURITYATTR_DIVIDEND;
224 case MARKETGROWTH -> MoneyWiseAnalysisValuesResource.SECURITYATTR_MARKETGROWTH;
225 case FOREIGNMARKETGROWTH -> MoneyWiseAnalysisValuesResource.SECURITYATTR_FOREIGNMARKETGROWTH;
226 case LOCALMARKETGROWTH -> MoneyWiseAnalysisValuesResource.SECURITYATTR_LOCALMARKETGROWTH;
227 case CURRENCYFLUCT -> MoneyWiseAnalysisValuesResource.ACCOUNTATTR_CURRENCYFLUCT;
228 case MARKETPROFIT -> MoneyWiseAnalysisValuesResource.SECURITYATTR_MARKETPROFIT;
229 case PROFIT -> MoneyWiseAnalysisValuesResource.SECURITYATTR_PROFIT;
230 case CONSIDERATION -> MoneyWiseAnalysisValuesResource.SECURITYATTR_CONSIDER;
231 case RETURNEDCASH -> MoneyWiseAnalysisValuesResource.SECURITYATTR_RETURNEDCASH;
232 case XFERREDVALUE -> MoneyWiseAnalysisValuesResource.SECURITYATTR_XFERREDVALUE;
233 case XFERREDCOST -> MoneyWiseAnalysisValuesResource.SECURITYATTR_XFERREDCOST;
234 case COSTDILUTION -> MoneyWiseAnalysisValuesResource.SECURITYATTR_COSTDILUTION;
235 case CASHINVESTED -> MoneyWiseAnalysisValuesResource.SECURITYATTR_CASHINVESTED;
236 case CAPITALGAIN -> MoneyWiseAnalysisValuesResource.SECURITYATTR_CAPITALGAIN;
237 case ALLOWEDCOST -> MoneyWiseAnalysisValuesResource.SECURITYATTR_ALLOWEDCOST;
238 case PRICE -> MoneyWiseAnalysisValuesResource.SECURITYATTR_PRICE;
239 case CASHTYPE -> MoneyWiseAnalysisValuesResource.SECURITYATTR_CASHTYPE;
240 default -> throw new IllegalArgumentException();
241 };
242 }
243 }