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