1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.module.cam.businessobject;
20
21 import java.sql.Timestamp;
22 import java.util.ArrayList;
23 import java.util.LinkedHashMap;
24 import java.util.List;
25
26 import org.apache.commons.lang.StringUtils;
27 import org.kuali.kfs.module.cam.CamsConstants;
28 import org.kuali.kfs.sys.context.SpringContext;
29 import org.kuali.rice.core.api.datetime.DateTimeService;
30 import org.kuali.rice.krad.bo.DocumentHeader;
31 import org.kuali.rice.krad.bo.GlobalBusinessObject;
32 import org.kuali.rice.krad.bo.GlobalBusinessObjectDetail;
33 import org.kuali.rice.krad.bo.PersistableBusinessObject;
34 import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
35 import org.kuali.rice.krad.service.BusinessObjectService;
36
37
38
39
40
41 public class AssetLocationGlobal extends PersistableBusinessObjectBase implements GlobalBusinessObject {
42
43 private String documentNumber;
44 private DocumentHeader documentHeader;
45 private List<AssetLocationGlobalDetail> assetLocationGlobalDetails;
46
47
48
49
50 public AssetLocationGlobal() {
51 assetLocationGlobalDetails = new ArrayList<AssetLocationGlobalDetail>();
52 }
53
54
55
56
57
58
59
60 public String getDocumentNumber() {
61 return documentNumber;
62 }
63
64
65
66
67
68
69
70 public void setDocumentNumber(String documentNumber) {
71 this.documentNumber = documentNumber;
72 }
73
74
75
76
77
78 public DocumentHeader getDocumentHeader() {
79 return documentHeader;
80 }
81
82
83
84
85
86
87 public void setDocumentHeader(DocumentHeader documentHeader) {
88 this.documentHeader = documentHeader;
89 }
90
91
92
93
94
95 public List<AssetLocationGlobalDetail> getAssetLocationGlobalDetails() {
96 return assetLocationGlobalDetails;
97 }
98
99
100
101
102
103 public void setAssetLocationGlobalDetails(List<AssetLocationGlobalDetail> assetLocationGlobalDetails) {
104 this.assetLocationGlobalDetails = assetLocationGlobalDetails;
105 }
106
107
108
109
110 public List<PersistableBusinessObject> generateDeactivationsToPersist() {
111 return null;
112 }
113
114
115
116
117
118
119 public List<PersistableBusinessObject> generateGlobalChangesToPersist() {
120
121 List<PersistableBusinessObject> persistables = new ArrayList();
122
123
124 for (AssetLocationGlobalDetail detail : assetLocationGlobalDetails) {
125 boolean isCampusCodeChanged = false, isBuildingCodeChanged = false, isBuildingRoomNumberChanged = false, isBuildingSubRoomNumberChanged = false, isCampusTagNumberChanged = false;
126
127 Asset asset = (Asset) SpringContext.getBean(BusinessObjectService.class).findByPrimaryKey(Asset.class, detail.getPrimaryKeys());
128
129
130 if (asset != null) {
131
132 if (!StringUtils.equalsIgnoreCase(asset.getCampusCode(), detail.getCampusCode()) ) {
133 asset.setCampusCode(detail.getCampusCode());
134 isCampusCodeChanged = true;
135 }
136
137 if (!StringUtils.equalsIgnoreCase(asset.getBuildingCode(), detail.getBuildingCode()) ) {
138 asset.setBuildingCode(detail.getBuildingCode());
139 isBuildingCodeChanged = true;
140 }
141
142 if (!StringUtils.equalsIgnoreCase(asset.getBuildingRoomNumber(), detail.getBuildingRoomNumber()) ) {
143 asset.setBuildingRoomNumber(detail.getBuildingRoomNumber());
144 isBuildingRoomNumberChanged = true;
145 }
146
147 if (!StringUtils.equalsIgnoreCase(asset.getBuildingSubRoomNumber(), detail.getBuildingSubRoomNumber()) ) {
148 asset.setBuildingSubRoomNumber(detail.getBuildingSubRoomNumber());
149 isBuildingSubRoomNumberChanged = true;
150 }
151
152 if (!StringUtils.equalsIgnoreCase(detail.getCampusTagNumber(), asset.getCampusTagNumber())) {
153 asset.setOldTagNumber(asset.getCampusTagNumber());
154 asset.setCampusTagNumber(detail.getCampusTagNumber());
155 isCampusTagNumberChanged = true;
156 }
157
158 updateOffCampusWithOnCampusValues(asset);
159
160 if(isCampusCodeChanged || isBuildingCodeChanged || isBuildingRoomNumberChanged || isBuildingSubRoomNumberChanged || isCampusTagNumberChanged)
161 {
162 asset.setLastInventoryDate(new Timestamp(SpringContext.getBean(DateTimeService.class).getCurrentSqlDate().getTime()));
163 }
164
165 persistables.add(asset);
166 }
167 }
168
169 return persistables;
170 }
171
172
173
174
175
176
177
178
179
180
181
182 private void updateOffCampusWithOnCampusValues(Asset asset) {
183 List<AssetLocation> toDelete = new ArrayList<AssetLocation>();
184 if (asset.getAssetLocations() != null) {
185 for (AssetLocation location : asset.getAssetLocations()) {
186 boolean offCampus = CamsConstants.AssetLocationTypeCode.OFF_CAMPUS.equals(location.getAssetLocationTypeCode());
187 boolean buildingOrRoom = StringUtils.isNotBlank(asset.getBuildingCode()) || StringUtils.isNotBlank(asset.getBuildingRoomNumber());
188 if (offCampus && buildingOrRoom) {
189 location.setAssetLocationContactName(null);
190 location.setAssetLocationStreetAddress(null);
191 location.setAssetLocationCityName(null);
192 location.setAssetLocationStateCode(null);
193 location.setAssetLocationCountryCode(null);
194 location.setAssetLocationZipCode(null);
195
196
197
198 }
199 }
200 }
201
202
203
204 }
205
206 public boolean isPersistable() {
207 return true;
208 }
209
210 public List<? extends GlobalBusinessObjectDetail> getAllDetailObjects() {
211 return getAssetLocationGlobalDetails();
212 }
213
214
215
216
217 protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
218 LinkedHashMap m = new LinkedHashMap();
219 m.put("documentNumber", this.documentNumber);
220 return m;
221 }
222 }