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