1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.moneywise.data.basic;
18
19 import io.github.tonywasher.joceanus.oceanus.base.OceanusException;
20 import io.github.tonywasher.joceanus.oceanus.date.OceanusDateRange;
21 import io.github.tonywasher.joceanus.oceanus.format.OceanusDataFormatter;
22 import io.github.tonywasher.joceanus.metis.field.MetisFieldSet;
23 import io.github.tonywasher.joceanus.metis.list.MetisListKey;
24 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseCash.MoneyWiseCashList;
25 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseCashCategory.MoneyWiseCashCategoryList;
26 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseCashInfo.MoneyWiseCashInfoList;
27 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseDeposit.MoneyWiseDepositList;
28 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseDepositCategory.MoneyWiseDepositCategoryList;
29 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseDepositInfo.MoneyWiseDepositInfoList;
30 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseDepositRate.MoneyWiseDepositRateDataMap;
31 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseDepositRate.MoneyWiseDepositRateList;
32 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseExchangeRate.MoneyWiseExchangeRateDataMap;
33 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseExchangeRate.MoneyWiseExchangeRateList;
34 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseLoan.MoneyWiseLoanList;
35 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseLoanCategory.MoneyWiseLoanCategoryList;
36 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseLoanInfo.MoneyWiseLoanInfoList;
37 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePayee.MoneyWisePayeeList;
38 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePayeeInfo.MoneyWisePayeeInfoList;
39 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePortfolio.MoneyWisePortfolioList;
40 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePortfolioInfo.MoneyWisePortfolioInfoList;
41 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseRegion.MoneyWiseRegionList;
42 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseSecurity.MoneyWiseSecurityList;
43 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseSecurityInfo.MoneyWiseSecurityInfoList;
44 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseSecurityPrice.MoneyWiseSecurityPriceDataMap;
45 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseSecurityPrice.MoneyWiseSecurityPriceList;
46 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseTax.MoneyWiseTaxFactory;
47 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseTransCategory.MoneyWiseTransCategoryList;
48 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseTransInfo.MoneyWiseTransInfoList;
49 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseTransTag.MoneyWiseTransTagList;
50 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseTransaction.MoneyWiseTransactionList;
51 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseAccountInfoType.MoneyWiseAccountInfoTypeList;
52 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseCashCategoryType.MoneyWiseCashCategoryTypeList;
53 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseCurrency;
54 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseCurrency.MoneyWiseCurrencyList;
55 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseDepositCategoryType.MoneyWiseDepositCategoryTypeList;
56 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseLoanCategoryType.MoneyWiseLoanCategoryTypeList;
57 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWisePayeeType.MoneyWisePayeeTypeList;
58 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWisePortfolioType.MoneyWisePortfolioTypeList;
59 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseSecurityType.MoneyWiseSecurityTypeList;
60 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseStaticDataType;
61 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseStaticResource;
62 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseTaxBasis.MoneyWiseTaxBasisList;
63 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseTransCategoryType.MoneyWiseTransCategoryTypeList;
64 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseTransInfoType.MoneyWiseTransInfoTypeList;
65 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataList;
66 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataSet;
67 import io.github.tonywasher.joceanus.prometheus.toolkit.PrometheusToolkit;
68 import io.github.tonywasher.joceanus.tethys.api.thread.TethysUIThreadStatusReport;
69
70 import java.util.Iterator;
71 import java.util.Map.Entry;
72
73
74
75
76 public class MoneyWiseDataSet
77 extends PrometheusDataSet {
78
79
80
81 private static final MetisFieldSet<MoneyWiseDataSet> FIELD_DEFS = MetisFieldSet.newFieldSet(MoneyWiseDataSet.class);
82
83
84
85
86 static {
87 FIELD_DEFS.declareLocalFieldsForEnum(MoneyWiseStaticDataType.class, MoneyWiseDataSet::getFieldListValue);
88 FIELD_DEFS.declareLocalFieldsForEnum(MoneyWiseBasicDataType.class, MoneyWiseDataSet::getFieldListValue);
89 FIELD_DEFS.declareLocalField(MoneyWiseStaticResource.CURRENCY_REPORTING, MoneyWiseDataSet::getReportingCurrency);
90 }
91
92
93
94
95 private final MoneyWiseTaxFactory theTaxFactory;
96
97
98
99
100 private MoneyWiseCurrency theReportingCurrency;
101
102
103
104
105 private boolean ignoreCheckClosedAccounts;
106
107
108
109
110 private boolean newValidityChecks;
111
112
113
114
115
116
117
118 public MoneyWiseDataSet(final PrometheusToolkit pUtilitySet,
119 final MoneyWiseTaxFactory pTaxFactory) {
120
121 super(pUtilitySet);
122
123
124 theTaxFactory = pTaxFactory;
125
126
127 for (MoneyWiseStaticDataType myType : MoneyWiseStaticDataType.values()) {
128
129 addList(myType, newList(myType));
130 }
131
132
133 for (MoneyWiseBasicDataType myType : MoneyWiseBasicDataType.values()) {
134
135 addList(myType, newList(myType));
136 }
137 }
138
139
140
141
142
143
144 private MoneyWiseDataSet(final MoneyWiseDataSet pSource) {
145 super(pSource);
146 theTaxFactory = pSource.getTaxFactory();
147 }
148
149 @Override
150 public MetisFieldSet<MoneyWiseDataSet> getDataFieldSet() {
151 return FIELD_DEFS;
152 }
153
154 @Override
155 public String formatObject(final OceanusDataFormatter pFormatter) {
156 return MoneyWiseDataSet.class.getSimpleName();
157 }
158
159
160
161
162
163
164 public MoneyWiseDepositCategoryTypeList getDepositCategoryTypes() {
165 return getDataList(MoneyWiseStaticDataType.DEPOSITTYPE, MoneyWiseDepositCategoryTypeList.class);
166 }
167
168
169
170
171
172
173 public MoneyWiseCashCategoryTypeList getCashCategoryTypes() {
174 return getDataList(MoneyWiseStaticDataType.CASHTYPE, MoneyWiseCashCategoryTypeList.class);
175 }
176
177
178
179
180
181
182 public MoneyWiseLoanCategoryTypeList getLoanCategoryTypes() {
183 return getDataList(MoneyWiseStaticDataType.LOANTYPE, MoneyWiseLoanCategoryTypeList.class);
184 }
185
186
187
188
189
190
191 public MoneyWisePayeeTypeList getPayeeTypes() {
192 return getDataList(MoneyWiseStaticDataType.PAYEETYPE, MoneyWisePayeeTypeList.class);
193 }
194
195
196
197
198
199
200 public MoneyWisePortfolioTypeList getPortfolioTypes() {
201 return getDataList(MoneyWiseStaticDataType.PORTFOLIOTYPE, MoneyWisePortfolioTypeList.class);
202 }
203
204
205
206
207
208
209 public MoneyWiseSecurityTypeList getSecurityTypes() {
210 return getDataList(MoneyWiseStaticDataType.SECURITYTYPE, MoneyWiseSecurityTypeList.class);
211 }
212
213
214
215
216
217
218 public MoneyWiseTransCategoryTypeList getTransCategoryTypes() {
219 return getDataList(MoneyWiseStaticDataType.TRANSTYPE, MoneyWiseTransCategoryTypeList.class);
220 }
221
222
223
224
225
226
227 public MoneyWiseTaxBasisList getTaxBases() {
228 return getDataList(MoneyWiseStaticDataType.TAXBASIS, MoneyWiseTaxBasisList.class);
229 }
230
231
232
233
234
235
236 public MoneyWiseCurrencyList getAccountCurrencies() {
237 return getDataList(MoneyWiseStaticDataType.CURRENCY, MoneyWiseCurrencyList.class);
238 }
239
240
241
242
243
244
245 public MoneyWiseAccountInfoTypeList getActInfoTypes() {
246 return getDataList(MoneyWiseStaticDataType.ACCOUNTINFOTYPE, MoneyWiseAccountInfoTypeList.class);
247 }
248
249
250
251
252
253
254 public MoneyWiseTransInfoTypeList getTransInfoTypes() {
255 return getDataList(MoneyWiseStaticDataType.TRANSINFOTYPE, MoneyWiseTransInfoTypeList.class);
256 }
257
258
259
260
261
262
263 public MoneyWiseTransTagList getTransactionTags() {
264 return getDataList(MoneyWiseBasicDataType.TRANSTAG, MoneyWiseTransTagList.class);
265 }
266
267
268
269
270
271
272 public MoneyWiseRegionList getRegions() {
273 return getDataList(MoneyWiseBasicDataType.REGION, MoneyWiseRegionList.class);
274 }
275
276
277
278
279
280
281 public MoneyWiseDepositCategoryList getDepositCategories() {
282 return getDataList(MoneyWiseBasicDataType.DEPOSITCATEGORY, MoneyWiseDepositCategoryList.class);
283 }
284
285
286
287
288
289
290 public MoneyWiseCashCategoryList getCashCategories() {
291 return getDataList(MoneyWiseBasicDataType.CASHCATEGORY, MoneyWiseCashCategoryList.class);
292 }
293
294
295
296
297
298
299 public MoneyWiseLoanCategoryList getLoanCategories() {
300 return getDataList(MoneyWiseBasicDataType.LOANCATEGORY, MoneyWiseLoanCategoryList.class);
301 }
302
303
304
305
306
307
308 public MoneyWiseTransCategoryList getTransCategories() {
309 return getDataList(MoneyWiseBasicDataType.TRANSCATEGORY, MoneyWiseTransCategoryList.class);
310 }
311
312
313
314
315
316
317 public MoneyWiseExchangeRateList getExchangeRates() {
318 return getDataList(MoneyWiseBasicDataType.EXCHANGERATE, MoneyWiseExchangeRateList.class);
319 }
320
321
322
323
324
325
326 public MoneyWisePayeeList getPayees() {
327 return getDataList(MoneyWiseBasicDataType.PAYEE, MoneyWisePayeeList.class);
328 }
329
330
331
332
333
334
335 public MoneyWisePayeeInfoList getPayeeInfo() {
336 return getDataList(MoneyWiseBasicDataType.PAYEEINFO, MoneyWisePayeeInfoList.class);
337 }
338
339
340
341
342
343
344 public MoneyWiseSecurityList getSecurities() {
345 return getDataList(MoneyWiseBasicDataType.SECURITY, MoneyWiseSecurityList.class);
346 }
347
348
349
350
351
352
353 public MoneyWiseSecurityPriceList getSecurityPrices() {
354 return getDataList(MoneyWiseBasicDataType.SECURITYPRICE, MoneyWiseSecurityPriceList.class);
355 }
356
357
358
359
360
361
362 public MoneyWiseSecurityInfoList getSecurityInfo() {
363 return getDataList(MoneyWiseBasicDataType.SECURITYINFO, MoneyWiseSecurityInfoList.class);
364 }
365
366
367
368
369
370
371 public MoneyWiseDepositList getDeposits() {
372 return getDataList(MoneyWiseBasicDataType.DEPOSIT, MoneyWiseDepositList.class);
373 }
374
375
376
377
378
379
380 public MoneyWiseDepositRateList getDepositRates() {
381 return getDataList(MoneyWiseBasicDataType.DEPOSITRATE, MoneyWiseDepositRateList.class);
382 }
383
384
385
386
387
388
389 public MoneyWiseDepositInfoList getDepositInfo() {
390 return getDataList(MoneyWiseBasicDataType.DEPOSITINFO, MoneyWiseDepositInfoList.class);
391 }
392
393
394
395
396
397
398 public MoneyWiseCashList getCash() {
399 return getDataList(MoneyWiseBasicDataType.CASH, MoneyWiseCashList.class);
400 }
401
402
403
404
405
406
407 public MoneyWiseCashInfoList getCashInfo() {
408 return getDataList(MoneyWiseBasicDataType.CASHINFO, MoneyWiseCashInfoList.class);
409 }
410
411
412
413
414
415
416 public MoneyWiseLoanList getLoans() {
417 return getDataList(MoneyWiseBasicDataType.LOAN, MoneyWiseLoanList.class);
418 }
419
420
421
422
423
424
425 public MoneyWiseLoanInfoList getLoanInfo() {
426 return getDataList(MoneyWiseBasicDataType.LOANINFO, MoneyWiseLoanInfoList.class);
427 }
428
429
430
431
432
433
434 public MoneyWisePortfolioList getPortfolios() {
435 return getDataList(MoneyWiseBasicDataType.PORTFOLIO, MoneyWisePortfolioList.class);
436 }
437
438
439
440
441
442
443 public MoneyWisePortfolioInfoList getPortfolioInfo() {
444 return getDataList(MoneyWiseBasicDataType.PORTFOLIOINFO, MoneyWisePortfolioInfoList.class);
445 }
446
447
448
449
450
451
452 public MoneyWiseTransactionList getTransactions() {
453 return getDataList(MoneyWiseBasicDataType.TRANSACTION, MoneyWiseTransactionList.class);
454 }
455
456
457
458
459
460
461 public MoneyWiseTransInfoList getTransactionInfo() {
462 return getDataList(MoneyWiseBasicDataType.TRANSACTIONINFO, MoneyWiseTransInfoList.class);
463 }
464
465
466
467
468
469
470 public MoneyWiseTaxFactory getTaxFactory() {
471 return theTaxFactory;
472 }
473
474
475
476
477
478
479 public OceanusDateRange getDateRange() {
480 return theTaxFactory.getDateRange();
481 }
482
483
484
485
486
487
488 public MoneyWiseCurrency getReportingCurrency() {
489
490 if (theReportingCurrency == null) {
491
492 theReportingCurrency = getAccountCurrencies().findReporting();
493 }
494 return theReportingCurrency;
495 }
496
497
498
499
500
501
502 public MoneyWiseSecurityPriceDataMap getSecurityPriceDataMap() {
503 return getSecurityPrices().getDataMap();
504 }
505
506
507
508
509
510
511 public MoneyWiseDepositRateDataMap getDepositRateDataMap() {
512 return getDepositRates().getDataMap();
513 }
514
515
516
517
518
519
520 public MoneyWiseExchangeRateDataMap getExchangeRateDataMap() {
521 return getExchangeRates().getDataMap();
522 }
523
524
525
526
527
528
529 public boolean checkClosedAccounts() {
530 return !ignoreCheckClosedAccounts;
531 }
532
533
534
535
536 public void hitEventLimit() {
537 ignoreCheckClosedAccounts = true;
538 }
539
540
541
542
543 public void doNewValidityChecks() {
544 newValidityChecks = true;
545 }
546
547
548
549
550
551
552 public boolean newValidityChecks() {
553 return newValidityChecks;
554 }
555
556
557
558
559
560
561
562 private PrometheusDataList<?> newList(final MoneyWiseStaticDataType pListType) {
563
564 switch (pListType) {
565 case DEPOSITTYPE:
566 return new MoneyWiseDepositCategoryTypeList(this);
567 case CASHTYPE:
568 return new MoneyWiseCashCategoryTypeList(this);
569 case LOANTYPE:
570 return new MoneyWiseLoanCategoryTypeList(this);
571 case PAYEETYPE:
572 return new MoneyWisePayeeTypeList(this);
573 case PORTFOLIOTYPE:
574 return new MoneyWisePortfolioTypeList(this);
575 case SECURITYTYPE:
576 return new MoneyWiseSecurityTypeList(this);
577 case TRANSTYPE:
578 return new MoneyWiseTransCategoryTypeList(this);
579 case TAXBASIS:
580 return new MoneyWiseTaxBasisList(this);
581 case CURRENCY:
582 return new MoneyWiseCurrencyList(this);
583 case ACCOUNTINFOTYPE:
584 return new MoneyWiseAccountInfoTypeList(this);
585 case TRANSINFOTYPE:
586 return new MoneyWiseTransInfoTypeList(this);
587 default:
588 throw new IllegalArgumentException(pListType.toString());
589 }
590 }
591
592
593
594
595
596
597
598 private PrometheusDataList<?> newList(final MoneyWiseBasicDataType pListType) {
599
600 switch (pListType) {
601 case TRANSTAG:
602 return new MoneyWiseTransTagList(this);
603 case REGION:
604 return new MoneyWiseRegionList(this);
605 case DEPOSITCATEGORY:
606 return new MoneyWiseDepositCategoryList(this);
607 case CASHCATEGORY:
608 return new MoneyWiseCashCategoryList(this);
609 case LOANCATEGORY:
610 return new MoneyWiseLoanCategoryList(this);
611 case TRANSCATEGORY:
612 return new MoneyWiseTransCategoryList(this);
613 case EXCHANGERATE:
614 return new MoneyWiseExchangeRateList(this);
615 case PAYEE:
616 return new MoneyWisePayeeList(this);
617 case PAYEEINFO:
618 return new MoneyWisePayeeInfoList(this);
619 case SECURITY:
620 return new MoneyWiseSecurityList(this);
621 case SECURITYPRICE:
622 return new MoneyWiseSecurityPriceList(this);
623 case SECURITYINFO:
624 return new MoneyWiseSecurityInfoList(this);
625 case DEPOSIT:
626 return new MoneyWiseDepositList(this);
627 case DEPOSITRATE:
628 return new MoneyWiseDepositRateList(this);
629 case DEPOSITINFO:
630 return new MoneyWiseDepositInfoList(this);
631 case CASH:
632 return new MoneyWiseCashList(this);
633 case CASHINFO:
634 return new MoneyWiseCashInfoList(this);
635 case LOAN:
636 return new MoneyWiseLoanList(this);
637 case LOANINFO:
638 return new MoneyWiseLoanInfoList(this);
639 case PORTFOLIO:
640 return new MoneyWisePortfolioList(this);
641 case PORTFOLIOINFO:
642 return new MoneyWisePortfolioInfoList(this);
643 case TRANSACTION:
644 return new MoneyWiseTransactionList(this);
645 case TRANSACTIONINFO:
646 return new MoneyWiseTransInfoList(this);
647 default:
648 throw new IllegalArgumentException(pListType.toString());
649 }
650 }
651
652 @Override
653 public MoneyWiseDataSet deriveUpdateSet() throws OceanusException {
654
655 final MoneyWiseDataSet myExtract = new MoneyWiseDataSet(this);
656
657
658 myExtract.deriveUpdateSet(this);
659
660
661 return myExtract;
662 }
663
664 @Override
665 public MoneyWiseDataSet deriveCloneSet() throws OceanusException {
666
667 final MoneyWiseDataSet myExtract = new MoneyWiseDataSet(this);
668
669
670 myExtract.buildEmptyCloneSet(this);
671
672
673 myExtract.deriveCloneSet(this);
674
675
676 return myExtract;
677 }
678
679
680
681
682
683
684
685
686
687
688
689
690 @Override
691 public MoneyWiseDataSet getDifferenceSet(final TethysUIThreadStatusReport pReport,
692 final PrometheusDataSet pOld) throws OceanusException {
693
694 final MoneyWiseDataSet myDiffers = new MoneyWiseDataSet(this);
695
696
697 myDiffers.deriveDifferences(pReport, this, pOld);
698
699
700 return myDiffers;
701 }
702
703
704
705
706 public void updateMaps() {
707
708 final Iterator<Entry<MetisListKey, PrometheusDataList<?>>> myIterator = entryIterator();
709 while (myIterator.hasNext()) {
710 final Entry<MetisListKey, PrometheusDataList<?>> myEntry = myIterator.next();
711
712
713 if (!(myEntry.getKey() instanceof PrometheusCryptographyDataType)) {
714 final PrometheusDataList<?> myList = myEntry.getValue();
715 myList.updateMaps();
716 }
717 }
718 }
719 }