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.MoneyWiseBasicDataType;
21 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseBasicResource;
22 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseCash;
23 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseCash.MoneyWiseCashList;
24 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseCashCategory;
25 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseCashCategory.MoneyWiseCashCategoryList;
26 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseDataValidator.MoneyWiseDataValidatorAutoCorrect;
27 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePayee;
28 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseCashCategoryClass;
29 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseCurrency;
30 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseStaticDataType;
31 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataItem;
32 import io.github.tonywasher.joceanus.prometheus.views.PrometheusEditSet;
33
34 import java.util.Iterator;
35
36
37
38
39 public class MoneyWiseValidateCash
40 extends MoneyWiseValidateAccount<MoneyWiseCash>
41 implements MoneyWiseDataValidatorAutoCorrect<MoneyWiseCash> {
42
43
44
45 private static final String NAME_NEWACCOUNT = MoneyWiseBasicResource.CASH_NEWACCOUNT.getValue();
46
47
48
49
50 private final MoneyWiseValidateCashInfoSet theInfoSet;
51
52
53
54
55 MoneyWiseValidateCash() {
56 theInfoSet = new MoneyWiseValidateCashInfoSet();
57 }
58
59 @Override
60 public void setEditSet(final PrometheusEditSet pEditSet) {
61 super.setEditSet(pEditSet);
62 theInfoSet.storeEditSet(pEditSet);
63 }
64
65 @Override
66 public void validate(final PrometheusDataItem pCash) {
67 final MoneyWiseCash myCash = (MoneyWiseCash) pCash;
68 final MoneyWisePayee myParent = myCash.getParent();
69 final MoneyWiseCashCategory myCategory = myCash.getCategory();
70 final MoneyWiseCurrency myCurrency = myCash.getAssetCurrency();
71
72
73 super.validate(pCash);
74
75
76 if (myCategory == null) {
77 pCash.addError(PrometheusDataItem.ERROR_MISSING, MoneyWiseBasicResource.CATEGORY_NAME);
78 } else if (myCategory.getCategoryTypeClass().isParentCategory()) {
79 pCash.addError(ERROR_BADCATEGORY, MoneyWiseBasicResource.CATEGORY_NAME);
80 }
81
82
83 if (myParent != null) {
84 pCash.addError(PrometheusDataItem.ERROR_EXIST, MoneyWiseBasicResource.ASSET_PARENT);
85 }
86
87
88 if (myCurrency == null) {
89 pCash.addError(PrometheusDataItem.ERROR_MISSING, MoneyWiseStaticDataType.CURRENCY);
90 } else if (!myCurrency.getEnabled()) {
91 pCash.addError(PrometheusDataItem.ERROR_DISABLED, MoneyWiseStaticDataType.CURRENCY);
92 }
93
94
95 if (myCash.getInfoSet() != null) {
96
97 theInfoSet.validate(myCash.getInfoSet());
98 }
99
100
101 if (!pCash.hasErrors()) {
102 pCash.setValidEdit();
103 }
104 }
105
106 @Override
107 public void setDefaults(final MoneyWiseCash pCash) throws OceanusException {
108
109 final MoneyWiseCashList myList = pCash.getList();
110 pCash.setName(getUniqueName(myList, NAME_NEWACCOUNT));
111 pCash.setCategory(getDefaultCategory());
112 pCash.setAssetCurrency(getReportingCurrency());
113 pCash.setClosed(Boolean.FALSE);
114 autoCorrect(pCash);
115 }
116
117 @Override
118 public void autoCorrect(final MoneyWiseCash pCash) throws OceanusException {
119
120 theInfoSet.autoCorrect(pCash.getInfoSet());
121 }
122
123
124
125
126
127
128 private MoneyWiseCashCategory getDefaultCategory() {
129
130 final MoneyWiseCashCategoryList myCategories
131 = getEditSet().getDataList(MoneyWiseBasicDataType.CASHCATEGORY, MoneyWiseCashCategoryList.class);
132 final Iterator<MoneyWiseCashCategory> myIterator = myCategories.iterator();
133 while (myIterator.hasNext()) {
134 final MoneyWiseCashCategory myCategory = myIterator.next();
135
136
137 if (myCategory.isDeleted()) {
138 continue;
139 }
140
141
142 if (!myCategory.isCategoryClass(MoneyWiseCashCategoryClass.PARENT)) {
143 return myCategory;
144 }
145 }
146
147
148 return null;
149 }
150 }