1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.moneywise.views;
18
19 import io.github.tonywasher.joceanus.metis.list.MetisListKey;
20 import io.github.tonywasher.joceanus.metis.viewer.MetisViewerEntry;
21 import io.github.tonywasher.joceanus.metis.viewer.MetisViewerManager;
22 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseBasicDataType;
23 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseBasicResource;
24 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePayee;
25 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePortfolio;
26 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseSecurity;
27 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseSecurityHolding;
28 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseTransCategory;
29 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseAccountInfoClass;
30 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseStaticDataType;
31 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataItem;
32 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataResource;
33 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataSet;
34 import io.github.tonywasher.joceanus.prometheus.maps.PrometheusMapsCtl;
35 import io.github.tonywasher.joceanus.prometheus.views.PrometheusEditSet;
36 import io.github.tonywasher.joceanus.prometheus.views.PrometheusViewerEntryId;
37
38 import java.util.ArrayList;
39 import java.util.List;
40
41
42
43
44 public class MoneyWiseMaps {
45
46
47
48 private final PrometheusMapsCtl theMaps;
49
50
51
52
53
54
55 MoneyWiseMaps(final MoneyWiseView pView) {
56
57 theMaps = new PrometheusMapsCtl(MoneyWiseMaps::deconstructPair);
58
59
60 buildMaps();
61
62
63 final MetisViewerManager myViewer = pView.getViewerManager();
64 final MetisViewerEntry mySection = pView.getViewerEntry(PrometheusViewerEntryId.ANALYSIS);
65 final MetisViewerEntry myEntry = myViewer.newEntry(mySection, "NewMaps");
66 myEntry.setObject(theMaps);
67 }
68
69
70
71
72
73
74 public void adjustForDataSet(final PrometheusDataSet pDataSet) {
75 theMaps.resetMaps();
76 theMaps.adjustForDataSet(pDataSet);
77 }
78
79
80
81
82
83
84 public void adjustForEditSet(final PrometheusEditSet pEditSet) {
85 theMaps.resetMaps();
86 theMaps.adjustForEditSet(pEditSet);
87 }
88
89
90
91
92 private void buildMaps() {
93
94 buildStaticMaps(MoneyWiseStaticDataType.DEPOSITTYPE);
95 buildStaticMaps(MoneyWiseStaticDataType.CASHTYPE);
96 buildStaticMaps(MoneyWiseStaticDataType.LOANTYPE);
97 buildStaticMaps(MoneyWiseStaticDataType.PAYEETYPE);
98 buildStaticMaps(MoneyWiseStaticDataType.SECURITYTYPE);
99 buildStaticMaps(MoneyWiseStaticDataType.PORTFOLIOTYPE);
100 buildStaticMaps(MoneyWiseStaticDataType.TRANSTYPE);
101 buildStaticMaps(MoneyWiseStaticDataType.CURRENCY);
102 buildStaticMaps(MoneyWiseStaticDataType.TAXBASIS);
103 buildStaticMaps(MoneyWiseStaticDataType.ACCOUNTINFOTYPE);
104 buildStaticMaps(MoneyWiseStaticDataType.TRANSINFOTYPE);
105
106
107 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.TRANSTAG, PrometheusDataResource.DATAITEM_FIELD_NAME);
108 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.REGION, PrometheusDataResource.DATAITEM_FIELD_NAME);
109
110
111 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.DEPOSITCATEGORY, PrometheusDataResource.DATAITEM_FIELD_NAME);
112 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.CASHCATEGORY, PrometheusDataResource.DATAITEM_FIELD_NAME);
113 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.LOANCATEGORY, PrometheusDataResource.DATAITEM_FIELD_NAME);
114 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.TRANSCATEGORY, PrometheusDataResource.DATAITEM_FIELD_NAME);
115 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.TRANSCATEGORY, MoneyWiseStaticDataType.TRANSTYPE,
116 t -> ((MoneyWiseTransCategory) t).getCategoryType().getCategoryClass().isSingular());
117
118
119 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.PAYEE, PrometheusDataResource.DATAITEM_FIELD_NAME);
120 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.PAYEE, MoneyWiseBasicResource.CATEGORY_NAME,
121 t -> ((MoneyWisePayee) t).getCategoryClass().isSingular());
122 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.DEPOSIT, PrometheusDataResource.DATAITEM_FIELD_NAME, MoneyWiseBasicDataType.PAYEE);
123 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.CASH, PrometheusDataResource.DATAITEM_FIELD_NAME, MoneyWiseBasicDataType.PAYEE);
124 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.LOAN, PrometheusDataResource.DATAITEM_FIELD_NAME, MoneyWiseBasicDataType.PAYEE);
125 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.PORTFOLIO, PrometheusDataResource.DATAITEM_FIELD_NAME, MoneyWiseBasicDataType.PAYEE);
126 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.PORTFOLIO, MoneyWiseBasicResource.CATEGORY_NAME,
127 t -> ((MoneyWisePortfolio) t).getCategoryClass().isSingular());
128 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.SECURITY, PrometheusDataResource.DATAITEM_FIELD_NAME);
129 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.SECURITY, MoneyWiseBasicResource.CATEGORY_NAME,
130 t -> ((MoneyWiseSecurity) t).getCategoryClass().isSingular());
131 theMaps.declareFieldIdMap(MoneyWiseBasicDataType.SECURITY, MoneyWiseAccountInfoClass.SYMBOL,
132 t -> ((MoneyWiseSecurity) t).getCategoryClass().needsSymbol());
133
134
135 theMaps.declareDateIdMap(MoneyWiseBasicDataType.EXCHANGERATE, MoneyWiseBasicResource.XCHGRATE_TO,
136 MoneyWiseBasicResource.MONEYWISEDATA_FIELD_DATE);
137 theMaps.declareDateIdMap(MoneyWiseBasicDataType.SECURITYPRICE, MoneyWiseBasicDataType.SECURITY,
138 MoneyWiseBasicResource.MONEYWISEDATA_FIELD_DATE);
139 theMaps.declareDateIdMap(MoneyWiseBasicDataType.DEPOSITRATE, MoneyWiseBasicDataType.DEPOSIT,
140 MoneyWiseBasicResource.DEPOSITRATE_ENDDATE, true);
141 }
142
143
144
145
146
147
148 private void buildStaticMaps(final MetisListKey pKey) {
149 theMaps.declareFieldIdMap(pKey, PrometheusDataResource.DATAITEM_FIELD_NAME);
150 theMaps.declareFieldIdMap(pKey, PrometheusDataResource.STATICDATA_SORT);
151 }
152
153
154
155
156
157
158
159 private static List<PrometheusDataItem> deconstructPair(final Object pPair) {
160 final List<PrometheusDataItem> myList = new ArrayList<>();
161 if (pPair instanceof MoneyWiseSecurityHolding myHolding) {
162 myList.add(myHolding.getPortfolio());
163 myList.add(myHolding.getSecurity());
164 }
165 return myList;
166 }
167 }