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