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