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