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.MetisDataResource;
22 import io.github.tonywasher.joceanus.metis.field.MetisFieldSet;
23 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePayee.MoneyWisePayeeList;
24 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseAccountInfoClass;
25 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseAccountInfoType;
26 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseAccountInfoType.MoneyWiseAccountInfoTypeList;
27 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseStaticDataType;
28 import io.github.tonywasher.joceanus.moneywise.exc.MoneyWiseDataException;
29 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataInfoClass;
30 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataInfoItem;
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
38
39
40
41
42 public class MoneyWisePayeeInfo
43 extends PrometheusDataInfoItem {
44
45
46
47 public static final String OBJECT_NAME = MoneyWiseBasicDataType.PAYEEINFO.getItemName();
48
49
50
51
52 public static final String LIST_NAME = MoneyWiseBasicDataType.PAYEEINFO.getListName();
53
54
55
56
57 private static final MetisFieldSet<MoneyWisePayeeInfo> FIELD_DEFS = MetisFieldSet.newFieldSet(MoneyWisePayeeInfo.class);
58
59
60
61
62
63
64
65 protected MoneyWisePayeeInfo(final MoneyWisePayeeInfoList pList,
66 final MoneyWisePayeeInfo pInfo) {
67
68 super(pList, pInfo);
69 }
70
71
72
73
74
75
76
77
78 private MoneyWisePayeeInfo(final MoneyWisePayeeInfoList pList,
79 final MoneyWisePayee pPayee,
80 final MoneyWiseAccountInfoType pType) {
81
82 super(pList);
83 setNextDataKeySet();
84
85
86 setValueInfoType(pType);
87 setValueOwner(pPayee);
88 }
89
90
91
92
93
94
95
96
97 private MoneyWisePayeeInfo(final MoneyWisePayeeInfoList pList,
98 final PrometheusDataValues pValues) throws OceanusException {
99
100 super(pList, pValues);
101
102
103 try {
104
105 final MoneyWiseDataSet myData = getDataSet();
106 resolveDataLink(PrometheusDataResource.DATAINFO_TYPE, myData.getActInfoTypes());
107 resolveDataLink(PrometheusDataResource.DATAINFO_OWNER, myData.getPayees());
108
109
110 setValue(pValues.getValue(PrometheusDataResource.DATAINFO_VALUE));
111
112
113 final MoneyWisePayeeInfoSet mySet = getOwner().getInfoSet();
114 mySet.registerInfo(this);
115
116 } catch (OceanusException e) {
117
118 throw new MoneyWiseDataException(this, ERROR_CREATEITEM, e);
119 }
120 }
121
122 @Override
123 public MetisFieldSetDef getDataFieldSet() {
124 return FIELD_DEFS;
125 }
126
127 @Override
128 public MoneyWiseAccountInfoType getInfoType() {
129 return getValues().getValue(PrometheusDataResource.DATAINFO_TYPE, MoneyWiseAccountInfoType.class);
130 }
131
132 @Override
133 public MoneyWiseAccountInfoClass getInfoClass() {
134 return getInfoType().getInfoClass();
135 }
136
137 @Override
138 public MoneyWisePayee getOwner() {
139 return getValues().getValue(PrometheusDataResource.DATAINFO_OWNER, MoneyWisePayee.class);
140 }
141
142 @Override
143 public MoneyWiseDataSet getDataSet() {
144 return (MoneyWiseDataSet) super.getDataSet();
145 }
146
147 @Override
148 public MoneyWisePayeeInfo getBase() {
149 return (MoneyWisePayeeInfo) super.getBase();
150 }
151
152 @Override
153 public MoneyWisePayeeInfoList getList() {
154 return (MoneyWisePayeeInfoList) super.getList();
155 }
156
157 @Override
158 public void deRegister() {
159
160 final MoneyWisePayeeInfoSet mySet = getOwner().getInfoSet();
161 mySet.deRegisterInfo(this);
162 }
163
164 @Override
165 public void resolveDataSetLinks() throws OceanusException {
166
167 super.resolveDataSetLinks();
168
169
170 final MoneyWiseDataSet myData = getDataSet();
171 resolveDataLink(PrometheusDataResource.DATAINFO_TYPE, myData.getActInfoTypes());
172 resolveDataLink(PrometheusDataResource.DATAINFO_OWNER, myData.getPayees());
173
174
175 final MoneyWisePayeeInfoSet mySet = getOwner().getInfoSet();
176 mySet.registerInfo(this);
177 }
178
179
180
181
182
183
184
185 public void resolveEditSetLinks(final PrometheusEditSet pEditSet) throws OceanusException {
186
187 resolveDataLink(PrometheusDataResource.DATAINFO_TYPE, pEditSet.getDataList(MoneyWiseStaticDataType.ACCOUNTINFOTYPE, MoneyWiseAccountInfoTypeList.class));
188 resolveDataLink(PrometheusDataResource.DATAINFO_OWNER, pEditSet.getDataList(MoneyWiseBasicDataType.PAYEE, MoneyWisePayeeList.class));
189 }
190
191
192
193
194
195
196
197 @Override
198 public boolean applyChanges(final PrometheusDataItem pInfo) {
199
200 if (!(pInfo instanceof MoneyWisePayeeInfo)) {
201 return false;
202 }
203
204
205 final MoneyWisePayeeInfo myPayeeInfo = (MoneyWisePayeeInfo) pInfo;
206
207
208 pushHistory();
209
210
211 if (!MetisDataDifference.isEqual(getField(), myPayeeInfo.getField())) {
212 setValueValue(myPayeeInfo.getField());
213 }
214
215
216 return checkForHistory();
217 }
218
219
220
221
222 public static class MoneyWisePayeeInfoList
223 extends PrometheusDataInfoList<MoneyWisePayeeInfo> {
224
225
226
227 private static final MetisFieldSet<MoneyWisePayeeInfoList> FIELD_DEFS = MetisFieldSet.newFieldSet(MoneyWisePayeeInfoList.class);
228
229
230
231
232
233
234 protected MoneyWisePayeeInfoList(final MoneyWiseDataSet pData) {
235 super(MoneyWisePayeeInfo.class, pData, MoneyWiseBasicDataType.PAYEEINFO, PrometheusListStyle.CORE);
236 }
237
238
239
240
241
242
243 private MoneyWisePayeeInfoList(final MoneyWisePayeeInfoList pSource) {
244 super(pSource);
245 }
246
247 @Override
248 public MetisFieldSet<MoneyWisePayeeInfoList> getDataFieldSet() {
249 return FIELD_DEFS;
250 }
251
252 @Override
253 public String listName() {
254 return LIST_NAME;
255 }
256
257 @Override
258 public MetisFieldSetDef getItemFields() {
259 return MoneyWisePayeeInfo.FIELD_DEFS;
260 }
261
262 @Override
263 public MoneyWiseDataSet getDataSet() {
264 return (MoneyWiseDataSet) super.getDataSet();
265 }
266
267
268
269
270
271
272 protected void setBase(final MoneyWisePayeeInfoList pBase) {
273
274 setStyle(PrometheusListStyle.EDIT);
275 super.setBase(pBase);
276 }
277
278 @Override
279 protected MoneyWisePayeeInfoList getEmptyList(final PrometheusListStyle pStyle) {
280 final MoneyWisePayeeInfoList myList = new MoneyWisePayeeInfoList(this);
281 myList.setStyle(pStyle);
282 return myList;
283 }
284
285 @Override
286 public MoneyWisePayeeInfo addCopyItem(final PrometheusDataItem pItem) {
287
288 if (!(pItem instanceof MoneyWisePayeeInfo)) {
289 throw new UnsupportedOperationException();
290 }
291
292 final MoneyWisePayeeInfo myInfo = new MoneyWisePayeeInfo(this, (MoneyWisePayeeInfo) pItem);
293 add(myInfo);
294 return myInfo;
295 }
296
297 @Override
298 public MoneyWisePayeeInfo addNewItem() {
299 throw new UnsupportedOperationException();
300 }
301
302 @Override
303 protected MoneyWisePayeeInfo addNewItem(final PrometheusDataItem pOwner,
304 final PrometheusStaticDataItem pInfoType) {
305
306 final MoneyWisePayeeInfo myInfo = new MoneyWisePayeeInfo(this, (MoneyWisePayee) pOwner, (MoneyWiseAccountInfoType) pInfoType);
307 add(myInfo);
308
309
310 return myInfo;
311 }
312
313 @Override
314 public void addInfoItem(final Integer pId,
315 final PrometheusDataItem pPayee,
316 final PrometheusDataInfoClass pInfoClass,
317 final Object pValue) throws OceanusException {
318
319 if (pValue == null) {
320 return;
321 }
322
323
324 final MoneyWiseDataSet myData = getDataSet();
325
326
327 final MoneyWiseAccountInfoType myInfoType = myData.getActInfoTypes().findItemByClass(pInfoClass);
328 if (myInfoType == null) {
329 throw new MoneyWiseDataException(pPayee, ERROR_BADINFOCLASS + " [" + pInfoClass + "]");
330 }
331
332
333 final PrometheusDataValues myValues = new PrometheusDataValues(OBJECT_NAME);
334 myValues.addValue(MetisDataResource.DATA_ID, pId);
335 myValues.addValue(PrometheusDataResource.DATAINFO_TYPE, myInfoType);
336 myValues.addValue(PrometheusDataResource.DATAINFO_OWNER, pPayee);
337 myValues.addValue(PrometheusDataResource.DATAINFO_VALUE, pValue);
338
339
340 final MoneyWisePayeeInfo myInfo = new MoneyWisePayeeInfo(this, myValues);
341
342
343 if (!isIdUnique(pId)) {
344 myInfo.addError(ERROR_DUPLICATE, MetisDataResource.DATA_ID);
345 throw new MoneyWiseDataException(myInfo, ERROR_VALIDATION);
346 }
347
348
349 add(myInfo);
350 }
351
352 @Override
353 public MoneyWisePayeeInfo addValuesItem(final PrometheusDataValues pValues) throws OceanusException {
354
355 final MoneyWisePayeeInfo myInfo = new MoneyWisePayeeInfo(this, pValues);
356
357
358 if (!isIdUnique(myInfo.getIndexedId())) {
359 myInfo.addError(ERROR_DUPLICATE, MetisDataResource.DATA_ID);
360 throw new MoneyWiseDataException(myInfo, ERROR_VALIDATION);
361 }
362
363
364 add(myInfo);
365
366
367 return myInfo;
368 }
369
370 @Override
371 public void postProcessOnLoad() throws OceanusException {
372
373 validateOnLoad();
374
375
376 final MoneyWisePayeeList myPayees = getDataSet().getPayees();
377 myPayees.mapData();
378 myPayees.validateOnLoad();
379 }
380 }
381 }