1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.kuali.kfs.coa.businessobject;
21
22 import java.util.ArrayList;
23 import java.util.Collection;
24 import java.util.HashMap;
25 import java.util.LinkedHashMap;
26 import java.util.List;
27 import java.util.Map;
28
29 import org.kuali.kfs.sys.KFSPropertyConstants;
30 import org.kuali.kfs.sys.businessobject.SystemOptions;
31 import org.kuali.kfs.sys.context.SpringContext;
32 import org.kuali.rice.core.api.mo.common.active.MutableInactivatable;
33 import org.kuali.rice.krad.bo.DocumentHeader;
34 import org.kuali.rice.krad.bo.GlobalBusinessObject;
35 import org.kuali.rice.krad.bo.GlobalBusinessObjectDetail;
36 import org.kuali.rice.krad.bo.PersistableBusinessObject;
37 import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
38 import org.kuali.rice.krad.service.BusinessObjectService;
39
40
41
42
43 public class SubObjectCodeGlobal extends PersistableBusinessObjectBase implements GlobalBusinessObject, MutableInactivatable {
44
45 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(SubObjectCodeGlobal.class);
46
47 protected String documentNumber;
48 protected Integer universityFiscalYear;
49 protected String chartOfAccountsCode;
50 protected String financialSubObjectCode;
51 protected String financialSubObjectCodeName;
52 protected String financialSubObjectCodeShortName;
53 protected boolean active;
54
55 protected DocumentHeader financialDocument;
56 protected SystemOptions universityFiscal;
57 protected Chart chartOfAccounts;
58
59 protected List<SubObjectCodeGlobalDetail> subObjCdGlobalDetails;
60 protected List<AccountGlobalDetail> accountGlobalDetails;
61
62
63
64
65 public SubObjectCodeGlobal() {
66
67
68 subObjCdGlobalDetails = new ArrayList<SubObjectCodeGlobalDetail>();
69 accountGlobalDetails = new ArrayList<AccountGlobalDetail>();
70
71 }
72
73
74
75
76
77
78 public String getDocumentNumber() {
79 return documentNumber;
80 }
81
82
83
84
85
86
87 public void setDocumentNumber(String documentNumber) {
88 this.documentNumber = documentNumber;
89 }
90
91
92
93
94
95
96
97 public Integer getUniversityFiscalYear() {
98 return universityFiscalYear;
99 }
100
101
102
103
104
105
106 public void setUniversityFiscalYear(Integer universityFiscalYear) {
107 this.universityFiscalYear = universityFiscalYear;
108 }
109
110
111
112
113
114
115
116 public String getChartOfAccountsCode() {
117 return chartOfAccountsCode;
118 }
119
120
121
122
123
124
125 public void setChartOfAccountsCode(String chartOfAccountsCode) {
126 this.chartOfAccountsCode = chartOfAccountsCode;
127 }
128
129
130
131
132
133
134
135 public String getFinancialSubObjectCode() {
136 return financialSubObjectCode;
137 }
138
139
140
141
142
143
144 public void setFinancialSubObjectCode(String financialSubObjectCode) {
145 this.financialSubObjectCode = financialSubObjectCode;
146 }
147
148
149
150
151
152
153
154 public String getFinancialSubObjectCodeName() {
155 return financialSubObjectCodeName;
156 }
157
158
159
160
161
162
163 public void setFinancialSubObjectCodeName(String financialSubObjectCodeName) {
164 this.financialSubObjectCodeName = financialSubObjectCodeName;
165 }
166
167
168
169
170
171
172
173 public String getFinancialSubObjectCodeShortName() {
174 return financialSubObjectCodeShortName;
175 }
176
177
178
179
180
181
182 public void setFinancialSubObjectCodeShortName(String financialSubObjectCdshortNm) {
183 this.financialSubObjectCodeShortName = financialSubObjectCdshortNm;
184 }
185
186
187
188
189
190
191
192 public boolean isActive() {
193 return active;
194 }
195
196
197
198
199
200
201
202 public void setActive(boolean active) {
203 this.active = active;
204 }
205
206
207
208
209
210
211
212 public DocumentHeader getFinancialDocument() {
213 return financialDocument;
214 }
215
216
217
218
219
220
221
222 public void setFinancialDocument(DocumentHeader financialDocument) {
223 this.financialDocument = financialDocument;
224 }
225
226
227
228
229
230
231 public SystemOptions getUniversityFiscal() {
232 return universityFiscal;
233 }
234
235
236
237
238
239
240
241 public void setUniversityFiscal(SystemOptions universityFiscal) {
242 this.universityFiscal = universityFiscal;
243 }
244
245
246
247
248
249
250 public Chart getChartOfAccounts() {
251 return chartOfAccounts;
252 }
253
254
255
256
257
258
259
260 public void setChartOfAccounts(Chart chartOfAccounts) {
261 this.chartOfAccounts = chartOfAccounts;
262 }
263
264
265
266
267 protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
268 LinkedHashMap m = new LinkedHashMap();
269 m.put(KFSPropertyConstants.DOCUMENT_NUMBER, this.documentNumber);
270 return m;
271 }
272
273 public List<SubObjectCodeGlobalDetail> getSubObjCdGlobalDetails() {
274 return subObjCdGlobalDetails;
275 }
276
277 public void setSubObjCdGlobalDetails(List<SubObjectCodeGlobalDetail> subObjCdGlobalDetails) {
278 this.subObjCdGlobalDetails = subObjCdGlobalDetails;
279 }
280
281 public List<AccountGlobalDetail> getAccountGlobalDetails() {
282 return accountGlobalDetails;
283 }
284
285 public void setAccountGlobalDetails(List<AccountGlobalDetail> accountGlobalDetails) {
286 this.accountGlobalDetails = accountGlobalDetails;
287 }
288
289
290
291
292 public List<PersistableBusinessObject> generateDeactivationsToPersist() {
293 return null;
294 }
295
296
297
298
299
300
301 public List<PersistableBusinessObject> generateGlobalChangesToPersist() {
302 LOG.debug("applyGlobalChanges");
303 List result = new ArrayList();
304
305
306
307 for (SubObjectCodeGlobalDetail subObjCdGlobalDetail : subObjCdGlobalDetails) {
308
309 String financialObjectCode = subObjCdGlobalDetail.getFinancialObjectCode();
310
311 if (financialObjectCode != null && financialObjectCode.length() > 0) {
312
313 for (AccountGlobalDetail accountGlobalDetail : accountGlobalDetails) {
314
315 Map pk = new HashMap();
316
317 String accountNumber = accountGlobalDetail.getAccountNumber();
318
319 if (accountNumber != null && accountNumber.length() > 0) {
320 pk.put("UNIV_FISCAL_YR", this.universityFiscalYear);
321 pk.put("FIN_COA_CD", this.chartOfAccountsCode);
322 pk.put("ACCOUNT_NBR", accountNumber);
323 pk.put("FIN_OBJECT_CD", financialObjectCode);
324 pk.put("FIN_SUB_OBJ_CD", this.financialSubObjectCode);
325
326 SubObjectCode subObjCd = (SubObjectCode) SpringContext.getBean(BusinessObjectService.class).findByPrimaryKey(SubObjectCode.class, pk);
327 if (subObjCd == null) {
328 subObjCd = new SubObjectCode(this.universityFiscalYear, this.chartOfAccountsCode, accountNumber, financialObjectCode, this.financialSubObjectCode);
329 }
330 populate(subObjCd, accountGlobalDetail, subObjCdGlobalDetail);
331 result.add(subObjCd);
332 }
333 }
334 }
335 }
336
337 return result;
338 }
339
340 public void populate(SubObjectCode old, AccountGlobalDetail accountGlobalDetail, SubObjectCodeGlobalDetail subObjCdGlobalDetail) {
341 old.setFinancialSubObjectCodeName(update(old.getFinancialSubObjectCodeName(), financialSubObjectCodeName));
342 old.setFinancialSubObjectCdshortNm(update(old.getFinancialSubObjectCdshortNm(), financialSubObjectCodeShortName));
343 old.setActive(update(old.isActive(), active));
344 }
345
346
347
348
349
350
351
352
353
354 protected String update(String oldValue, String newValue) {
355 if (newValue == null || newValue.length() == 0) {
356 return oldValue;
357 }
358 return newValue;
359 }
360
361 protected boolean update(boolean oldValue, boolean newValue) {
362 return newValue;
363 }
364
365
366 public boolean isPersistable() {
367 return true;
368 }
369
370 public List<? extends GlobalBusinessObjectDetail> getAllDetailObjects() {
371 ArrayList<GlobalBusinessObjectDetail> details = new ArrayList<GlobalBusinessObjectDetail>(accountGlobalDetails.size() + subObjCdGlobalDetails.size());
372 details.addAll(accountGlobalDetails);
373 details.addAll(subObjCdGlobalDetails);
374 return details;
375 }
376
377
378
379
380 @Override
381 public List buildListOfDeletionAwareLists() {
382 List<Collection<PersistableBusinessObject>> managedLists = super.buildListOfDeletionAwareLists();
383
384 managedLists.add( new ArrayList<PersistableBusinessObject>( getAccountGlobalDetails() ) );
385 managedLists.add( new ArrayList<PersistableBusinessObject>( getSubObjCdGlobalDetails() ) );
386
387 return managedLists;
388 }
389 }