1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.moneywise.data.validate;
18
19 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseBasicResource;
20 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePayee;
21 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePayee.MoneyWisePayeeDataMap;
22 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePayee.MoneyWisePayeeList;
23 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseCurrency;
24 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWisePayeeClass;
25 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWisePayeeType;
26 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWisePayeeType.MoneyWisePayeeTypeList;
27 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseStaticDataType;
28 import io.github.tonywasher.joceanus.oceanus.base.OceanusException;
29 import io.github.tonywasher.joceanus.prometheus.data.PrometheusData.PrometheusDataItemCtl;
30 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataItem;
31
32 import java.util.Iterator;
33
34
35
36
37 public class MoneyWiseValidatePayee
38 extends MoneyWiseValidateAccount<MoneyWisePayee> {
39
40
41
42 private static final String NAME_NEWACCOUNT = MoneyWiseBasicResource.PAYEE_NEWACCOUNT.getValue();
43
44
45
46
47 private final MoneyWiseValidatePayeeInfoSet theInfoSet;
48
49
50
51
52 MoneyWiseValidatePayee() {
53 theInfoSet = new MoneyWiseValidatePayeeInfoSet();
54 }
55
56 @Override
57 public void validate(final PrometheusDataItemCtl pPayee) {
58 final MoneyWisePayee myPayee = (MoneyWisePayee) pPayee;
59 final MoneyWisePayeeList myList = myPayee.getList();
60 final MoneyWisePayeeType myPayeeType = myPayee.getCategory();
61 final MoneyWisePayee myParent = (MoneyWisePayee) myPayee.getParent();
62 final MoneyWiseCurrency myCurrency = myPayee.getAssetCurrency();
63
64
65 super.validate(pPayee);
66
67
68 if (myPayeeType == null) {
69 myPayee.addError(PrometheusDataItem.ERROR_MISSING, MoneyWiseBasicResource.CATEGORY_NAME);
70 } else {
71
72 final MoneyWisePayeeClass myClass = myPayeeType.getPayeeClass();
73
74
75 if (!myPayeeType.getEnabled()) {
76 myPayee.addError(PrometheusDataItem.ERROR_DISABLED, MoneyWiseBasicResource.CATEGORY_NAME);
77 }
78
79
80 if (myClass.isSingular()) {
81
82 final MoneyWisePayeeDataMap myMap = myList.getDataMap();
83 if (!myMap.validSingularCount(myClass)) {
84 myPayee.addError(PrometheusDataItem.ERROR_MULT, MoneyWiseBasicResource.CATEGORY_NAME);
85 }
86 }
87 }
88
89
90 if (myParent != null) {
91 myPayee.addError(PrometheusDataItem.ERROR_EXIST, MoneyWiseBasicResource.ASSET_PARENT);
92 }
93
94
95 if (myCurrency != null) {
96 myPayee.addError(PrometheusDataItem.ERROR_EXIST, MoneyWiseStaticDataType.CURRENCY);
97 }
98
99
100 if (myPayee.getInfoSet() != null) {
101
102 theInfoSet.validate(myPayee.getInfoSet());
103 }
104
105
106 if (!myPayee.hasErrors()) {
107 myPayee.setValidEdit();
108 }
109 }
110
111 @Override
112 public void setDefaults(final MoneyWisePayee pPayee) throws OceanusException {
113
114 final MoneyWisePayeeList myList = pPayee.getList();
115 pPayee.setCategory(getDefaultPayeeType());
116 pPayee.setName(getUniqueName(myList, NAME_NEWACCOUNT));
117 pPayee.setClosed(Boolean.FALSE);
118 }
119
120 @Override
121 public void autoCorrect(final MoneyWisePayee pItem) throws OceanusException {
122 theInfoSet.autoCorrect(pItem.getInfoSet());
123 }
124
125
126
127
128
129
130 private MoneyWisePayeeType getDefaultPayeeType() {
131
132 final MoneyWisePayeeTypeList myTypes
133 = getEditSet().getDataList(MoneyWiseStaticDataType.PAYEETYPE, MoneyWisePayeeTypeList.class);
134
135
136 final Iterator<MoneyWisePayeeType> myIterator = myTypes.iterator();
137 while (myIterator.hasNext()) {
138 final MoneyWisePayeeType myType = myIterator.next();
139
140
141 if (!myType.isDeleted() && !myType.getPayeeClass().isSingular()) {
142 return myType;
143 }
144 }
145
146
147 return null;
148 }
149 }