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.MoneyWiseDepositCategoryClass;
27 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseDepositCategoryType;
28 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseDepositCategoryType.MoneyWiseDepositCategoryTypeList;
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 MoneyWiseDepositCategory
43 extends MoneyWiseCategoryBase
44 implements MoneyWiseAssetCategory {
45
46
47
48 public static final String OBJECT_NAME = MoneyWiseBasicDataType.DEPOSITCATEGORY.getItemName();
49
50
51
52
53 public static final String LIST_NAME = MoneyWiseBasicDataType.DEPOSITCATEGORY.getListName();
54
55
56
57
58 private static final MetisFieldVersionedSet<MoneyWiseDepositCategory> FIELD_DEFS = MetisFieldVersionedSet.newVersionedFieldSet(MoneyWiseDepositCategory.class);
59
60
61
62
63 static {
64 FIELD_DEFS.declareLinkField(MoneyWiseStaticDataType.DEPOSITTYPE);
65 }
66
67
68
69
70
71
72
73 MoneyWiseDepositCategory(final MoneyWiseDepositCategoryList pList,
74 final MoneyWiseDepositCategory pCategory) {
75
76 super(pList, pCategory);
77 }
78
79
80
81
82
83
84
85
86 private MoneyWiseDepositCategory(final MoneyWiseDepositCategoryList pList,
87 final PrometheusDataValues pValues) throws OceanusException {
88
89 super(pList, pValues);
90
91
92 final Object myValue = pValues.getValue(MoneyWiseStaticDataType.DEPOSITTYPE);
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 MoneyWiseDepositCategory(final MoneyWiseDepositCategoryList 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.DEPOSITTYPE.equals(pField)) {
118 return true;
119 }
120
121
122 return super.includeXmlField(pField);
123 }
124
125 @Override
126 public MoneyWiseDepositCategoryType getCategoryType() {
127 return getValues().getValue(MoneyWiseStaticDataType.DEPOSITTYPE, MoneyWiseDepositCategoryType.class);
128 }
129
130 @Override
131 public MoneyWiseDepositCategoryClass getCategoryTypeClass() {
132 final MoneyWiseDepositCategoryType myType = getCategoryType();
133 return myType == null
134 ? null
135 : myType.getDepositClass();
136 }
137
138 @Override
139 public MoneyWiseDepositCategory getParentCategory() {
140 return getValues().getValue(PrometheusDataResource.DATAGROUP_PARENT, MoneyWiseDepositCategory.class);
141 }
142
143
144
145
146
147
148 private void setValueType(final MoneyWiseDepositCategoryType pValue) {
149 getValues().setUncheckedValue(MoneyWiseStaticDataType.DEPOSITTYPE, pValue);
150 }
151
152
153
154
155
156
157 private void setValueType(final Integer pValue) {
158 getValues().setUncheckedValue(MoneyWiseStaticDataType.DEPOSITTYPE, pValue);
159 }
160
161
162
163
164
165
166 private void setValueType(final String pValue) {
167 getValues().setUncheckedValue(MoneyWiseStaticDataType.DEPOSITTYPE, pValue);
168 }
169
170
171
172
173
174
175
176 public boolean isCategoryClass(final MoneyWiseDepositCategoryClass pClass) {
177
178 return getCategoryTypeClass() == pClass;
179 }
180
181 @Override
182 public MoneyWiseDepositCategoryList getList() {
183 return (MoneyWiseDepositCategoryList) super.getList();
184 }
185
186
187
188
189
190
191
192 public void setDefaults(final MoneyWiseDepositCategory 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.DEPOSITTYPE, myData.getDepositCategoryTypes());
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.DEPOSITTYPE)) {
214 resolveDataLink(MoneyWiseStaticDataType.DEPOSITTYPE, myEditSet.getDataList(MoneyWiseStaticDataType.DEPOSITTYPE, MoneyWiseDepositCategoryTypeList.class));
215 }
216 }
217
218 @Override
219 public void setCategoryType(final PrometheusStaticDataItem pType) {
220 setValueType((MoneyWiseDepositCategoryType) pType);
221 }
222
223
224
225
226
227
228
229 @Override
230 public boolean applyChanges(final PrometheusDataItem pCategory) {
231
232 if (!(pCategory instanceof MoneyWiseDepositCategory)) {
233 return false;
234 }
235 final MoneyWiseDepositCategory myCategory = (MoneyWiseDepositCategory) 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 MoneyWiseDepositCategoryList
256 extends MoneyWiseCategoryBaseList<MoneyWiseDepositCategory> {
257
258
259
260 private static final MetisFieldSet<MoneyWiseDepositCategoryList> FIELD_DEFS = MetisFieldSet.newFieldSet(MoneyWiseDepositCategoryList.class);
261
262
263
264
265 private PrometheusEditSet theEditSet;
266
267
268
269
270
271
272 protected MoneyWiseDepositCategoryList(final MoneyWiseDataSet pData) {
273 super(pData, MoneyWiseDepositCategory.class, MoneyWiseBasicDataType.DEPOSITCATEGORY);
274 }
275
276
277
278
279
280
281 protected MoneyWiseDepositCategoryList(final MoneyWiseDepositCategoryList pSource) {
282 super(pSource);
283 }
284
285 @Override
286 public MetisFieldSet<MoneyWiseDepositCategoryList> 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 MoneyWiseDepositCategory.FIELD_DEFS;
298 }
299
300
301
302
303
304
305 public PrometheusEditSet getEditSet() {
306 return theEditSet;
307 }
308
309 @Override
310 protected MoneyWiseDepositCategoryList getEmptyList(final PrometheusListStyle pStyle) {
311 final MoneyWiseDepositCategoryList myList = new MoneyWiseDepositCategoryList(this);
312 myList.setStyle(pStyle);
313 return myList;
314 }
315
316
317
318
319
320
321
322
323 public MoneyWiseDepositCategoryList deriveEditList(final PrometheusEditSet pEditSet) throws OceanusException {
324
325 final MoneyWiseDepositCategoryList myList = getEmptyList(PrometheusListStyle.EDIT);
326 myList.ensureMap();
327 pEditSet.setEditEntryList(MoneyWiseBasicDataType.DEPOSITCATEGORY, myList);
328 myList.getValidator().setEditSet(pEditSet);
329
330
331 myList.theEditSet = pEditSet;
332
333
334 final Iterator<MoneyWiseDepositCategory> myIterator = iterator();
335 while (myIterator.hasNext()) {
336 final MoneyWiseDepositCategory myCurr = myIterator.next();
337
338
339 if (myCurr.isDeleted()) {
340 continue;
341 }
342
343
344 final MoneyWiseDepositCategory myCategory = new MoneyWiseDepositCategory(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 MoneyWiseDepositCategory addCopyItem(final PrometheusDataItem pCategory) {
364
365 if (!(pCategory instanceof MoneyWiseDepositCategory)) {
366 throw new UnsupportedOperationException();
367 }
368
369 final MoneyWiseDepositCategory myCategory = new MoneyWiseDepositCategory(this, (MoneyWiseDepositCategory) pCategory);
370 add(myCategory);
371 return myCategory;
372 }
373
374
375
376
377
378
379 @Override
380 public MoneyWiseDepositCategory addNewItem() {
381 final MoneyWiseDepositCategory myCategory = new MoneyWiseDepositCategory(this);
382 add(myCategory);
383 return myCategory;
384 }
385
386 @Override
387 public MoneyWiseDepositCategory addValuesItem(final PrometheusDataValues pValues) throws OceanusException {
388
389 final MoneyWiseDepositCategory myCategory = new MoneyWiseDepositCategory(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 }