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.MoneyWiseLoanCategoryClass;
27 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseLoanCategoryType;
28 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseLoanCategoryType.MoneyWiseLoanCategoryTypeList;
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 MoneyWiseLoanCategory
43 extends MoneyWiseCategoryBase
44 implements MoneyWiseAssetCategory {
45
46
47
48 public static final String OBJECT_NAME = MoneyWiseBasicDataType.LOANCATEGORY.getItemName();
49
50
51
52
53 public static final String LIST_NAME = MoneyWiseBasicDataType.LOANCATEGORY.getListName();
54
55
56
57
58 private static final MetisFieldVersionedSet<MoneyWiseLoanCategory> FIELD_DEFS = MetisFieldVersionedSet.newVersionedFieldSet(MoneyWiseLoanCategory.class);
59
60
61
62
63 static {
64 FIELD_DEFS.declareLinkField(MoneyWiseStaticDataType.LOANTYPE);
65 }
66
67
68
69
70
71
72
73 MoneyWiseLoanCategory(final MoneyWiseLoanCategoryList pList,
74 final MoneyWiseLoanCategory pCategory) {
75
76 super(pList, pCategory);
77 }
78
79
80
81
82
83
84
85
86 private MoneyWiseLoanCategory(final MoneyWiseLoanCategoryList pList,
87 final PrometheusDataValues pValues) throws OceanusException {
88
89 super(pList, pValues);
90
91
92 final Object myValue = pValues.getValue(MoneyWiseStaticDataType.LOANTYPE);
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 MoneyWiseLoanCategory(final MoneyWiseLoanCategoryList 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.LOANTYPE.equals(pField)) {
118 return true;
119 }
120
121
122 return super.includeXmlField(pField);
123 }
124
125 @Override
126 public MoneyWiseLoanCategoryType getCategoryType() {
127 return getValues().getValue(MoneyWiseStaticDataType.LOANTYPE, MoneyWiseLoanCategoryType.class);
128 }
129
130 @Override
131 public MoneyWiseLoanCategoryClass getCategoryTypeClass() {
132 final MoneyWiseLoanCategoryType myType = getCategoryType();
133 return myType == null
134 ? null
135 : myType.getLoanClass();
136 }
137
138 @Override
139 public MoneyWiseLoanCategory getParentCategory() {
140 return getValues().getValue(PrometheusDataResource.DATAGROUP_PARENT, MoneyWiseLoanCategory.class);
141 }
142
143
144
145
146
147
148
149 private void setValueType(final MoneyWiseLoanCategoryType pValue) {
150 getValues().setUncheckedValue(MoneyWiseStaticDataType.LOANTYPE, pValue);
151 }
152
153
154
155
156
157
158 private void setValueType(final Integer pValue) {
159 getValues().setUncheckedValue(MoneyWiseStaticDataType.LOANTYPE, pValue);
160 }
161
162
163
164
165
166
167 private void setValueType(final String pValue) {
168 getValues().setUncheckedValue(MoneyWiseStaticDataType.LOANTYPE, pValue);
169 }
170
171
172
173
174
175
176
177 public boolean isCategoryClass(final MoneyWiseLoanCategoryClass pClass) {
178
179 return getCategoryTypeClass() == pClass;
180 }
181
182 @Override
183 public MoneyWiseLoanCategoryList getList() {
184 return (MoneyWiseLoanCategoryList) super.getList();
185 }
186
187
188
189
190
191
192
193 public void setDefaults(final MoneyWiseLoanCategory pParent) throws OceanusException {
194 getList().getValidator().setDefaults(pParent, this);
195 }
196
197 @Override
198 public void resolveDataSetLinks() throws OceanusException {
199
200 super.resolveDataSetLinks();
201
202
203 final MoneyWiseDataSet myData = getDataSet();
204 resolveDataLink(MoneyWiseStaticDataType.LOANTYPE, myData.getLoanCategoryTypes());
205 }
206
207 @Override
208 protected void resolveEditSetLinks() throws OceanusException {
209
210 resolveDataLink(PrometheusDataResource.DATAGROUP_PARENT, getList());
211
212
213 final PrometheusEditSet myEditSet = getList().getEditSet();
214 if (myEditSet.hasDataType(MoneyWiseStaticDataType.LOANTYPE)) {
215 resolveDataLink(MoneyWiseStaticDataType.LOANTYPE, myEditSet.getDataList(MoneyWiseStaticDataType.LOANTYPE, MoneyWiseLoanCategoryTypeList.class));
216 }
217 }
218
219 @Override
220 public void setCategoryType(final PrometheusStaticDataItem pType) {
221 setValueType((MoneyWiseLoanCategoryType) pType);
222 }
223
224
225
226
227
228
229
230 @Override
231 public boolean applyChanges(final PrometheusDataItem pCategory) {
232
233 if (!(pCategory instanceof MoneyWiseLoanCategory)) {
234 return false;
235 }
236 final MoneyWiseLoanCategory myCategory = (MoneyWiseLoanCategory) pCategory;
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 MoneyWiseDataSet 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 }