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