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