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.MoneyWiseCashCategory;
21 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseCashCategory.MoneyWiseCashCategoryList;
22 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseCategoryBase;
23 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseCashCategoryClass;
24 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseCashCategoryType;
25 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseCashCategoryType.MoneyWiseCashCategoryTypeList;
26 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseStaticDataType;
27 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataItem;
28 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataResource;
29
30
31
32
33 public class MoneyWiseValidateCashCategory
34 extends MoneyWiseValidateCategory<MoneyWiseCashCategory> {
35 @Override
36 public void validate(final PrometheusDataItem pCategory) {
37
38 super.validate(pCategory);
39
40
41 final MoneyWiseCashCategory myCategory = (MoneyWiseCashCategory) pCategory;
42 final MoneyWiseCashCategoryType myCatType = myCategory.getCategoryType();
43 final MoneyWiseCashCategory myParent = myCategory.getParentCategory();
44
45
46 if (myCatType == null) {
47 pCategory.addError(PrometheusDataItem.ERROR_MISSING, MoneyWiseStaticDataType.CASHTYPE);
48 } else {
49
50 final MoneyWiseCashCategoryClass myClass = myCatType.getCashClass();
51
52
53 if (!myCatType.getEnabled()) {
54 pCategory.addError(PrometheusDataItem.ERROR_DISABLED, MoneyWiseStaticDataType.CASHTYPE);
55 }
56
57
58 if (MoneyWiseCashCategoryClass.PARENT.equals(myClass)) {
59
60 if (myParent != null) {
61 pCategory.addError(PrometheusDataItem.ERROR_EXIST, PrometheusDataResource.DATAGROUP_PARENT);
62 }
63 } else {
64
65 if (myParent == null) {
66 pCategory.addError(PrometheusDataItem.ERROR_MISSING, PrometheusDataResource.DATAGROUP_PARENT);
67 } else if (!myParent.isCategoryClass(MoneyWiseCashCategoryClass.PARENT)) {
68 pCategory.addError(ERROR_BADPARENT, PrometheusDataResource.DATAGROUP_PARENT);
69 } else {
70 final String myName = myCategory.getName();
71
72
73 final MoneyWiseCashCategoryClass myParentClass = myParent.getCategoryTypeClass();
74 if (!MoneyWiseCashCategoryClass.PARENT.equals(myParentClass)) {
75 pCategory.addError(ERROR_BADPARENT, PrometheusDataResource.DATAGROUP_PARENT);
76 }
77
78 if ((myName != null) && !myName.startsWith(myParent.getName() + MoneyWiseCategoryBase.STR_SEP)) {
79 pCategory.addError(ERROR_MATCHPARENT, PrometheusDataResource.DATAGROUP_PARENT);
80 }
81 }
82 }
83 }
84
85
86 if (!pCategory.hasErrors()) {
87 pCategory.setValidEdit();
88 }
89 }
90
91 @Override
92 public void setDefaults(final MoneyWiseCashCategory pParent,
93 final MoneyWiseCashCategory pCategory) throws OceanusException {
94
95 final MoneyWiseCashCategoryList myList = pCategory.getList();
96 final MoneyWiseCashCategoryTypeList myTypes
97 = getEditSet().getDataList(MoneyWiseStaticDataType.CASHTYPE, MoneyWiseCashCategoryTypeList.class);
98 pCategory.setCategoryType(myTypes.findItemByClass(pParent == null
99 ? MoneyWiseCashCategoryClass.PARENT
100 : MoneyWiseCashCategoryClass.CASH));
101 pCategory.setParentCategory(pParent);
102 pCategory.setSubCategoryName(getUniqueName(myList, pParent));
103 }
104 }