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.MoneyWiseBasicResource;
20 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseDataValidator.MoneyWiseDataValidatorDefaults;
21 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseRegion;
22 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseRegion.MoneyWiseRegionDataMap;
23 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseRegion.MoneyWiseRegionList;
24 import io.github.tonywasher.joceanus.oceanus.base.OceanusException;
25 import io.github.tonywasher.joceanus.prometheus.data.PrometheusData.PrometheusDataItemCtl;
26 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataInfoLinkSet;
27 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataItem;
28 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataResource;
29 import io.github.tonywasher.joceanus.prometheus.views.PrometheusEditSet;
30
31
32
33
34 public class MoneyWiseValidateRegion
35 implements MoneyWiseDataValidatorDefaults<MoneyWiseRegion> {
36
37
38
39 private static final String NAME_NEWREGION = MoneyWiseBasicResource.REGION_NEWREGION.getValue();
40
41 @Override
42 public void setEditSet(final PrometheusEditSet pEditSet) {
43
44 }
45
46 @Override
47 public void validate(final PrometheusDataItemCtl pRegion) {
48 final MoneyWiseRegion myRegion = (MoneyWiseRegion) pRegion;
49 final MoneyWiseRegionList myList = myRegion.getList();
50 final String myName = myRegion.getName();
51 final String myDesc = myRegion.getDesc();
52 final MoneyWiseRegionDataMap myMap = myList.getDataMap();
53
54
55 if (myName == null) {
56 myRegion.addError(PrometheusDataItem.ERROR_MISSING, PrometheusDataResource.DATAITEM_FIELD_NAME);
57
58
59 } else {
60
61 if (myName.length() > PrometheusDataItem.NAMELEN) {
62 myRegion.addError(PrometheusDataItem.ERROR_LENGTH, PrometheusDataResource.DATAITEM_FIELD_NAME);
63 }
64
65
66 if (!myMap.validNameCount(myName)) {
67 myRegion.addError(PrometheusDataItem.ERROR_DUPLICATE, PrometheusDataResource.DATAITEM_FIELD_NAME);
68 }
69
70
71 if (myName.contains(PrometheusDataInfoLinkSet.ITEM_SEP)) {
72 myRegion.addError(PrometheusDataItem.ERROR_INVALIDCHAR, PrometheusDataResource.DATAITEM_FIELD_NAME);
73 }
74 }
75
76
77 if (myDesc != null
78 && myDesc.length() > PrometheusDataItem.DESCLEN) {
79 myRegion.addError(PrometheusDataItem.ERROR_LENGTH, PrometheusDataResource.DATAITEM_FIELD_DESC);
80 }
81
82
83 if (!myRegion.hasErrors()) {
84 myRegion.setValidEdit();
85 }
86 }
87
88 @Override
89 public void setDefaults(final MoneyWiseRegion pRegion) throws OceanusException {
90
91 final MoneyWiseRegionList myList = pRegion.getList();
92 pRegion.setName(getUniqueName(myList));
93 }
94
95
96
97
98
99
100
101 private String getUniqueName(final MoneyWiseRegionList pList) {
102
103 final String myBase = NAME_NEWREGION;
104 int iNextId = 1;
105
106
107 String myName = myBase;
108 while (true) {
109
110 if (pList.findItemByName(myName) == null) {
111 return myName;
112 }
113
114
115 myName = myBase.concat(Integer.toString(iNextId++));
116 }
117 }
118 }