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.metis.data.MetisDataFieldValue;
20 import io.github.tonywasher.joceanus.metis.data.MetisDataItem.MetisDataFieldId;
21 import io.github.tonywasher.joceanus.metis.field.MetisFieldSet;
22 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseSecurityInfo.MoneyWiseSecurityInfoList;
23 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseAccountInfoClass;
24 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseAccountInfoType.MoneyWiseAccountInfoTypeList;
25 import io.github.tonywasher.joceanus.oceanus.base.OceanusException;
26 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataInfoClass;
27 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataInfoSet;
28 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataItem;
29 import io.github.tonywasher.joceanus.prometheus.views.PrometheusEditSet;
30
31 import java.util.Arrays;
32 import java.util.Iterator;
33 import java.util.Map;
34
35
36
37
38
39
40 public class MoneyWiseSecurityInfoSet
41 extends PrometheusDataInfoSet<MoneyWiseSecurityInfo> {
42
43
44
45 private static final MetisFieldSet<MoneyWiseSecurityInfoSet> FIELD_DEFS = MetisFieldSet.newFieldSet(MoneyWiseSecurityInfoSet.class);
46
47
48
49
50 private static final Map<MetisDataFieldId, MoneyWiseAccountInfoClass> FIELDSET_MAP = FIELD_DEFS.buildFieldMap(MoneyWiseAccountInfoClass.class, MoneyWiseSecurityInfoSet::getFieldValue);
51
52
53
54
55 private static final Map<MoneyWiseAccountInfoClass, MetisDataFieldId> REVERSE_FIELDMAP = MetisFieldSet.reverseFieldMap(FIELDSET_MAP, MoneyWiseAccountInfoClass.class);
56
57
58
59
60
61
62
63
64 protected MoneyWiseSecurityInfoSet(final PrometheusDataItem pOwner,
65 final MoneyWiseAccountInfoTypeList pTypeList,
66 final MoneyWiseSecurityInfoList pInfoList) {
67
68 super(pOwner, pTypeList, pInfoList);
69 }
70
71 @Override
72 public MetisFieldSetDef getDataFieldSet() {
73 return FIELD_DEFS;
74 }
75
76
77
78
79
80
81
82 public Object getFieldValue(final MetisDataFieldId pFieldId) {
83
84 final MoneyWiseAccountInfoClass myClass = getClassForField(pFieldId);
85 if (myClass != null) {
86 return getInfoSetValue(myClass);
87 }
88
89
90 return null;
91 }
92
93
94
95
96
97
98
99 private Object getInfoSetValue(final MoneyWiseAccountInfoClass pInfoClass) {
100 final Object myValue = switch (pInfoClass) {
101 case REGION ->
102
103 getRegion(pInfoClass);
104 case UNDERLYINGSTOCK ->
105
106 getSecurity(pInfoClass);
107 default ->
108
109 getField(pInfoClass);
110 };
111
112
113 return myValue != null
114 ? myValue
115 : MetisDataFieldValue.SKIP;
116 }
117
118
119
120
121
122
123
124 public static MoneyWiseAccountInfoClass getClassForField(final MetisDataFieldId pField) {
125
126 return FIELDSET_MAP.get(pField);
127 }
128
129
130
131
132
133
134
135 public static MetisDataFieldId getFieldForClass(final MoneyWiseAccountInfoClass pClass) {
136
137 return REVERSE_FIELDMAP.get(pClass);
138 }
139
140 @Override
141 public MetisDataFieldId getFieldForClass(final PrometheusDataInfoClass pClass) {
142 return getFieldForClass((MoneyWiseAccountInfoClass) pClass);
143 }
144
145 @Override
146 public Iterator<PrometheusDataInfoClass> classIterator() {
147 final PrometheusDataInfoClass[] myValues = MoneyWiseAccountInfoClass.values();
148 return Arrays.stream(myValues).iterator();
149 }
150
151
152
153
154
155
156 protected void cloneDataInfoSet(final MoneyWiseSecurityInfoSet pSource) {
157
158 cloneTheDataInfoSet(pSource);
159 }
160
161
162
163
164
165
166
167 void resolveEditSetLinks(final PrometheusEditSet pEditSet) throws OceanusException {
168
169 for (MoneyWiseSecurityInfo myInfo : this) {
170 myInfo.resolveEditSetLinks(pEditSet);
171 }
172 }
173
174
175
176
177
178
179
180 public MoneyWiseRegion getRegion(final MoneyWiseAccountInfoClass pInfoClass) {
181
182 final MoneyWiseSecurityInfo myValue = getInfo(pInfoClass);
183
184
185 if (myValue == null) {
186 return null;
187 }
188
189
190 return myValue.getRegion();
191 }
192
193
194
195
196
197
198
199 public MoneyWiseAssetBase getSecurity(final MoneyWiseAccountInfoClass pInfoClass) {
200
201 final MoneyWiseSecurityInfo myValue = getInfo(pInfoClass);
202
203
204 if (myValue == null) {
205 return null;
206 }
207
208
209 return myValue.getSecurity();
210 }
211 }