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