001 /*
002 * Copyright 2011 The Kuali Foundation.
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.kfs.module.endow.report.util;
017
018 import java.math.BigDecimal;
019 import java.util.ArrayList;
020 import java.util.List;
021
022 import org.kuali.rice.kns.util.ObjectUtils;
023 /*
024 * class for holding data for transaction summary report
025 */
026 public class TransactionSummaryReportDataHolder {
027 // header
028 protected String institution;
029 protected String beginningDate;
030 protected String endingDate;
031 protected String kemid;
032 protected String kemidLongTitle;
033
034 //body
035 protected BigDecimal incomeBeginningMarketValue = BigDecimal.ZERO;
036 protected BigDecimal principalBeginningMarketValue = BigDecimal.ZERO;
037
038 //list of contributions and other income records..
039 protected List<ContributionsDataHolder> reportGroupsForContributions;
040
041 //list of expenses records...
042 protected List<ExpensesDataHolder> reportGroupsForExpenses;
043
044 //list of cash transfers....
045 protected List<CashTransfersDataHolder> reportGroupsForCashTransfers;
046
047 //list of security transfers....
048 protected List<SecurityTransfersDataHolder> reportGroupsForSecurityTransfers;
049
050 //change in market value data
051 protected BigDecimal incomeChangeInMarketValue = BigDecimal.ZERO;
052 protected BigDecimal principalChangeInMarketValue = BigDecimal.ZERO;
053
054 //period end total market value (including cash) data
055 protected BigDecimal incomeEndingMarketValue = BigDecimal.ZERO;
056 protected BigDecimal principalEndingMarketValue = BigDecimal.ZERO;
057
058 protected BigDecimal next12MonthsEstimatedIncome = BigDecimal.ZERO;
059 protected BigDecimal remainderOfFYEstimatedIncome = BigDecimal.ZERO;
060 protected BigDecimal nextFYEstimatedIncome = BigDecimal.ZERO;
061
062 // footer
063 protected EndowmentReportFooterDataHolder footer;
064
065 public TransactionSummaryReportDataHolder() {
066 reportGroupsForContributions = new ArrayList<ContributionsDataHolder>();
067 reportGroupsForExpenses = new ArrayList<ExpensesDataHolder>();
068 reportGroupsForCashTransfers = new ArrayList<CashTransfersDataHolder>();
069 reportGroupsForSecurityTransfers = new ArrayList<SecurityTransfersDataHolder>();
070
071 footer = null;
072 }
073
074 /**
075 * Gets the first row description
076 *
077 * @return description
078 */
079 protected String getBeginningDescription() {
080 return "Beginning Market Value";
081 }
082
083 /**
084 * Gets the last row description
085 *
086 * @return
087 */
088 protected String getEndingDescription() {
089 return "Period End total Market Value (including Cash)";
090 }
091
092 /**
093 * gets attribute institution
094 * @return institution
095 */
096 protected String getInstitution() {
097 return institution;
098 }
099
100 /**
101 * sets attribute institution
102 */
103 public void setInstitution(String institution) {
104 this.institution = institution;
105 }
106
107 /**
108 * gets attribute beginningDate
109 * @return beginningDate
110 */
111 protected String getBeginningDate() {
112 return beginningDate;
113 }
114
115 /**
116 * sets attribute beginningDate
117 */
118 public void setBeginningDate(String beginningDate) {
119 this.beginningDate = beginningDate;
120 }
121
122 /**
123 * gets attribute endingDate
124 * @return endingDate
125 */
126 protected String getEndingDate() {
127 return endingDate;
128 }
129
130 /**
131 * sets attribute endingDate
132 */
133 public void setEndingDate(String endingDate) {
134 this.endingDate = endingDate;
135 }
136
137 /**
138 * gets attribute incomeBeginningMarketValue
139 * @return incomeBeginningMarketValue
140 */
141 public BigDecimal getIncomeBeginningMarketValue() {
142 if (ObjectUtils.isNull(incomeBeginningMarketValue)) {
143 return BigDecimal.ZERO;
144 }
145
146 return incomeBeginningMarketValue;
147 }
148
149 /**
150 * sets attribute incomeBeginningMarketValue
151 */
152 public void setIncomeBeginningMarketValue(BigDecimal incomeBeginningMarketValue) {
153 this.incomeBeginningMarketValue = incomeBeginningMarketValue;
154 }
155
156 /**
157 * gets attribute principalBeginningMarketValue
158 * @return principalBeginningMarketValue
159 */
160 public BigDecimal getPrincipalBeginningMarketValue() {
161 if (ObjectUtils.isNull(principalBeginningMarketValue)) {
162 return BigDecimal.ZERO;
163 }
164
165 return principalBeginningMarketValue;
166 }
167
168 /**
169 * sets attribute principalBeginningMarketValue
170 */
171 public void setPrincipalBeginningMarketValue(BigDecimal principalBeginningMarketValue) {
172 this.principalBeginningMarketValue = principalBeginningMarketValue;
173 }
174
175 /**
176 * gets total beginning market value
177 * @return sum of incomeBeginningMarketValue and principleBeginningMarketValue
178 */
179 public BigDecimal getTotalBeginningMarketValue() {
180 return this.getIncomeBeginningMarketValue().add(this.getPrincipalBeginningMarketValue());
181 }
182
183 /**
184 * gets attribute incomeChangeInMarketValue
185 * @return incomeChangeInMarketValue
186 */
187 public BigDecimal getIncomeChangeInMarketValue() {
188 if (ObjectUtils.isNull(incomeChangeInMarketValue)) {
189 return BigDecimal.ZERO;
190 }
191
192 return incomeChangeInMarketValue;
193 }
194
195 /**
196 * sets attribute incomeChangeInMarketValue
197 */
198 public void setIncomeChangeInMarketValue(BigDecimal incomeChangeInMarketValue) {
199 this.incomeChangeInMarketValue = incomeChangeInMarketValue;
200 }
201
202 /**
203 * gets attribute principalChangeInMarketValue
204 * @return principalChangeInMarketValue
205 */
206 public BigDecimal getPrincipalChangeInMarketValue() {
207 if (ObjectUtils.isNull(principalChangeInMarketValue)) {
208 return BigDecimal.ZERO;
209 }
210
211 return principalChangeInMarketValue;
212 }
213
214 /**
215 * sets attribute principalChangeInMarketValue
216 */
217 public void setPrincipalChangeInMarketValue(BigDecimal principalChangeInMarketValue) {
218 this.principalChangeInMarketValue = principalChangeInMarketValue;
219 }
220
221 /**
222 * gets total market value by adding incomeChangeInMarketValue and
223 * principalChangeInMarketValue
224 * @return sum
225 */
226 public BigDecimal getTotalChangeInMarketValue() {
227 return this.getIncomeChangeInMarketValue().add(this.getPrincipalChangeInMarketValue());
228 }
229
230 /**
231 * gets attribute incomeEndingMarketValue
232 * @return incomeEndingMarketValue
233 */
234 public BigDecimal getIncomeEndingMarketValue() {
235 if (ObjectUtils.isNull(incomeEndingMarketValue)) {
236 return BigDecimal.ZERO;
237 }
238
239 return incomeEndingMarketValue;
240 }
241
242 /**
243 * sets attribute incomeEndingMarketValue
244 */
245 public void setIncomeEndingMarketValue(BigDecimal incomeEndingMarketValue) {
246 this.incomeEndingMarketValue = incomeEndingMarketValue;
247 }
248
249
250 /**
251 * gets attribute kemid
252 * @return kemid
253 */
254 public String getKemid() {
255 return kemid;
256 }
257
258 /**
259 * sets attribute kemid
260 */
261 public void setKemid(String kemid) {
262 this.kemid = kemid;
263 }
264
265 /**
266 * gets attribute kemidLongTitle
267 * @return kemidLongTitle
268 */
269 public String getKemidLongTitle() {
270 return kemidLongTitle;
271 }
272
273 /**
274 * sets attribute kemidLongTitle
275 */
276 public void setKemidLongTitle(String kemidLongTitle) {
277 this.kemidLongTitle = kemidLongTitle;
278 }
279
280 /**
281 * gets attribute reportGroupsForExpenses
282 * @return reportGroupsForExpenses
283 */
284 public List<ExpensesDataHolder> getReportGroupsForExpenses() {
285 return reportGroupsForExpenses;
286 }
287
288 /**
289 * sets attribute reportGroupsForExpenses
290 */
291 public void setReportGroupsForExpenses(List<ExpensesDataHolder> reportGroupsForExpenses) {
292 this.reportGroupsForExpenses = reportGroupsForExpenses;
293 }
294
295 /**
296 * gets attribute principalEndingMarketValue
297 * @return principalEndingMarketValue
298 */
299 public BigDecimal getPrincipalEndingMarketValue() {
300 if (ObjectUtils.isNull(principalEndingMarketValue)) {
301 return BigDecimal.ZERO;
302 }
303
304 return principalEndingMarketValue;
305 }
306
307 /**
308 * sets attribute principalEndingMarketValue
309 */
310 public void setPrincipalEndingMarketValue(BigDecimal principalEndingMarketValue) {
311 this.principalEndingMarketValue = principalEndingMarketValue;
312 }
313
314 /**
315 * gets total ending market value by adding incomeEndingMarketValue and
316 * principalEndingMarketValue
317 * @return sum
318 */
319 public BigDecimal getTotalEndingMarketValue() {
320 return this.getIncomeEndingMarketValue().add(this.getPrincipalEndingMarketValue());
321 }
322
323 /**
324 * gets attribute next12MonthsEstimatedIncome
325 * @return next12MonthsEstimatedIncome
326 */
327 public BigDecimal getNext12MonthsEstimatedIncome() {
328 if (ObjectUtils.isNull(next12MonthsEstimatedIncome)) {
329 return BigDecimal.ZERO;
330 }
331
332 return next12MonthsEstimatedIncome;
333 }
334
335 /**
336 * sets attribute next12MonthsEstimatedIncome
337 */
338 public void setNext12MonthsEstimatedIncome(BigDecimal next12MonthsEstimatedIncome) {
339 this.next12MonthsEstimatedIncome = next12MonthsEstimatedIncome;
340 }
341
342 /**
343 * gets attribute remainderOfFYEstimatedIncome
344 * @return remainderOfFYEstimatedIncome
345 */
346 public BigDecimal getRemainderOfFYEstimatedIncome() {
347 if (ObjectUtils.isNull(remainderOfFYEstimatedIncome)) {
348 return BigDecimal.ZERO;
349 }
350
351 return remainderOfFYEstimatedIncome;
352 }
353
354 /**
355 * sets attribute remainderOfFYEstimatedIncome
356 */
357 public void setRemainderOfFYEstimatedIncome(BigDecimal remainderOfFYEstimatedIncome) {
358 this.remainderOfFYEstimatedIncome = remainderOfFYEstimatedIncome;
359 }
360
361 /**
362 * gets attribute nextFYEstimatedIncome
363 * @return nextFYEstimatedIncome
364 */
365 public BigDecimal getNextFYEstimatedIncome() {
366 if (ObjectUtils.isNull(nextFYEstimatedIncome)) {
367 return BigDecimal.ZERO;
368 }
369
370 return nextFYEstimatedIncome;
371 }
372
373 /**
374 * sets attribute nextFYEstimatedIncome
375 */
376 public void setNextFYEstimatedIncome(BigDecimal nextFYEstimatedIncome) {
377 this.nextFYEstimatedIncome = nextFYEstimatedIncome;
378 }
379
380 /**
381 * gets attribute reportGroupsForContributions
382 * @return reportGroupsForContributions
383 */
384 public List<ContributionsDataHolder> getReportGroupsForContributions() {
385 return reportGroupsForContributions;
386 }
387
388
389 /**
390 * gets attribute reportGroupsForCashTransfers
391 * @return reportGroupsForCashTransfers
392 */
393 public List<CashTransfersDataHolder> getReportGroupsForCashTransfers() {
394 return reportGroupsForCashTransfers;
395 }
396 /**
397 * sets attribute reportGroupsForCashTransfers
398 */
399 public void setReportGroupsForCashTransfers(List<CashTransfersDataHolder> reportGroupsForCashTransfers) {
400 this.reportGroupsForCashTransfers = reportGroupsForCashTransfers;
401 }
402
403 /**
404 * gets attribute reportGroupsForSecurityTransfers
405 * @return reportGroupsForSecurityTransfers
406 */
407 public List<SecurityTransfersDataHolder> getReportGroupsForSecurityTransfers() {
408 return reportGroupsForSecurityTransfers;
409 }
410 /**
411 * sets attribute reportGroupsForSecurityTransfers
412 */
413 public void setReportGroupsForSecurityTransfers(List<SecurityTransfersDataHolder> reportGroupsForSecurityTransfers) {
414 this.reportGroupsForSecurityTransfers = reportGroupsForSecurityTransfers;
415 }
416
417 /**
418 * sets attribute reportGroupsForContributions
419 */
420 public void setReportGroupsForContributions(List<ContributionsDataHolder> reportGroupsForContributions) {
421 this.reportGroupsForContributions = reportGroupsForContributions;
422 }
423
424 /**
425 * gets attribute footer
426 * @return footer
427 */
428 protected EndowmentReportFooterDataHolder getFooter() {
429 return footer;
430 }
431 /**
432 * sets attribute footer
433 */
434 public void setFooter(EndowmentReportFooterDataHolder footer) {
435 this.footer = footer;
436 }
437
438 /**
439 * public class to hold contributions and Other income totals.
440 */
441 public class ContributionsDataHolder {
442 protected String contributionsDescription;
443 protected BigDecimal incomeContributions = BigDecimal.ZERO;
444 protected BigDecimal principalContributions = BigDecimal.ZERO;
445
446 /**
447 * gets attribute contributionsDescription
448 * @return contributionsDescription
449 */
450 public String getContributionsDescription() {
451 return contributionsDescription;
452 }
453 /**
454 * sets attribute contributionsDescription
455 */
456 public void setContributionsDescription(String contributionsDescription) {
457 this.contributionsDescription = contributionsDescription;
458 }
459 /**
460 * gets attribute incomeContributions
461 * @return incomeContributions
462 */
463 public BigDecimal getIncomeContributions() {
464 if (ObjectUtils.isNull(incomeContributions)) {
465 return BigDecimal.ZERO;
466 }
467
468 return incomeContributions;
469 }
470 /**
471 * sets attribute incomeContributions
472 */
473 public void setIncomeContributions(BigDecimal incomeContributions) {
474 this.incomeContributions = incomeContributions;
475 }
476 /**
477 * gets attribute principalContributions
478 * @return principalContributions
479 */
480 public BigDecimal getPrincipalContributions() {
481 if (ObjectUtils.isNull(principalContributions)) {
482 return BigDecimal.ZERO;
483 }
484
485 return principalContributions;
486 }
487 /**
488 * sets attribute principalContributions
489 */
490 public void setPrincipalContributions(BigDecimal principalContributions) {
491 this.principalContributions = principalContributions;
492 }
493 /**
494 * gets sum of incomeContributions and principalContributions
495 * @return sum
496 */
497 protected BigDecimal getTotalContributions() {
498 return this.getIncomeContributions().add(this.getPrincipalContributions());
499 }
500 }
501
502 /**
503 * public class to hold Expenses data
504 */
505 public class ExpensesDataHolder {
506 protected String expensesDescription;
507 protected BigDecimal incomeExpenses = BigDecimal.ZERO;
508 protected BigDecimal principalExpenses = BigDecimal.ZERO;
509
510 /**
511 * gets attribute expensesDescription
512 * @return expensesDescription
513 */
514 public String getExpensesDescription() {
515 return expensesDescription;
516 }
517
518 /**
519 * sets attribute expensesDescription
520 */
521 public void setExpensesDescription(String expensesDescription) {
522 this.expensesDescription = expensesDescription;
523 }
524
525 /**
526 * gets attribute incomeExpenses
527 * @return incomeExpenses
528 */
529 public BigDecimal getIncomeExpenses() {
530 if (ObjectUtils.isNull(incomeExpenses)) {
531 return BigDecimal.ZERO;
532 }
533
534 return incomeExpenses;
535 }
536
537 /**
538 * sets attribute incomeExpenses
539 */
540 public void setIncomeExpenses(BigDecimal incomeExpenses) {
541 this.incomeExpenses = incomeExpenses;
542 }
543
544 /**
545 * gets attribute principalExpenses
546 * @return principalExpenses
547 */
548 public BigDecimal getPrincipalExpenses() {
549 if (ObjectUtils.isNull(principalExpenses)) {
550 return BigDecimal.ZERO;
551 }
552
553 return principalExpenses;
554 }
555
556 /**
557 * sets attribute principalExpenses
558 */
559 public void setPrincipalExpenses(BigDecimal principalExpenses) {
560 this.principalExpenses = principalExpenses;
561 }
562
563 /**
564 * gets sum of incomeExpenses and principalExpenses
565 * @return totalExpenses
566 */
567 public BigDecimal getTotalExpenses() {
568 return this.getIncomeExpenses().add(this.getPrincipalExpenses());
569 }
570 }
571
572 /**
573 * public class to hold cash transfers data
574 */
575 public class CashTransfersDataHolder {
576 protected String cashTransfersDescription;
577 protected BigDecimal incomeCashTransfers = BigDecimal.ZERO;
578 protected BigDecimal principalCashTransfers = BigDecimal.ZERO;
579
580 /**
581 * gets attribute cashTransfersDescription
582 * @return cashTransfersDescription
583 */
584 public String getCashTransfersDescription() {
585 return cashTransfersDescription;
586 }
587
588 /**
589 * sets attribute cashTransfersDescription
590 */
591 public void setCashTransfersDescription(String cashTransfersDescription) {
592 this.cashTransfersDescription = cashTransfersDescription;
593 }
594
595 /**
596 * gets attribute incomeCashTransfers
597 * @return incomeCashTransfers
598 */
599 public BigDecimal getIncomeCashTransfers() {
600 if (ObjectUtils.isNull(incomeCashTransfers)) {
601 return BigDecimal.ZERO;
602 }
603
604 return incomeCashTransfers;
605 }
606
607 /**
608 * sets attribute incomeCashTransfers
609 */
610 public void setIncomeCashTransfers(BigDecimal incomeCashTransfers) {
611 this.incomeCashTransfers = incomeCashTransfers;
612 }
613
614 /**
615 * gets attribute principalCashTransfers
616 * @return principalCashTransfers
617 */
618 public BigDecimal getPrincipalCashTransfers() {
619 if (ObjectUtils.isNull(principalCashTransfers)) {
620 return BigDecimal.ZERO;
621 }
622
623 return principalCashTransfers;
624 }
625
626 /**
627 * sets attribute principalCashTransfers
628 */
629 public void setPrincipalCashTransfers(BigDecimal principalCashTransfers) {
630 this.principalCashTransfers = principalCashTransfers;
631 }
632
633 /**
634 * gets sum of incomeExpenses and principalExpenses
635 * @return totalExpenses
636 */
637 public BigDecimal getTotalCashTransfers() {
638 return this.getIncomeCashTransfers().add(this.getPrincipalCashTransfers());
639 }
640 }
641
642 /**
643 * public class to hold Security transfers data
644 */
645 public class SecurityTransfersDataHolder {
646 protected String securityTransfersDescription;
647 protected BigDecimal incomeSecurityTransfers = BigDecimal.ZERO;
648 protected BigDecimal principalSecurityTransfers = BigDecimal.ZERO;
649
650 /**
651 * gets attribute securityTransfersDescription
652 * @return securityTransfersDescription
653 */
654 public String getSecurityTransfersDescription() {
655 return securityTransfersDescription;
656 }
657
658 /**
659 * sets attribute securityTransfersDescription
660 */
661 public void setSecurityTransfersDescription(String securityTransfersDescription) {
662 this.securityTransfersDescription = securityTransfersDescription;
663 }
664
665 /**
666 * gets attribute incomeSecurityTransfers
667 * @return incomeSecurityTransfers
668 */
669 public BigDecimal getIncomeSecurityTransfers() {
670 if (ObjectUtils.isNull(incomeSecurityTransfers)) {
671 return BigDecimal.ZERO;
672 }
673
674 return incomeSecurityTransfers;
675 }
676
677 /**
678 * sets attribute incomeSecurityTransfers
679 */
680 public void setIncomeSecurityTransfers(BigDecimal incomeSecurityTransfers) {
681 this.incomeSecurityTransfers = incomeSecurityTransfers;
682 }
683
684 /**
685 * gets attribute principalSecurityTransfers
686 * @return principalSecurityTransfers
687 */
688 public BigDecimal getPrincipalSecurityTransfers() {
689 if (ObjectUtils.isNull(principalSecurityTransfers)) {
690 return BigDecimal.ZERO;
691 }
692
693 return principalSecurityTransfers;
694 }
695
696 /**
697 * sets attribute principalSecurityTransfers
698 */
699 public void setPrincipalSecurityTransfers(BigDecimal principalSecurityTransfers) {
700 this.principalSecurityTransfers = principalSecurityTransfers;
701 }
702
703 /**
704 * gets sum of incomeSecurityTransferS and principalSecurityTransfers
705 * @return totalExpenses
706 */
707 public BigDecimal getTotalSecurityTransfers() {
708 return this.getIncomeSecurityTransfers().add(this.getPrincipalSecurityTransfers());
709 }
710 }
711
712 }