1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.module.purap.service.impl;
20
21 import java.math.BigDecimal;
22 import java.util.ArrayList;
23 import java.util.List;
24
25 import org.apache.commons.lang.builder.EqualsBuilder;
26 import org.apache.commons.lang.builder.HashCodeBuilder;
27 import org.kuali.kfs.module.purap.businessobject.PurApAccountingLineBase;
28 import org.kuali.rice.core.api.util.type.KualiDecimal;
29
30
31
32
33
34 public class PurapAccountRevisionGroup {
35 protected String chartOfAccountsCode;
36 protected String accountNumber;
37 protected String subAccountNumber;
38 protected String financialObjectCode;
39 protected String financialSubObjectCode;
40 protected Integer postingYear;
41 protected String postingPeriodCode;
42 protected KualiDecimal amount;
43 protected Integer itemIdentifier;
44 private List<PurApAccountingLineBase> sourceEntries = new ArrayList<PurApAccountingLineBase>();
45 private KualiDecimal changeAmount;
46
47 private String projectCode;
48 private String organizationReferenceId;
49 private BigDecimal accountLinePercent;
50
51
52 public PurapAccountRevisionGroup(PurApAccountingLineBase entry) {
53 setChartOfAccountsCode(entry.getChartOfAccountsCode());
54 setAccountNumber(entry.getAccountNumber());
55 setSubAccountNumber(entry.getSubAccountNumber());
56 setFinancialObjectCode(entry.getFinancialObjectCode());
57 setFinancialSubObjectCode(entry.getFinancialSubObjectCode());
58 setItemIdentifier(entry.getItemIdentifier());
59 setPostingYear(entry.getPostingYear());
60 setPostingPeriodCode(entry.getPostingPeriodCode());
61 setProjectCode(entry.getProjectCode());
62 setOrganizationReferenceId(entry.getOrganizationReferenceId());
63 setAccountLinePercent(entry.getAccountLinePercent());
64 this.sourceEntries.add(entry);
65 setAmount(entry.getAmount());
66 }
67
68
69
70
71
72
73
74 public String getChartOfAccountsCode() {
75 return chartOfAccountsCode;
76 }
77
78
79
80
81
82
83 public void setChartOfAccountsCode(String chartOfAccountsCode) {
84 this.chartOfAccountsCode = chartOfAccountsCode;
85 }
86
87
88
89
90
91
92 public String getAccountNumber() {
93 return accountNumber;
94 }
95
96
97
98
99
100
101 public void setAccountNumber(String accountNumber) {
102 this.accountNumber = accountNumber;
103 }
104
105
106
107
108
109
110 public String getSubAccountNumber() {
111 return subAccountNumber;
112 }
113
114
115
116
117
118
119 public void setSubAccountNumber(String subAccountNumber) {
120 this.subAccountNumber = subAccountNumber;
121 }
122
123
124
125
126
127
128 public String getFinancialObjectCode() {
129 return financialObjectCode;
130 }
131
132
133
134
135
136
137 public void setFinancialObjectCode(String financialObjectCode) {
138 this.financialObjectCode = financialObjectCode;
139 }
140
141
142
143
144
145
146 public String getFinancialSubObjectCode() {
147 return financialSubObjectCode;
148 }
149
150
151
152
153
154
155 public void setFinancialSubObjectCode(String financialSubObjectCode) {
156 this.financialSubObjectCode = financialSubObjectCode;
157 }
158
159
160
161
162
163
164
165 public Integer getPostingYear() {
166 return postingYear;
167 }
168
169
170
171
172
173
174
175 public void setPostingYear(Integer postingYear) {
176 this.postingYear = postingYear;
177 }
178
179
180
181
182
183
184
185 public String getPostingPeriodCode() {
186 return postingPeriodCode;
187 }
188
189
190
191
192
193
194
195 public void setPostingPeriodCode(String postingPeriodCode) {
196 this.postingPeriodCode = postingPeriodCode;
197 }
198
199
200
201
202
203
204
205
206 @Override
207 public boolean equals(Object obj) {
208 if (this == obj) {
209 return true;
210 }
211 if (obj == null || !PurapAccountRevisionGroup.class.isAssignableFrom(obj.getClass())) {
212 return false;
213 }
214 PurapAccountRevisionGroup test = (PurapAccountRevisionGroup) obj;
215 EqualsBuilder equalsBuilder = new EqualsBuilder();
216 equalsBuilder.append(this.postingYear, test.getPostingYear());
217 equalsBuilder.append(itemIdentifier, test.getItemIdentifier());
218 equalsBuilder.append(replaceFiller(chartOfAccountsCode), replaceFiller(test.getChartOfAccountsCode()));
219 equalsBuilder.append(replaceFiller(accountNumber), replaceFiller(test.getAccountNumber()));
220 equalsBuilder.append(replaceFiller(subAccountNumber), replaceFiller(test.getSubAccountNumber()));
221 equalsBuilder.append(replaceFiller(financialObjectCode), replaceFiller(test.getFinancialObjectCode()));
222 equalsBuilder.append(replaceFiller(financialSubObjectCode), replaceFiller(test.getFinancialSubObjectCode()));
223 equalsBuilder.append(replaceFiller(postingPeriodCode), replaceFiller(test.getPostingPeriodCode()));
224 equalsBuilder.append(replaceFiller(projectCode), replaceFiller(test.getProjectCode()));
225 equalsBuilder.append(replaceFiller(organizationReferenceId), replaceFiller(test.getOrganizationReferenceId()));
226 return equalsBuilder.isEquals();
227 }
228
229 protected String replaceFiller(String val) {
230 if (val == null) {
231 return "";
232 }
233 char[] charArray = val.trim().toCharArray();
234 for (char c : charArray) {
235 if (c != '-') {
236 return val;
237 }
238 }
239 return "";
240 }
241
242
243
244
245
246
247
248 @Override
249 public int hashCode() {
250 HashCodeBuilder hashCodeBuilder = new HashCodeBuilder(37, 41);
251 hashCodeBuilder.append(this.postingYear);
252 hashCodeBuilder.append(itemIdentifier);
253 hashCodeBuilder.append(replaceFiller(chartOfAccountsCode));
254 hashCodeBuilder.append(replaceFiller(accountNumber));
255 hashCodeBuilder.append(replaceFiller(subAccountNumber));
256 hashCodeBuilder.append(replaceFiller(financialObjectCode));
257 hashCodeBuilder.append(replaceFiller(financialSubObjectCode));
258 hashCodeBuilder.append(replaceFiller(postingPeriodCode));
259 hashCodeBuilder.append(replaceFiller(projectCode));
260 hashCodeBuilder.append(replaceFiller(organizationReferenceId));
261 return hashCodeBuilder.toHashCode();
262 }
263
264
265
266
267
268
269
270 public KualiDecimal getAmount() {
271 return amount;
272 }
273
274
275
276
277
278
279
280 public void setAmount(KualiDecimal absAmount) {
281 this.amount = absAmount;
282 }
283
284 @Override
285 public String toString() {
286 return "" + postingYear + "-" + chartOfAccountsCode + "-" + accountNumber + "-" + replaceFiller(subAccountNumber) + "-" + financialObjectCode + "-" + replaceFiller(financialSubObjectCode) + "-" + postingPeriodCode + "-" + itemIdentifier;
287 }
288
289
290
291
292
293
294 public Integer getItemIdentifier() {
295 return itemIdentifier;
296 }
297
298
299
300
301
302
303 public void setItemIdentifier(Integer itemIdentifier) {
304 this.itemIdentifier = itemIdentifier;
305 }
306
307
308
309
310
311
312 public void combineEntry(PurApAccountingLineBase newEntry) {
313 this.sourceEntries.add(newEntry);
314 this.amount = this.amount.add(newEntry.getAmount());
315 }
316
317
318
319
320
321
322 public KualiDecimal getChangeAmount() {
323 return changeAmount;
324 }
325
326
327
328
329
330
331 public void setChangeAmount(KualiDecimal changeAmount) {
332 this.changeAmount = changeAmount;
333 }
334
335
336
337
338
339
340
341 public String getProjectCode() {
342 return projectCode;
343 }
344
345
346
347
348
349
350 public void setProjectCode(String projectCode) {
351 this.projectCode = projectCode;
352 }
353
354
355
356
357
358
359 public String getOrganizationReferenceId() {
360 return organizationReferenceId;
361 }
362
363
364
365
366
367
368 public void setOrganizationReferenceId(String organizationReferenceId) {
369 this.organizationReferenceId = organizationReferenceId;
370 }
371
372
373
374
375
376
377
378 public BigDecimal getAccountLinePercent() {
379 return accountLinePercent;
380 }
381
382
383
384
385
386
387 public void setAccountLinePercent(BigDecimal accountLinePercent) {
388 this.accountLinePercent = accountLinePercent;
389 }
390
391 public PurApAccountingLineBase buildRevisionRecord(Class<? extends PurApAccountingLineBase> clazz) {
392 PurApAccountingLineBase histRecord = null;
393 try {
394 histRecord = clazz.newInstance();
395 histRecord.setItemIdentifier(this.getItemIdentifier());
396 histRecord.setChartOfAccountsCode(this.getChartOfAccountsCode());
397 histRecord.setAccountNumber(this.getAccountNumber());
398 histRecord.setSubAccountNumber(this.getSubAccountNumber());
399 histRecord.setFinancialObjectCode(this.getFinancialObjectCode());
400 histRecord.setFinancialSubObjectCode(this.getFinancialSubObjectCode());
401 histRecord.setProjectCode(this.getProjectCode());
402 histRecord.setOrganizationReferenceId(this.getOrganizationReferenceId());
403 histRecord.setAmount(this.getChangeAmount());
404 histRecord.setPostingYear(this.getPostingYear());
405 histRecord.setPostingPeriodCode(this.getPostingPeriodCode());
406 histRecord.setAccountLinePercent(this.getAccountLinePercent());
407 }
408 catch (Exception e) {
409 throw new RuntimeException(e);
410 }
411 return histRecord;
412 }
413 }