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.MoneyWiseLoanCategory;
21 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseLoanCategory.MoneyWiseLoanCategoryList;
22 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseLoanCategoryClass;
23 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseLoanCategoryType;
24 import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseLoanCategoryType.MoneyWiseLoanCategoryTypeList;
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 MoneyWiseValidateLoanCategory
35 extends MoneyWiseValidateCategory<MoneyWiseLoanCategory> {
36
37 @Override
38 public void validate(final PrometheusDataItemCtl pCategory) {
39
40 super.validate(pCategory);
41
42
43 final MoneyWiseLoanCategory myCategory = (MoneyWiseLoanCategory) pCategory;
44 final MoneyWiseLoanCategoryType myCatType = myCategory.getCategoryType();
45 final MoneyWiseLoanCategory myParent = myCategory.getParentCategory();
46
47
48 if (myCatType == null) {
49 myCategory.addError(PrometheusDataItem.ERROR_MISSING, MoneyWiseStaticDataType.DEPOSITTYPE);
50 } else {
51
52 final MoneyWiseLoanCategoryClass myClass = myCatType.getLoanClass();
53
54
55 if (!myCatType.getEnabled()) {
56 myCategory.addError(PrometheusDataItem.ERROR_DISABLED, MoneyWiseStaticDataType.DEPOSITTYPE);
57 }
58
59
60 if (MoneyWiseLoanCategoryClass.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(MoneyWiseLoanCategoryClass.PARENT)) {
70 myCategory.addError(ERROR_BADPARENT, PrometheusDataResource.DATAGROUP_PARENT);
71 } else {
72 final String myName = myCategory.getName();
73
74
75 final MoneyWiseLoanCategoryClass myParentClass = myParent.getCategoryTypeClass();
76 if (!MoneyWiseLoanCategoryClass.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 MoneyWiseLoanCategory pParent,
95 final MoneyWiseLoanCategory pCategory) throws OceanusException {
96
97 final MoneyWiseLoanCategoryList myList = pCategory.getList();
98 final MoneyWiseLoanCategoryTypeList myTypes
99 = getEditSet().getDataList(MoneyWiseStaticDataType.LOANTYPE, MoneyWiseLoanCategoryTypeList.class);
100 pCategory.setCategoryType(myTypes.findItemByClass(pParent == null
101 ? MoneyWiseLoanCategoryClass.PARENT
102 : MoneyWiseLoanCategoryClass.LOAN));
103 pCategory.setParentCategory(pParent);
104 pCategory.setSubCategoryName(getUniqueName(myList, pParent));
105 }
106 }