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.MoneyWiseCashInfo.MoneyWiseCashInfoList;
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 MoneyWiseCashInfoSet
40 extends PrometheusDataInfoSet<MoneyWiseCashInfo> {
41
42
43
44 private static final MetisFieldSet<MoneyWiseCashInfoSet> FIELD_DEFS = MetisFieldSet.newFieldSet(MoneyWiseCashInfoSet.class);
45
46
47
48
49 private static final Map<MetisDataFieldId, MoneyWiseAccountInfoClass> FIELDSET_MAP = FIELD_DEFS.buildFieldMap(MoneyWiseAccountInfoClass.class, MoneyWiseCashInfoSet::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 public static final String ERROR_AUTOEXP = MoneyWiseBasicResource.CASH_ERROR_AUTOEXPENSE.getValue();
60
61
62
63
64
65
66
67
68 protected MoneyWiseCashInfoSet(final MoneyWiseCash pOwner,
69 final MoneyWiseAccountInfoTypeList pTypeList,
70 final MoneyWiseCashInfoList pInfoList) {
71
72 super(pOwner, pTypeList, pInfoList);
73 }
74
75 @Override
76 public MetisFieldSetDef getDataFieldSet() {
77 return FIELD_DEFS;
78 }
79
80 @Override
81 public MoneyWiseCash getOwner() {
82 return (MoneyWiseCash) super.getOwner();
83 }
84
85
86
87
88
89
90
91 public Object getFieldValue(final MetisDataFieldId pFieldId) {
92
93 final MoneyWiseAccountInfoClass myClass = getClassForField(pFieldId);
94 if (myClass != null) {
95 return getInfoSetValue(myClass);
96 }
97
98
99 return null;
100 }
101
102
103
104
105
106
107
108 private Object getInfoSetValue(final MoneyWiseAccountInfoClass pInfoClass) {
109 final Object myValue;
110
111 switch (pInfoClass) {
112 case AUTOPAYEE:
113
114 myValue = getPayee(pInfoClass);
115 break;
116 case AUTOEXPENSE:
117
118 myValue = getEventCategory(pInfoClass);
119 break;
120 default:
121
122 myValue = getField(pInfoClass);
123 break;
124 }
125
126
127 return myValue != null
128 ? myValue
129 : MetisDataFieldValue.SKIP;
130 }
131
132
133
134
135
136
137
138 public static MoneyWiseAccountInfoClass getClassForField(final MetisDataFieldId pField) {
139
140 return FIELDSET_MAP.get(pField);
141 }
142
143
144
145
146
147
148
149 public static MetisDataFieldId getFieldForClass(final MoneyWiseAccountInfoClass pClass) {
150
151 return REVERSE_FIELDMAP.get(pClass);
152 }
153
154 @Override
155 public MetisDataFieldId getFieldForClass(final PrometheusDataInfoClass pClass) {
156 return getFieldForClass((MoneyWiseAccountInfoClass) pClass);
157 }
158
159
160
161
162
163
164
165 public MoneyWisePayee getPayee(final MoneyWiseAccountInfoClass pInfoClass) {
166
167 final MoneyWiseCashInfo myValue = getInfo(pInfoClass);
168
169
170 if (myValue == null) {
171 return null;
172 }
173
174
175 return myValue.getPayee();
176 }
177
178
179
180
181
182
183
184 public MoneyWiseTransCategory getEventCategory(final MoneyWiseAccountInfoClass pInfoClass) {
185
186 final MoneyWiseCashInfo myValue = getInfo(pInfoClass);
187
188
189 if (myValue == null) {
190 return null;
191 }
192
193
194 return myValue.getEventCategory();
195 }
196
197 @Override
198 public Iterator<PrometheusDataInfoClass> classIterator() {
199 final PrometheusDataInfoClass[] myValues = MoneyWiseAccountInfoClass.values();
200 return Arrays.stream(myValues).iterator();
201 }
202
203
204
205
206
207
208 protected void cloneDataInfoSet(final MoneyWiseCashInfoSet pSource) {
209
210 cloneTheDataInfoSet(pSource);
211 }
212
213
214
215
216
217
218
219 void resolveEditSetLinks(final PrometheusEditSet pEditSet) throws OceanusException {
220
221 for (MoneyWiseCashInfo myInfo : this) {
222 myInfo.resolveEditSetLinks(pEditSet);
223 }
224 }
225 }