1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.moneywise.tax;
18
19 import io.github.tonywasher.joceanus.oceanus.resource.OceanusBundleId;
20 import io.github.tonywasher.joceanus.oceanus.resource.OceanusBundleLoader;
21 import io.github.tonywasher.joceanus.metis.data.MetisDataItem.MetisDataFieldId;
22
23 import java.util.EnumMap;
24 import java.util.Map;
25 import java.util.ResourceBundle;
26
27
28
29
30 public enum MoneyWiseTaxResource
31 implements OceanusBundleId, MetisDataFieldId {
32
33
34
35 ALLOWANCE_BASIC("Allowance.Basic"),
36
37
38
39
40 ALLOWANCE_RENTAL("Allowance.Rental"),
41
42
43
44
45 ALLOWANCE_CAPITAL("Allowance.Capital"),
46
47
48
49
50 ALLOWANCE_SAVINGS("Allowance.Savings"),
51
52
53
54
55 ALLOWANCE_DIVIDEND("Allowance.Dividend"),
56
57
58
59
60 ALLOWANCE_LOAGE("Allowance.LoAge"),
61
62
63
64
65 ALLOWANCE_HIAGE("Allowance.HiAge"),
66
67
68
69
70 LIMIT_AGEALLOWANCE("Limit.AgeAllowance"),
71
72
73
74
75 LIMIT_ADDALLOWANCE("Limit.AdditionalAllowance"),
76
77
78
79
80 SCHEME_BASE_RATE("Scheme.BaseRate"),
81
82
83
84
85 SCHEME_HIGH_RATE("Scheme.HighRate"),
86
87
88
89
90 SCHEME_ADDITIONAL_RATE("Scheme.AdditionalRate"),
91
92
93
94
95 SCHEME_RESIDENTIAL("Scheme.Residential"),
96
97
98
99
100 SCHEME_RELIEF_AVAILABLE("Scheme.ReliefAvailable"),
101
102
103
104
105 TAXBANDS_STANDARD("TaxBands.Standard"),
106
107
108
109
110 TAXBANDS_LOSAVINGS("TaxBands.LoSavings"),
111
112
113
114
115 TAXBANDS_AMOUNT("TaxBands.Amount"),
116
117
118
119
120 TAXBANDS_RATE("TaxBands.Rate"),
121
122
123
124
125 TAXBANDS_INCOME("TaxBands.Income"),
126
127
128
129
130 TAXBANDS_TAXDUE("TaxBands.TaxDue"),
131
132
133
134
135 TAXBANDS_HASLOTAXBAND("TaxBands.hasLoTaxBand"),
136
137
138
139
140 TAXYEAR_NAME("TaxYear.Name"),
141
142
143
144
145 TAXYEAR_END("TaxYear.End"),
146
147
148
149
150 TAXYEAR_ALLOWANCES("TaxYear.Allowances"),
151
152
153
154
155 TAXYEAR_BANDS("TaxYear.Bands"),
156
157
158
159
160 TAXYEAR_INTEREST("TaxYear.Interest"),
161
162
163
164
165 TAXYEAR_DIVIDEND("TaxYear.Dividend"),
166
167
168
169
170 TAXYEAR_CAPITAL("TaxYear.Capital"),
171
172
173
174
175 TAXYEAR_PROFIT("TaxYear.Profit"),
176
177
178
179
180 TAXCONFIG_NAME("TaxConfig.Name"),
181
182
183
184
185 TAXCONFIG_GROSS("TaxConfig.GrossTaxable"),
186
187
188
189
190 TAXCONFIG_PRESAVINGS("TaxConfig.GrossPreSavings"),
191
192
193
194
195 TAXCONFIG_BIRTHDAY("TaxConfig.Birthday"),
196
197
198
199
200 TAXCONFIG_AGE("TaxConfig.Age"),
201
202
203
204
205 TAXCONFIG_AGEALLOWANCE("TaxConfig.AgeAllowances"),
206
207
208
209
210 TAXANALYSIS_TAXBUCKETS("TaxAnalysis.TaxBuckets"),
211
212
213
214
215 TAXANALYSIS_TAXPROFIT("TaxAnalysis.TaxProfit"),
216
217
218
219
220 TAXPREF_NAME("preference.display"),
221
222
223
224
225 TAXPREF_BIRTH("preference.birth"),
226
227
228
229
230 MARGINAL_REDUCTION("Marginal.Name"),
231
232
233
234
235 MARGINAL_ONEINTWO("Marginal.OneInTwo"),
236
237
238
239
240 MARGINAL_TWOINTHREE("Marginal.TwoInThree"),
241
242
243
244
245 CASHTYPE_LARGE("CashType.Large"),
246
247
248
249
250 CASHTYPE_SMALL("CashType.Small"),
251
252
253
254
255 CHARGEABLEGAIN_GAIN("ChargeableGain.Gain"),
256
257
258
259
260 CHARGEABLEGAIN_SLICE("ChargeableGain.Slice"),
261
262
263
264
265 CHARGEABLEGAIN_TOTALGAINS("ChargeableGain.TotalGains"),
266
267
268
269
270 CHARGEABLEGAIN_TOTALSLICES("ChargeableGain.TotalSlices"),
271
272
273
274
275 CHARGEABLEGAIN_RATIO("ChargeableGain.Ratio"),
276
277
278
279
280 CHARGEABLEGAIN_TAXEDSLICES("ChargeableGain.TaxedSlices"),
281
282
283
284
285 CHARGEABLEGAIN_NETTTAXDUE("ChargeableGain.NettTaxDue"),
286
287
288
289
290 CHARGEABLEGAIN_TAXRELIEF("ChargeableGain.TaxRelief");
291
292
293
294
295 private static final Map<MoneyWiseMarginalReduction, OceanusBundleId> MARGINAL_MAP = buildMarginalMap();
296
297
298
299
300 private static final Map<MoneyWiseCashType, OceanusBundleId> CASHTYPE_MAP = buildCashTypeMap();
301
302
303
304
305 private static final OceanusBundleLoader LOADER = OceanusBundleLoader.getLoader(MoneyWiseTaxResource.class.getCanonicalName(),
306 ResourceBundle::getBundle);
307
308
309
310
311 private final String theKeyName;
312
313
314
315
316 private String theValue;
317
318
319
320
321
322
323 MoneyWiseTaxResource(final String pKeyName) {
324 theKeyName = pKeyName;
325 }
326
327 @Override
328 public String getKeyName() {
329 return theKeyName;
330 }
331
332 @Override
333 public String getNameSpace() {
334 return "MoneyWise.tax";
335 }
336
337 @Override
338 public String getValue() {
339
340 if (theValue == null) {
341
342 theValue = LOADER.getValue(this);
343 }
344
345
346 return theValue;
347 }
348
349 @Override
350 public String getId() {
351 return getValue();
352 }
353
354
355
356
357
358
359 private static Map<MoneyWiseMarginalReduction, OceanusBundleId> buildMarginalMap() {
360
361 final Map<MoneyWiseMarginalReduction, OceanusBundleId> myMap = new EnumMap<>(MoneyWiseMarginalReduction.class);
362 myMap.put(MoneyWiseMarginalReduction.ONEINTWO, MARGINAL_ONEINTWO);
363 myMap.put(MoneyWiseMarginalReduction.TWOINTHREE, MARGINAL_TWOINTHREE);
364 return myMap;
365 }
366
367
368
369
370
371
372
373 protected static OceanusBundleId getKeyForMarginalReduction(final MoneyWiseMarginalReduction pValue) {
374 return OceanusBundleLoader.getKeyForEnum(MARGINAL_MAP, pValue);
375 }
376
377
378
379
380
381
382 private static Map<MoneyWiseCashType, OceanusBundleId> buildCashTypeMap() {
383
384 final Map<MoneyWiseCashType, OceanusBundleId> myMap = new EnumMap<>(MoneyWiseCashType.class);
385 myMap.put(MoneyWiseCashType.LARGECASH, CASHTYPE_LARGE);
386 myMap.put(MoneyWiseCashType.SMALLCASH, CASHTYPE_SMALL);
387 return myMap;
388 }
389
390
391
392
393
394
395
396 protected static OceanusBundleId getKeyForCashType(final MoneyWiseCashType pValue) {
397 return OceanusBundleLoader.getKeyForEnum(CASHTYPE_MAP, pValue);
398 }
399 }