1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.module.tem.businessobject.options;
20
21 import java.util.ArrayList;
22 import java.util.Collections;
23 import java.util.HashMap;
24 import java.util.Iterator;
25 import java.util.List;
26 import java.util.Map;
27
28 import org.apache.commons.lang.StringUtils;
29 import org.kuali.kfs.module.tem.TemConstants;
30 import org.kuali.kfs.module.tem.TemPropertyConstants;
31 import org.kuali.kfs.module.tem.businessobject.TemRegion;
32 import org.kuali.kfs.module.tem.service.TravelService;
33 import org.kuali.kfs.sys.KFSConstants;
34 import org.kuali.kfs.sys.context.SpringContext;
35 import org.kuali.rice.core.api.util.ConcreteKeyValue;
36 import org.kuali.rice.core.api.util.KeyValue;
37 import org.kuali.rice.krad.keyvalues.KeyValuesBase;
38 import org.kuali.rice.krad.service.KeyValuesService;
39
40 public class TemRegionCodeValuesFinder extends KeyValuesBase {
41 protected static volatile KeyValuesService keyValuesService;
42
43
44
45
46 @SuppressWarnings("rawtypes")
47 @Override
48 public List<KeyValue> getKeyValues() {
49
50 String tripTypeCode = KFSConstants.EMPTY_STRING;
51
52
53
54 List<KeyValue> keyValues = new ArrayList<KeyValue>();
55 keyValues.add(new ConcreteKeyValue(KFSConstants.EMPTY_STRING, KFSConstants.EMPTY_STRING));
56 TravelService travelService = SpringContext.getBean(TravelService.class);
57
58 List<TemRegion> usRegions = new ArrayList<TemRegion>();
59
60
61 Map<String, Object> fieldValues = new HashMap<String, Object>();
62 if (StringUtils.isEmpty(tripTypeCode) || tripTypeCode.equals(TemConstants.TemTripTypes.IN_STATE)) {
63 fieldValues.put(TemPropertyConstants.TRIP_TYPE_CODE, TemConstants.TemTripTypes.IN_STATE);
64 List<TemRegion> inRegions = (List<TemRegion>) getKeyValuesService().findMatching(TemRegion.class, fieldValues);
65 usRegions.addAll(inRegions);
66 }
67
68 if (StringUtils.isEmpty(tripTypeCode) || tripTypeCode.equals(TemConstants.TemTripTypes.OUT_OF_STATE)) {
69 fieldValues.put(TemPropertyConstants.TRIP_TYPE_CODE, TemConstants.TemTripTypes.OUT_OF_STATE);
70 List<TemRegion> outRegions = (List<TemRegion>) getKeyValuesService().findMatching(TemRegion.class, fieldValues);
71 Collections.sort(outRegions);
72 usRegions.addAll(outRegions);
73
74 }
75
76
77
78 Iterator<TemRegion> it = usRegions.iterator();
79
80 String key = KFSConstants.EMPTY_STRING;
81 while (it.hasNext()){
82 TemRegion temRegion = it.next();
83
84 String tempKey = temRegion.getRegionName();
85 if (!tempKey.equals(key)){
86 keyValues.add(new ConcreteKeyValue(temRegion.getRegionCode().toUpperCase(), temRegion.getRegionCode().toUpperCase()));
87 }
88 key = tempKey;
89 }
90
91
92 if (StringUtils.isEmpty(tripTypeCode) || tripTypeCode.equals(TemConstants.TemTripTypes.INTERNATIONAL)) {
93
94 fieldValues.put(TemPropertyConstants.TRIP_TYPE_CODE, TemConstants.TemTripTypes.INTERNATIONAL);
95 List<TemRegion> intRegions = (List<TemRegion>)getKeyValuesService().findMatching(TemRegion.class, fieldValues);
96 Collections.sort(intRegions);
97
98
99 keyValues.add(new ConcreteKeyValue("---", "---"));
100 it = intRegions.iterator();
101 while (it.hasNext()) {
102 TemRegion temRegion = it.next();
103 String tempKey = temRegion.getRegionName();
104 if (!tempKey.equals(key)) {
105 keyValues.add(new ConcreteKeyValue(temRegion.getRegionCode().toUpperCase(), temRegion.getRegionCode().toUpperCase()));
106 }
107 key = tempKey;
108 }
109 }
110
111 return keyValues;
112 }
113
114 protected KeyValuesService getKeyValuesService() {
115 if (keyValuesService == null) {
116 keyValuesService = SpringContext.getBean(KeyValuesService.class);
117 }
118 return keyValuesService;
119 }
120 }