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.MetisDataDifference;
21 import io.github.tonywasher.joceanus.metis.data.MetisDataItem.MetisDataFieldId;
22 import io.github.tonywasher.joceanus.metis.data.MetisDataResource;
23 import io.github.tonywasher.joceanus.metis.field.MetisFieldSet;
24 import io.github.tonywasher.joceanus.metis.field.MetisFieldVersionedSet;
25 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseAssetCategory;
26 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseCashCategoryClass;
27 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseCashCategoryType;
28 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseCashCategoryType.MoneyWiseCashCategoryTypeList;
29 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseStaticDataType;
30 import io.github.tonywasher.joceanus.moneywise.exc.MoneyWiseDataException;
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.PrometheusDataValues;
34 import io.github.tonywasher.joceanus.prometheus.data.PrometheusStaticDataItem;
35 import io.github.tonywasher.joceanus.prometheus.views.PrometheusEditSet;
36
37 import java.util.Iterator;
38
39
40
41
42 public final class MoneyWiseCashCategory
43 extends MoneyWiseCategoryBase
44 implements MoneyWiseAssetCategory {
45
46
47
48 public static final String OBJECT_NAME = MoneyWiseBasicDataType.CASHCATEGORY.getItemName();
49
50
51
52
53 public static final String LIST_NAME = MoneyWiseBasicDataType.CASHCATEGORY.getListName();
54
55
56
57
58 private static final MetisFieldVersionedSet<MoneyWiseCashCategory> FIELD_DEFS = MetisFieldVersionedSet.newVersionedFieldSet(MoneyWiseCashCategory.class);
59
60
61
62
63 static {
64 FIELD_DEFS.declareLinkField(MoneyWiseStaticDataType.CASHTYPE);
65 }
66
67
68
69
70
71
72
73 MoneyWiseCashCategory(final MoneyWiseCashCategoryList pList,
74 final MoneyWiseCashCategory pCategory) {
75
76 super(pList, pCategory);
77 }
78
79
80
81
82
83
84
85
86 private MoneyWiseCashCategory(final MoneyWiseCashCategoryList pList,
87 final PrometheusDataValues pValues) throws OceanusException {
88
89 super(pList, pValues);
90
91
92 final Object myValue = pValues.getValue(MoneyWiseStaticDataType.CASHTYPE);
93 if (myValue instanceof Integer i) {
94 setValueType(i);
95 } else if (myValue instanceof String s) {
96 setValueType(s);
97 }
98 }
99
100
101
102
103
104
105 public MoneyWiseCashCategory(final MoneyWiseCashCategoryList pList) {
106 super(pList);
107 }
108
109 @Override
110 public MetisFieldSetDef getDataFieldSet() {
111 return FIELD_DEFS;
112 }
113
114 @Override
115 public boolean includeXmlField(final MetisDataFieldId pField) {
116
117 if (MoneyWiseStaticDataType.CASHTYPE.equals(pField)) {
118 return true;
119 }
120
121
122 return super.includeXmlField(pField);
123 }
124
125 @Override
126 public MoneyWiseCashCategoryType getCategoryType() {
127 return getValues().getValue(MoneyWiseStaticDataType.CASHTYPE, MoneyWiseCashCategoryType.class);
128 }
129
130 @Override
131 public MoneyWiseCashCategoryClass getCategoryTypeClass() {
132 final MoneyWiseCashCategoryType myType = getCategoryType();
133 return myType == null
134 ? null
135 : myType.getCashClass();
136 }
137
138 @Override
139 public MoneyWiseCashCategory getParentCategory() {
140 return getValues().getValue(PrometheusDataResource.DATAGROUP_PARENT, MoneyWiseCashCategory.class);
141 }
142
143
144
145
146
147
148 private void setValueType(final MoneyWiseCashCategoryType pValue) {
149 getValues().setUncheckedValue(MoneyWiseStaticDataType.CASHTYPE, pValue);
150 }
151
152
153
154
155
156
157 private void setValueType(final Integer pValue) {
158 getValues().setUncheckedValue(MoneyWiseStaticDataType.CASHTYPE, pValue);
159 }
160
161
162
163
164
165
166 private void setValueType(final String pValue) {
167 getValues().setUncheckedValue(MoneyWiseStaticDataType.CASHTYPE, pValue);
168 }
169
170
171
172
173
174
175
176 public boolean isCategoryClass(final MoneyWiseCashCategoryClass pClass) {
177
178 return getCategoryTypeClass() == pClass;
179 }
180
181 @Override
182 public MoneyWiseCashCategoryList getList() {
183 return (MoneyWiseCashCategoryList) super.getList();
184 }
185
186
187
188
189
190
191
192 public void setDefaults(final MoneyWiseCashCategory pParent) throws OceanusException {
193 getList().getValidator().setDefaults(pParent, this);
194 }
195
196 @Override
197 public void resolveDataSetLinks() throws OceanusException {
198
199 super.resolveDataSetLinks();
200
201
202 final MoneyWiseDataSet myData = getDataSet();
203 resolveDataLink(MoneyWiseStaticDataType.CASHTYPE, myData.getCashCategoryTypes());
204 }
205
206 @Override
207 protected void resolveEditSetLinks() throws OceanusException {
208
209 resolveDataLink(PrometheusDataResource.DATAGROUP_PARENT, getList());
210
211
212 final PrometheusEditSet myEditSet = getList().getEditSet();
213 if (myEditSet.hasDataType(MoneyWiseStaticDataType.CASHTYPE)) {
214 resolveDataLink(MoneyWiseStaticDataType.CASHTYPE, myEditSet.getDataList(MoneyWiseStaticDataType.CASHTYPE, MoneyWiseCashCategoryTypeList.class));
215 }
216 }
217
218 @Override
219 public void setCategoryType(final PrometheusStaticDataItem pType) {
220 setValueType((MoneyWiseCashCategoryType) pType);
221 }
222
223
224
225
226
227
228
229 @Override
230 public boolean applyChanges(final PrometheusDataItem pCategory) {
231
232 if (!(pCategory instanceof MoneyWiseCashCategory)) {
233 return false;
234 }
235 final MoneyWiseCashCategory myCategory = (MoneyWiseCashCategory) pCategory;
236
237
238 pushHistory();
239
240
241 applyBasicChanges(myCategory);
242
243
244 if (!MetisDataDifference.isEqual(getCategoryType(), myCategory.getCategoryType())) {
245 setValueType(myCategory.getCategoryType());
246 }
247
248
249 return checkForHistory();
250 }
251
252
253
254
255 public static class MoneyWiseCashCategoryList
256 extends MoneyWiseCategoryBaseList<MoneyWiseCashCategory> {
257
258
259
260 private static final MetisFieldSet<MoneyWiseCashCategoryList> FIELD_DEFS = MetisFieldSet.newFieldSet(MoneyWiseCashCategoryList.class);
261
262
263
264
265 private PrometheusEditSet theEditSet;
266
267
268
269
270
271
272 protected MoneyWiseCashCategoryList(final MoneyWiseDataSet pData) {
273 super(pData, MoneyWiseCashCategory.class, MoneyWiseBasicDataType.CASHCATEGORY);
274 }
275
276
277
278
279
280
281 protected MoneyWiseCashCategoryList(final MoneyWiseCashCategoryList pSource) {
282 super(pSource);
283 }
284
285 @Override
286 public MetisFieldSet<MoneyWiseCashCategoryList> getDataFieldSet() {
287 return FIELD_DEFS;
288 }
289
290 @Override
291 public String listName() {
292 return LIST_NAME;
293 }
294
295 @Override
296 public MetisFieldSetDef getItemFields() {
297 return MoneyWiseCashCategory.FIELD_DEFS;
298 }
299
300
301
302
303
304
305 public PrometheusEditSet getEditSet() {
306 return theEditSet;
307 }
308
309 @Override
310 protected MoneyWiseCashCategoryList getEmptyList(final PrometheusListStyle pStyle) {
311 final MoneyWiseCashCategoryList myList = new MoneyWiseCashCategoryList(this);
312 myList.setStyle(pStyle);
313 return myList;
314 }
315
316
317
318
319
320
321
322
323 public MoneyWiseCashCategoryList deriveEditList(final PrometheusEditSet pEditSet) throws OceanusException {
324
325 final MoneyWiseCashCategoryList myList = getEmptyList(PrometheusListStyle.EDIT);
326 myList.ensureMap();
327 pEditSet.setEditEntryList(MoneyWiseBasicDataType.CASHCATEGORY, myList);
328 myList.getValidator().setEditSet(pEditSet);
329
330
331 myList.theEditSet = pEditSet;
332
333
334 final Iterator<MoneyWiseCashCategory> myIterator = iterator();
335 while (myIterator.hasNext()) {
336 final MoneyWiseCashCategory myCurr = myIterator.next();
337
338
339 if (myCurr.isDeleted()) {
340 continue;
341 }
342
343
344 final MoneyWiseCashCategory myCategory = new MoneyWiseCashCategory(myList, myCurr);
345 myList.add(myCategory);
346 myCategory.resolveEditSetLinks();
347
348
349 myCategory.adjustMapForItem();
350 }
351
352
353 return myList;
354 }
355
356
357
358
359
360
361
362 @Override
363 public MoneyWiseCashCategory addCopyItem(final PrometheusDataItem pCategory) {
364
365 if (!(pCategory instanceof MoneyWiseCashCategory)) {
366 throw new UnsupportedOperationException();
367 }
368
369 final MoneyWiseCashCategory myCategory = new MoneyWiseCashCategory(this, (MoneyWiseCashCategory) pCategory);
370 add(myCategory);
371 return myCategory;
372 }
373
374
375
376
377
378
379 @Override
380 public MoneyWiseCashCategory addNewItem() {
381 final MoneyWiseCashCategory myCategory = new MoneyWiseCashCategory(this);
382 add(myCategory);
383 return myCategory;
384 }
385
386 @Override
387 public MoneyWiseCashCategory addValuesItem(final PrometheusDataValues pValues) throws OceanusException {
388
389 final MoneyWiseCashCategory myCategory = new MoneyWiseCashCategory(this, pValues);
390
391
392 if (!isIdUnique(myCategory.getIndexedId())) {
393 myCategory.addError(ERROR_DUPLICATE, MetisDataResource.DATA_ID);
394 throw new MoneyWiseDataException(myCategory, ERROR_VALIDATION);
395 }
396
397
398 add(myCategory);
399
400
401 return myCategory;
402 }
403 }
404 }