View Javadoc
1   /*
2    * The Kuali Financial System, a comprehensive financial management system for higher education.
3    * 
4    * Copyright 2005-2014 The Kuali Foundation
5    * 
6    * This program is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU Affero General Public License as
8    * published by the Free Software Foundation, either version 3 of the
9    * License, or (at your option) any later version.
10   * 
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU Affero General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Affero General Public License
17   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.kuali.kfs.module.bc.document.service.impl;
20  
21  import java.math.BigDecimal;
22  import java.util.ArrayList;
23  import java.util.Collection;
24  import java.util.HashMap;
25  import java.util.List;
26  import java.util.Map;
27  
28  import org.apache.commons.lang.StringUtils;
29  import org.apache.ojb.broker.PersistenceBrokerException;
30  import org.kuali.kfs.module.bc.BCConstants;
31  import org.kuali.kfs.module.bc.BCKeyConstants;
32  import org.kuali.kfs.module.bc.businessobject.BudgetConstructionAccountBalance;
33  import org.kuali.kfs.module.bc.businessobject.BudgetConstructionOrgAccountObjectDetailReport;
34  import org.kuali.kfs.module.bc.businessobject.BudgetConstructionOrgAccountObjectDetailReportTotal;
35  import org.kuali.kfs.module.bc.document.dataaccess.BudgetConstructionAccountObjectDetailReportDao;
36  import org.kuali.kfs.module.bc.document.service.BudgetConstructionAccountObjectDetailReportService;
37  import org.kuali.kfs.module.bc.document.service.BudgetConstructionOrganizationReportsService;
38  import org.kuali.kfs.module.bc.report.BudgetConstructionReportHelper;
39  import org.kuali.kfs.module.bc.util.BudgetConstructionUtils;
40  import org.kuali.kfs.sys.KFSConstants;
41  import org.kuali.kfs.sys.KFSPropertyConstants;
42  import org.kuali.rice.core.api.config.property.ConfigurationService;
43  import org.kuali.rice.core.api.util.type.KualiInteger;
44  import org.kuali.rice.krad.service.BusinessObjectService;
45  import org.kuali.rice.krad.service.PersistenceService;
46  import org.springframework.transaction.annotation.Transactional;
47  
48  /**
49   * Service implementation of BudgetConstructionAccountSummaryReportService.
50   */
51  @Transactional
52  public class BudgetConstructionAccountObjectDetailReportServiceImpl implements BudgetConstructionAccountObjectDetailReportService {
53  
54      protected BudgetConstructionAccountObjectDetailReportDao budgetConstructionAccountObjectDetailReportDao;
55      protected ConfigurationService kualiConfigurationService;
56      protected BudgetConstructionOrganizationReportsService budgetConstructionOrganizationReportsService;
57      protected BusinessObjectService businessObjectService;
58      protected PersistenceService persistenceServiceOjb;
59  
60      /**
61       * @see org.kuali.kfs.module.bc.document.service.BudgetReportsControlListService#updateSubFundSummaryReport(java.lang.String)
62       */
63      @Override
64      public void updateAccountObjectDetailReport(String principalName, boolean consolidated) {
65          String expenditureINList = BudgetConstructionUtils.getExpenditureINList();
66          String revenueINList =  BudgetConstructionUtils.getRevenueINList();
67          if (consolidated) {
68              budgetConstructionAccountObjectDetailReportDao.updateReportsAccountObjectConsolidatedTable(principalName,expenditureINList, revenueINList);
69          }
70          else {
71              budgetConstructionAccountObjectDetailReportDao.updateReportsAccountObjectDetailTable(principalName, expenditureINList, revenueINList);
72          }
73      }
74  
75      @Override
76      public Collection<BudgetConstructionOrgAccountObjectDetailReport> buildReports(Integer universityFiscalYear, String principalName, boolean consolidated) {
77          Collection<BudgetConstructionOrgAccountObjectDetailReport> reportSet = new ArrayList();
78          Collection<BudgetConstructionAccountBalance> accountObjectDetailList;
79  
80          // build searchCriteria
81          Map searchCriteria = new HashMap();
82          searchCriteria.put(KFSPropertyConstants.KUALI_USER_PERSON_UNIVERSAL_IDENTIFIER, principalName);
83  
84          // force OJB to go to DB since it is populated using JDBC
85          // normally done in BudgetConstructionReportsServiceHelperImpl.getDataForBuildingReports
86          persistenceServiceOjb.clearCache();
87  
88          // build order list
89          List<String> orderList = buildOrderByList();
90          accountObjectDetailList = budgetConstructionOrganizationReportsService.getBySearchCriteriaOrderByList(BudgetConstructionAccountBalance.class, searchCriteria, orderList);
91  
92  
93          // BudgetConstructionReportHelper.deleteDuplicated((List) positionFundingDetailList, fieldsForSubFundTotal())
94          List listForCalculateObject = BudgetConstructionReportHelper.deleteDuplicated((List) accountObjectDetailList, fieldsForObject());
95          List listForCalculateLevel = BudgetConstructionReportHelper.deleteDuplicated((List) accountObjectDetailList, fieldsForLevel());
96          List listForCalculateGexpAndType = BudgetConstructionReportHelper.deleteDuplicated((List) accountObjectDetailList, fieldsForGexpAndType());
97          List listForCalculateAccountTotal = BudgetConstructionReportHelper.deleteDuplicated((List) accountObjectDetailList, fieldsForAccountTotal());
98          List listForCalculateSubFundTotal = BudgetConstructionReportHelper.deleteDuplicated((List) accountObjectDetailList, fieldsForSubFundTotal());
99  
100         // Calculate Total Section
101         List<BudgetConstructionOrgAccountObjectDetailReportTotal> accountObjectDetailTotalObjectList;
102         List<BudgetConstructionOrgAccountObjectDetailReportTotal> accountObjectDetailTotalLevelList;
103         List<BudgetConstructionOrgAccountObjectDetailReportTotal> accountObjectDetailTotalGexpAndTypeList;
104         List<BudgetConstructionOrgAccountObjectDetailReportTotal> accountObjectDetailAccountTotalList;
105         List<BudgetConstructionOrgAccountObjectDetailReportTotal> accountObjectDetailSubFundTotalList;
106 
107         accountObjectDetailTotalObjectList = calculateObjectTotal((List) accountObjectDetailList, listForCalculateObject);
108         accountObjectDetailTotalLevelList = calculateLevelTotal((List) accountObjectDetailList, listForCalculateLevel);
109         accountObjectDetailTotalGexpAndTypeList = calculateGexpAndTypeTotal((List) accountObjectDetailList, listForCalculateGexpAndType);
110         accountObjectDetailAccountTotalList = calculateAccountTotal((List) accountObjectDetailList, listForCalculateAccountTotal);
111         accountObjectDetailSubFundTotalList = calculateSubFundTotal((List) accountObjectDetailList, listForCalculateSubFundTotal);
112 
113         for (BudgetConstructionAccountBalance accountObjectDetailEntry : accountObjectDetailList) {
114             BudgetConstructionOrgAccountObjectDetailReport accountObjectDetailReport = new BudgetConstructionOrgAccountObjectDetailReport();
115             buildReportsHeader(universityFiscalYear, accountObjectDetailReport, accountObjectDetailEntry, consolidated);
116             buildReportsBody(universityFiscalYear, accountObjectDetailReport, accountObjectDetailEntry);
117             buildReportsTotal(accountObjectDetailReport, accountObjectDetailEntry, accountObjectDetailTotalObjectList, accountObjectDetailTotalLevelList, accountObjectDetailTotalGexpAndTypeList, accountObjectDetailAccountTotalList, accountObjectDetailSubFundTotalList);
118             reportSet.add(accountObjectDetailReport);
119         }
120         return reportSet;
121     }
122 
123 
124     /**
125      * builds report Header
126      *
127      * @param BudgetConstructionObjectSummary bcas
128      */
129     protected void buildReportsHeader(Integer universityFiscalYear, BudgetConstructionOrgAccountObjectDetailReport orgAccountObjectDetailReportEntry, BudgetConstructionAccountBalance accountBalance, boolean consolidated) {
130         String orgChartDesc = accountBalance.getOrganizationChartOfAccounts().getFinChartOfAccountDescription();
131         String chartDesc = accountBalance.getChartOfAccounts().getFinChartOfAccountDescription();
132         String orgName = "";
133         try {
134             orgName = accountBalance.getOrganization().getOrganizationName();
135         }
136         catch (PersistenceBrokerException e) {
137         }
138         String reportChartDesc = accountBalance.getChartOfAccounts().getReportsToChartOfAccounts().getFinChartOfAccountDescription();
139         String subFundGroupName = accountBalance.getSubFundGroup().getSubFundGroupCode();
140         String subFundGroupDes = accountBalance.getSubFundGroup().getSubFundGroupDescription();
141         String fundGroupName = accountBalance.getSubFundGroup().getFundGroupCode();
142         String fundGroupDes = accountBalance.getSubFundGroup().getFundGroup().getName();
143 
144         Integer prevFiscalyear = universityFiscalYear - 1;
145         orgAccountObjectDetailReportEntry.setFiscalYear(prevFiscalyear.toString() + "-" + universityFiscalYear.toString().substring(2, 4));
146         orgAccountObjectDetailReportEntry.setOrgChartOfAccountsCode(accountBalance.getOrganizationChartOfAccountsCode());
147 
148         if (orgChartDesc == null) {
149             orgAccountObjectDetailReportEntry.setOrgChartOfAccountDescription(kualiConfigurationService.getPropertyValueAsString(BCKeyConstants.ERROR_REPORT_GETTING_CHART_DESCRIPTION));
150         }
151         else {
152             orgAccountObjectDetailReportEntry.setOrgChartOfAccountDescription(orgChartDesc);
153         }
154 
155         orgAccountObjectDetailReportEntry.setOrganizationCode(accountBalance.getOrganizationCode());
156         if (orgName == null) {
157             orgAccountObjectDetailReportEntry.setOrganizationName(kualiConfigurationService.getPropertyValueAsString(BCKeyConstants.ERROR_REPORT_GETTING_ORGANIZATION_NAME));
158         }
159         else {
160             orgAccountObjectDetailReportEntry.setOrganizationName(orgName);
161         }
162 
163         orgAccountObjectDetailReportEntry.setChartOfAccountsCode(accountBalance.getChartOfAccountsCode());
164         if (chartDesc == null) {
165             orgAccountObjectDetailReportEntry.setChartOfAccountDescription(kualiConfigurationService.getPropertyValueAsString(BCKeyConstants.ERROR_REPORT_GETTING_CHART_DESCRIPTION));
166         }
167         else {
168             orgAccountObjectDetailReportEntry.setChartOfAccountDescription(chartDesc);
169         }
170 
171         orgAccountObjectDetailReportEntry.setFundGroupCode(accountBalance.getSubFundGroup().getFundGroupCode());
172         if (fundGroupDes == null) {
173             orgAccountObjectDetailReportEntry.setFundGroupName(kualiConfigurationService.getPropertyValueAsString(BCKeyConstants.ERROR_REPORT_GETTING_FUNDGROUP_NAME));
174         }
175         else {
176             orgAccountObjectDetailReportEntry.setFundGroupName(fundGroupDes);
177         }
178 
179         orgAccountObjectDetailReportEntry.setSubFundGroupCode(accountBalance.getSubFundGroupCode());
180         if (subFundGroupDes == null) {
181             orgAccountObjectDetailReportEntry.setSubFundGroupDescription(kualiConfigurationService.getPropertyValueAsString(BCKeyConstants.ERROR_REPORT_GETTING_SUBFUNDGROUP_DESCRIPTION));
182         }
183         else {
184             orgAccountObjectDetailReportEntry.setSubFundGroupDescription(subFundGroupDes);
185         }
186 
187         Integer prevPrevFiscalyear = prevFiscalyear - 1;
188         orgAccountObjectDetailReportEntry.setBaseFy(prevPrevFiscalyear.toString() + "-" + prevFiscalyear.toString().substring(2, 4) + " Base");
189         orgAccountObjectDetailReportEntry.setReqFy(prevFiscalyear.toString() + "-" + universityFiscalYear.toString().substring(2, 4) + " Request");
190         if (consolidated) {
191             orgAccountObjectDetailReportEntry.setConsHdr(BCConstants.Report.CONSOLIIDATED);
192         }
193         else {
194             orgAccountObjectDetailReportEntry.setConsHdr(BCConstants.Report.BLANK);
195         }
196 
197         orgAccountObjectDetailReportEntry.setAccountNumber(accountBalance.getAccountNumber());
198         String accountName = accountBalance.getAccount().getAccountName();
199         if (accountName == null) {
200             orgAccountObjectDetailReportEntry.setAccountName(kualiConfigurationService.getPropertyValueAsString(BCKeyConstants.ERROR_REPORT_GETTING_ACCOUNT_DESCRIPTION));
201         }
202         else {
203             orgAccountObjectDetailReportEntry.setAccountName(accountName);
204         }
205 
206         orgAccountObjectDetailReportEntry.setSubAccountNumber(accountBalance.getSubAccountNumber());
207 
208         String subAccountName = StringUtils.EMPTY;
209         String subAccountNumberAndName = StringUtils.EMPTY;
210         String divider = StringUtils.EMPTY;
211         // set accountNumber and name, subAccountNumber and name
212         if (accountBalance.getAccount() != null) {
213             orgAccountObjectDetailReportEntry.setAccountNumberAndName(accountBalance.getAccountNumber() + " " + accountBalance.getAccount().getAccountName());
214             orgAccountObjectDetailReportEntry.setAccountName(accountBalance.getAccount().getAccountName());
215         }
216 
217         if (!accountBalance.getSubAccountNumber().equals(KFSConstants.getDashSubAccountNumber())) {
218             divider = BCConstants.Report.DIVIDER;
219             try {
220                 subAccountName = accountBalance.getSubAccount().getSubAccountName();
221                 subAccountNumberAndName = accountBalance.getSubAccount().getSubAccountNumber() + " " + accountBalance.getSubAccount().getSubAccountName();
222             }
223             catch (PersistenceBrokerException e) {
224                 subAccountName = kualiConfigurationService.getPropertyValueAsString(BCKeyConstants.ERROR_REPORT_GETTING_SUB_ACCOUNT_DESCRIPTION);
225                 subAccountNumberAndName = subAccountName;
226             }
227         }
228 
229         orgAccountObjectDetailReportEntry.setSubAccountName(subAccountName);
230         orgAccountObjectDetailReportEntry.setSubAccountNumberAndName(subAccountNumberAndName);
231         orgAccountObjectDetailReportEntry.setDivider(divider);
232 
233         // For group
234         orgAccountObjectDetailReportEntry.setSubAccountNumber(accountBalance.getSubAccountNumber() + accountBalance.getAccountNumber());
235         orgAccountObjectDetailReportEntry.setFinancialObjectCode(accountBalance.getFinancialObjectCode());
236         orgAccountObjectDetailReportEntry.setFinancialSubObjectCode(accountBalance.getFinancialSubObjectCode());
237         // orgAccountObjectDetailReportEntry.setFinancialObjectLevelCode(accountBalance.getFinancialObjectLevelCode());
238         orgAccountObjectDetailReportEntry.setIncomeExpenseCode(accountBalance.getIncomeExpenseCode());
239         // orgAccountObjectDetailReportEntry.setFinancialConsolidationSortCode(accountBalance.getFinancialConsolidationSortCode());
240         orgAccountObjectDetailReportEntry.setFinancialLevelSortCode(accountBalance.getFinancialLevelSortCode());
241 
242         // page break
243 
244         // page break org_fin_coa_cd, org_cd, sub_fund_grp_cd)%\
245         orgAccountObjectDetailReportEntry.setPageBreak(accountBalance.getOrganizationChartOfAccountsCode() + accountBalance.getOrganizationCode() + accountBalance.getSubFundGroupCode());
246     }
247 
248 
249     /**
250      * builds report body
251      *
252      * @param BudgetConstructionLevelSummary bcas
253      */
254     protected void buildReportsBody(Integer universityFiscalYear, BudgetConstructionOrgAccountObjectDetailReport orgAccountObjectDetailReportEntry, BudgetConstructionAccountBalance accountBalance) {
255         if (accountBalance.getFinancialSubObjectCode().equals(KFSConstants.getDashFinancialSubObjectCode())) {
256             orgAccountObjectDetailReportEntry.setFinancialObjectName(accountBalance.getFinancialObject().getFinancialObjectCodeName());
257         }
258         else {
259             orgAccountObjectDetailReportEntry.setFinancialObjectName(accountBalance.getFinancialSubObject().getFinancialSubObjectCodeName());
260         }
261 
262         orgAccountObjectDetailReportEntry.setPositionCsfLeaveFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(accountBalance.getPositionCsfLeaveFteQuantity(), 2, true));
263 
264         orgAccountObjectDetailReportEntry.setPositionFullTimeEquivalencyQuantity(BudgetConstructionReportHelper.setDecimalDigit(accountBalance.getPositionFullTimeEquivalencyQuantity(), 2, true));
265 
266         orgAccountObjectDetailReportEntry.setAppointmentRequestedCsfFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(accountBalance.getAppointmentRequestedCsfFteQuantity(), 2, true));
267 
268         orgAccountObjectDetailReportEntry.setAppointmentRequestedFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(accountBalance.getAppointmentRequestedFteQuantity(), 2, true));
269 
270         orgAccountObjectDetailReportEntry.setAccountLineAnnualBalanceAmount(accountBalance.getAccountLineAnnualBalanceAmount());
271 
272         orgAccountObjectDetailReportEntry.setFinancialBeginningBalanceLineAmount(accountBalance.getFinancialBeginningBalanceLineAmount());
273 
274         orgAccountObjectDetailReportEntry.setAmountChange(accountBalance.getAccountLineAnnualBalanceAmount().subtract(accountBalance.getFinancialBeginningBalanceLineAmount()));
275         orgAccountObjectDetailReportEntry.setPercentChange(BudgetConstructionReportHelper.calculatePercent(orgAccountObjectDetailReportEntry.getAmountChange(), orgAccountObjectDetailReportEntry.getFinancialBeginningBalanceLineAmount()));
276     }
277 
278     /**
279      * builds report total
280      */
281 
282     protected void buildReportsTotal(BudgetConstructionOrgAccountObjectDetailReport orgObjectSummaryReportEntry, BudgetConstructionAccountBalance accountBalance, List<BudgetConstructionOrgAccountObjectDetailReportTotal> accountObjectDetailTotalObjectList, List<BudgetConstructionOrgAccountObjectDetailReportTotal> accountObjectDetailTotalLevelList, List<BudgetConstructionOrgAccountObjectDetailReportTotal> accountObjectDetailTotalGexpAndTypeList, List<BudgetConstructionOrgAccountObjectDetailReportTotal> accountObjectDetailAccountTotalList, List<BudgetConstructionOrgAccountObjectDetailReportTotal> accountObjectDetailSubFundTotalList) {
283 
284         for (BudgetConstructionOrgAccountObjectDetailReportTotal objectTotal : accountObjectDetailTotalObjectList) {
285             if (BudgetConstructionReportHelper.isSameEntry(accountBalance, objectTotal.getBudgetConstructionAccountBalance(), fieldsForObject())) {
286                 orgObjectSummaryReportEntry.setTotalObjectDescription(accountBalance.getFinancialObject().getFinancialObjectCodeName());
287 
288                 orgObjectSummaryReportEntry.setTotalObjectPositionCsfLeaveFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(objectTotal.getTotalObjectPositionCsfLeaveFteQuantity(), 2, true));
289                 orgObjectSummaryReportEntry.setTotalObjectPositionFullTimeEquivalencyQuantity(BudgetConstructionReportHelper.setDecimalDigit(objectTotal.getTotalObjectPositionFullTimeEquivalencyQuantity(), 2, true));
290                 orgObjectSummaryReportEntry.setTotalObjectFinancialBeginningBalanceLineAmount(objectTotal.getTotalObjectFinancialBeginningBalanceLineAmount());
291                 orgObjectSummaryReportEntry.setTotalObjectAppointmentRequestedCsfFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(objectTotal.getTotalObjectAppointmentRequestedCsfFteQuantity(), 2, true));
292                 orgObjectSummaryReportEntry.setTotalObjectAppointmentRequestedFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(objectTotal.getTotalObjectAppointmentRequestedFteQuantity(), 2, true));
293                 orgObjectSummaryReportEntry.setTotalObjectAccountLineAnnualBalanceAmount(objectTotal.getTotalObjectAccountLineAnnualBalanceAmount());
294 
295                 KualiInteger totalObjectAmountChange = objectTotal.getTotalObjectAccountLineAnnualBalanceAmount().subtract(objectTotal.getTotalObjectFinancialBeginningBalanceLineAmount());
296                 orgObjectSummaryReportEntry.setTotalObjectAmountChange(totalObjectAmountChange);
297                 orgObjectSummaryReportEntry.setTotalObjectPercentChange(BudgetConstructionReportHelper.calculatePercent(totalObjectAmountChange, objectTotal.getTotalObjectFinancialBeginningBalanceLineAmount()));
298             }
299         }
300 
301         for (BudgetConstructionOrgAccountObjectDetailReportTotal levelTotal : accountObjectDetailTotalLevelList) {
302             if (BudgetConstructionReportHelper.isSameEntry(accountBalance, levelTotal.getBudgetConstructionAccountBalance(), fieldsForLevel())) {
303                 orgObjectSummaryReportEntry.setTotalLevelDescription(accountBalance.getFinancialObjectLevel().getFinancialObjectLevelName());
304 
305                 orgObjectSummaryReportEntry.setTotalLevelPositionCsfLeaveFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(levelTotal.getTotalLevelPositionCsfLeaveFteQuantity(), 2, true));
306                 orgObjectSummaryReportEntry.setTotalLevelPositionFullTimeEquivalencyQuantity(BudgetConstructionReportHelper.setDecimalDigit(levelTotal.getTotalLevelPositionFullTimeEquivalencyQuantity(), 2, true));
307                 orgObjectSummaryReportEntry.setTotalLevelFinancialBeginningBalanceLineAmount(levelTotal.getTotalLevelFinancialBeginningBalanceLineAmount());
308                 orgObjectSummaryReportEntry.setTotalLevelAppointmentRequestedCsfFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(levelTotal.getTotalLevelAppointmentRequestedCsfFteQuantity(), 2, true));
309                 orgObjectSummaryReportEntry.setTotalLevelAppointmentRequestedFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(levelTotal.getTotalLevelAppointmentRequestedFteQuantity(), 2, true));
310                 orgObjectSummaryReportEntry.setTotalLevelAccountLineAnnualBalanceAmount(levelTotal.getTotalLevelAccountLineAnnualBalanceAmount());
311 
312                 KualiInteger totalLevelAmountChange = levelTotal.getTotalLevelAccountLineAnnualBalanceAmount().subtract(levelTotal.getTotalLevelFinancialBeginningBalanceLineAmount());
313                 orgObjectSummaryReportEntry.setTotalLevelAmountChange(totalLevelAmountChange);
314                 orgObjectSummaryReportEntry.setTotalLevelPercentChange(BudgetConstructionReportHelper.calculatePercent(totalLevelAmountChange, levelTotal.getTotalLevelFinancialBeginningBalanceLineAmount()));
315             }
316         }
317 
318 
319         for (BudgetConstructionOrgAccountObjectDetailReportTotal gexpAndTypeTotal : accountObjectDetailTotalGexpAndTypeList) {
320             if (BudgetConstructionReportHelper.isSameEntry(accountBalance, gexpAndTypeTotal.getBudgetConstructionAccountBalance(), fieldsForGexpAndType())) {
321 
322                 orgObjectSummaryReportEntry.setGrossFinancialBeginningBalanceLineAmount(gexpAndTypeTotal.getGrossFinancialBeginningBalanceLineAmount());
323                 orgObjectSummaryReportEntry.setGrossAccountLineAnnualBalanceAmount(gexpAndTypeTotal.getGrossAccountLineAnnualBalanceAmount());
324                 KualiInteger grossAmountChange = gexpAndTypeTotal.getGrossAccountLineAnnualBalanceAmount().subtract(gexpAndTypeTotal.getGrossFinancialBeginningBalanceLineAmount());
325                 orgObjectSummaryReportEntry.setGrossAmountChange(grossAmountChange);
326                 orgObjectSummaryReportEntry.setGrossPercentChange(BudgetConstructionReportHelper.calculatePercent(grossAmountChange, gexpAndTypeTotal.getGrossFinancialBeginningBalanceLineAmount()));
327 
328                 if (accountBalance.getIncomeExpenseCode().equals(BCConstants.Report.INCOME_EXP_TYPE_A)) {
329                     orgObjectSummaryReportEntry.setTypeDesc(kualiConfigurationService.getPropertyValueAsString(BCKeyConstants.MSG_REPORT_INCOME_EXP_DESC_UPPERCASE_REVENUE));
330                 }
331                 else {
332                     orgObjectSummaryReportEntry.setTypeDesc(kualiConfigurationService.getPropertyValueAsString(BCKeyConstants.MSG_REPORT_INCOME_EXP_DESC_EXPENDITURE_NET_TRNFR));
333                 }
334 
335                 orgObjectSummaryReportEntry.setTypePositionCsfLeaveFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(gexpAndTypeTotal.getTypePositionCsfLeaveFteQuantity(), 2, true));
336                 orgObjectSummaryReportEntry.setTypePositionFullTimeEquivalencyQuantity(BudgetConstructionReportHelper.setDecimalDigit(gexpAndTypeTotal.getTypePositionFullTimeEquivalencyQuantity(), 2, true));
337                 orgObjectSummaryReportEntry.setTypeFinancialBeginningBalanceLineAmount(gexpAndTypeTotal.getTypeFinancialBeginningBalanceLineAmount());
338                 orgObjectSummaryReportEntry.setTypeAppointmentRequestedCsfFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(gexpAndTypeTotal.getTypeAppointmentRequestedCsfFteQuantity(), 2, true));
339                 orgObjectSummaryReportEntry.setTypeAppointmentRequestedFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(gexpAndTypeTotal.getTypeAppointmentRequestedFteQuantity(), 2, true));
340 
341                 orgObjectSummaryReportEntry.setTypeAccountLineAnnualBalanceAmount(gexpAndTypeTotal.getTypeAccountLineAnnualBalanceAmount());
342                 KualiInteger typeAmountChange = gexpAndTypeTotal.getTypeAccountLineAnnualBalanceAmount().subtract(gexpAndTypeTotal.getTypeFinancialBeginningBalanceLineAmount());
343                 orgObjectSummaryReportEntry.setTypeAmountChange(typeAmountChange);
344                 orgObjectSummaryReportEntry.setTypePercentChange(BudgetConstructionReportHelper.calculatePercent(typeAmountChange, gexpAndTypeTotal.getTypeFinancialBeginningBalanceLineAmount()));
345             }
346         }
347 
348         for (BudgetConstructionOrgAccountObjectDetailReportTotal accountTotal : accountObjectDetailAccountTotalList) {
349             if (BudgetConstructionReportHelper.isSameEntry(accountBalance, accountTotal.getBudgetConstructionAccountBalance(), fieldsForAccountTotal())) {
350 
351                 if (orgObjectSummaryReportEntry.getSubAccountName().equals(BCConstants.Report.BLANK)) {
352                     orgObjectSummaryReportEntry.setAccountNameForAccountTotal(orgObjectSummaryReportEntry.getAccountName());
353                 }
354                 else {
355                     orgObjectSummaryReportEntry.setAccountNameForAccountTotal(orgObjectSummaryReportEntry.getSubAccountName());
356                 }
357 
358                 orgObjectSummaryReportEntry.setAccountPositionCsfLeaveFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(accountTotal.getAccountPositionCsfLeaveFteQuantity(), 2, true));
359                 orgObjectSummaryReportEntry.setAccountPositionFullTimeEquivalencyQuantity(BudgetConstructionReportHelper.setDecimalDigit(accountTotal.getAccountPositionFullTimeEquivalencyQuantity(), 2, true));
360                 orgObjectSummaryReportEntry.setAccountAppointmentRequestedCsfFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(accountTotal.getAccountAppointmentRequestedCsfFteQuantity(), 2, true));
361                 orgObjectSummaryReportEntry.setAccountAppointmentRequestedFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(accountTotal.getAccountAppointmentRequestedFteQuantity(), 2, true));
362 
363                 orgObjectSummaryReportEntry.setAccountRevenueFinancialBeginningBalanceLineAmount(accountTotal.getAccountRevenueFinancialBeginningBalanceLineAmount());
364                 orgObjectSummaryReportEntry.setAccountRevenueAccountLineAnnualBalanceAmount(accountTotal.getAccountRevenueAccountLineAnnualBalanceAmount());
365 
366                 KualiInteger accountRevenueAmountChange = accountTotal.getAccountRevenueAccountLineAnnualBalanceAmount().subtract(accountTotal.getAccountRevenueFinancialBeginningBalanceLineAmount());
367                 orgObjectSummaryReportEntry.setAccountRevenueAmountChange(accountRevenueAmountChange);
368                 orgObjectSummaryReportEntry.setAccountRevenuePercentChange(BudgetConstructionReportHelper.calculatePercent(accountRevenueAmountChange, accountTotal.getAccountRevenueFinancialBeginningBalanceLineAmount()));
369 
370                 KualiInteger accountGrossFinancialBeginningBalanceLineAmount = accountTotal.getAccountExpenditureFinancialBeginningBalanceLineAmount().subtract(accountTotal.getAccountTrnfrInFinancialBeginningBalanceLineAmount());
371                 KualiInteger accountGrossAccountLineAnnualBalanceAmount = accountTotal.getAccountExpenditureAccountLineAnnualBalanceAmount().subtract(accountTotal.getAccountTrnfrInAccountLineAnnualBalanceAmount());
372                 orgObjectSummaryReportEntry.setAccountGrossFinancialBeginningBalanceLineAmount(accountGrossFinancialBeginningBalanceLineAmount);
373                 orgObjectSummaryReportEntry.setAccountGrossAccountLineAnnualBalanceAmount(accountGrossAccountLineAnnualBalanceAmount);
374                 KualiInteger accountGrossAmountChange = accountGrossAccountLineAnnualBalanceAmount.subtract(accountGrossFinancialBeginningBalanceLineAmount);
375                 orgObjectSummaryReportEntry.setAccountGrossAmountChange(accountGrossAmountChange);
376                 orgObjectSummaryReportEntry.setAccountGrossPercentChange(BudgetConstructionReportHelper.calculatePercent(accountGrossAmountChange, accountGrossFinancialBeginningBalanceLineAmount));
377 
378                 orgObjectSummaryReportEntry.setAccountTrnfrInFinancialBeginningBalanceLineAmount(accountTotal.getAccountTrnfrInFinancialBeginningBalanceLineAmount());
379                 orgObjectSummaryReportEntry.setAccountTrnfrInAccountLineAnnualBalanceAmount(accountTotal.getAccountTrnfrInAccountLineAnnualBalanceAmount());
380 
381                 KualiInteger accountTrnfrInAmountChange = accountTotal.getAccountTrnfrInAccountLineAnnualBalanceAmount().subtract(accountTotal.getAccountTrnfrInFinancialBeginningBalanceLineAmount());
382                 orgObjectSummaryReportEntry.setAccountTrnfrInAmountChange(accountTrnfrInAmountChange);
383                 orgObjectSummaryReportEntry.setAccountTrnfrInPercentChange(BudgetConstructionReportHelper.calculatePercent(accountTrnfrInAmountChange, accountTotal.getAccountTrnfrInFinancialBeginningBalanceLineAmount()));
384 
385                 orgObjectSummaryReportEntry.setAccountExpenditureFinancialBeginningBalanceLineAmount(accountTotal.getAccountExpenditureFinancialBeginningBalanceLineAmount());
386                 orgObjectSummaryReportEntry.setAccountExpenditureAccountLineAnnualBalanceAmount(accountTotal.getAccountExpenditureAccountLineAnnualBalanceAmount());
387 
388                 KualiInteger accountExpenditureAmountChange = accountTotal.getAccountExpenditureAccountLineAnnualBalanceAmount().subtract(accountTotal.getAccountExpenditureFinancialBeginningBalanceLineAmount());
389                 orgObjectSummaryReportEntry.setAccountExpenditureAmountChange(accountExpenditureAmountChange);
390                 orgObjectSummaryReportEntry.setAccountExpenditurePercentChange(BudgetConstructionReportHelper.calculatePercent(accountExpenditureAmountChange, accountTotal.getAccountExpenditureFinancialBeginningBalanceLineAmount()));
391 
392                 KualiInteger accountDifferenceFinancialBeginningBalanceLineAmount = accountTotal.getAccountRevenueFinancialBeginningBalanceLineAmount().subtract(accountTotal.getAccountExpenditureFinancialBeginningBalanceLineAmount());
393                 KualiInteger accountDifferenceAccountLineAnnualBalanceAmount = accountTotal.getAccountRevenueAccountLineAnnualBalanceAmount().subtract(accountTotal.getAccountExpenditureAccountLineAnnualBalanceAmount());
394 
395                 orgObjectSummaryReportEntry.setAccountDifferenceFinancialBeginningBalanceLineAmount(accountDifferenceFinancialBeginningBalanceLineAmount);
396                 orgObjectSummaryReportEntry.setAccountDifferenceAccountLineAnnualBalanceAmount(accountDifferenceAccountLineAnnualBalanceAmount);
397 
398                 orgObjectSummaryReportEntry.setAccountDifferenceFinancialBeginningBalanceLineAmount(accountDifferenceFinancialBeginningBalanceLineAmount);
399                 orgObjectSummaryReportEntry.setAccountDifferenceAccountLineAnnualBalanceAmount(accountDifferenceAccountLineAnnualBalanceAmount);
400 
401                 KualiInteger accountDifferenceAmountChange = accountDifferenceAccountLineAnnualBalanceAmount.subtract(accountDifferenceFinancialBeginningBalanceLineAmount);
402                 orgObjectSummaryReportEntry.setAccountDifferenceAmountChange(accountDifferenceAmountChange);
403                 orgObjectSummaryReportEntry.setAccountDifferencePercentChange(BudgetConstructionReportHelper.calculatePercent(accountDifferenceAmountChange, accountDifferenceFinancialBeginningBalanceLineAmount));
404             }
405         }
406 
407         for (BudgetConstructionOrgAccountObjectDetailReportTotal subFundTotal : accountObjectDetailSubFundTotalList) {
408             if (BudgetConstructionReportHelper.isSameEntry(accountBalance, subFundTotal.getBudgetConstructionAccountBalance(), fieldsForSubFundTotal())) {
409 
410                 orgObjectSummaryReportEntry.setSubFundPositionCsfLeaveFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(subFundTotal.getSubFundPositionCsfLeaveFteQuantity(), 2, true));
411                 orgObjectSummaryReportEntry.setSubFundPositionFullTimeEquivalencyQuantity(BudgetConstructionReportHelper.setDecimalDigit(subFundTotal.getSubFundPositionFullTimeEquivalencyQuantity(), 2, true));
412                 orgObjectSummaryReportEntry.setSubFundAppointmentRequestedCsfFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(subFundTotal.getSubFundAppointmentRequestedCsfFteQuantity(), 2, true));
413                 orgObjectSummaryReportEntry.setSubFundAppointmentRequestedFteQuantity(BudgetConstructionReportHelper.setDecimalDigit(subFundTotal.getSubFundAppointmentRequestedFteQuantity(), 2, true));
414 
415                 orgObjectSummaryReportEntry.setSubFundRevenueFinancialBeginningBalanceLineAmount(subFundTotal.getSubFundRevenueFinancialBeginningBalanceLineAmount());
416                 orgObjectSummaryReportEntry.setSubFundRevenueAccountLineAnnualBalanceAmount(subFundTotal.getSubFundRevenueAccountLineAnnualBalanceAmount());
417 
418                 KualiInteger subFundRevenueAmountChange = subFundTotal.getSubFundRevenueAccountLineAnnualBalanceAmount().subtract(subFundTotal.getSubFundRevenueFinancialBeginningBalanceLineAmount());
419                 orgObjectSummaryReportEntry.setSubFundRevenueAmountChange(subFundRevenueAmountChange);
420                 orgObjectSummaryReportEntry.setSubFundRevenuePercentChange(BudgetConstructionReportHelper.calculatePercent(subFundRevenueAmountChange, subFundTotal.getSubFundRevenueFinancialBeginningBalanceLineAmount()));
421 
422                 KualiInteger subFundGrossFinancialBeginningBalanceLineAmount = subFundTotal.getSubFundExpenditureFinancialBeginningBalanceLineAmount().subtract(subFundTotal.getSubFundTrnfrInFinancialBeginningBalanceLineAmount());
423                 KualiInteger subFundGrossAccountLineAnnualBalanceAmount = subFundTotal.getSubFundExpenditureAccountLineAnnualBalanceAmount().subtract(subFundTotal.getSubFundTrnfrInAccountLineAnnualBalanceAmount());
424                 orgObjectSummaryReportEntry.setSubFundGrossFinancialBeginningBalanceLineAmount(subFundGrossFinancialBeginningBalanceLineAmount);
425                 orgObjectSummaryReportEntry.setSubFundGrossAccountLineAnnualBalanceAmount(subFundGrossAccountLineAnnualBalanceAmount);
426                 KualiInteger subFundGrossAmountChange = subFundGrossAccountLineAnnualBalanceAmount.subtract(subFundGrossFinancialBeginningBalanceLineAmount);
427                 orgObjectSummaryReportEntry.setSubFundGrossAmountChange(subFundGrossAmountChange);
428                 orgObjectSummaryReportEntry.setSubFundGrossPercentChange(BudgetConstructionReportHelper.calculatePercent(subFundGrossAmountChange, subFundGrossFinancialBeginningBalanceLineAmount));
429 
430                 orgObjectSummaryReportEntry.setSubFundTrnfrInFinancialBeginningBalanceLineAmount(subFundTotal.getSubFundTrnfrInFinancialBeginningBalanceLineAmount());
431                 orgObjectSummaryReportEntry.setSubFundTrnfrInAccountLineAnnualBalanceAmount(subFundTotal.getSubFundTrnfrInAccountLineAnnualBalanceAmount());
432 
433                 KualiInteger subFundTrnfrInAmountChange = subFundTotal.getSubFundTrnfrInAccountLineAnnualBalanceAmount().subtract(subFundTotal.getSubFundTrnfrInFinancialBeginningBalanceLineAmount());
434                 orgObjectSummaryReportEntry.setSubFundTrnfrInAmountChange(subFundTrnfrInAmountChange);
435                 orgObjectSummaryReportEntry.setSubFundTrnfrInPercentChange(BudgetConstructionReportHelper.calculatePercent(subFundTrnfrInAmountChange, subFundTotal.getSubFundTrnfrInFinancialBeginningBalanceLineAmount()));
436 
437                 orgObjectSummaryReportEntry.setSubFundExpenditureFinancialBeginningBalanceLineAmount(subFundTotal.getSubFundExpenditureFinancialBeginningBalanceLineAmount());
438                 orgObjectSummaryReportEntry.setSubFundExpenditureAccountLineAnnualBalanceAmount(subFundTotal.getSubFundExpenditureAccountLineAnnualBalanceAmount());
439 
440                 KualiInteger subFundExpenditureAmountChange = subFundTotal.getSubFundExpenditureAccountLineAnnualBalanceAmount().subtract(subFundTotal.getSubFundExpenditureFinancialBeginningBalanceLineAmount());
441                 orgObjectSummaryReportEntry.setSubFundExpenditureAmountChange(subFundExpenditureAmountChange);
442                 orgObjectSummaryReportEntry.setSubFundExpenditurePercentChange(BudgetConstructionReportHelper.calculatePercent(subFundExpenditureAmountChange, subFundTotal.getSubFundExpenditureFinancialBeginningBalanceLineAmount()));
443 
444                 KualiInteger subFundDifferenceFinancialBeginningBalanceLineAmount = subFundTotal.getSubFundRevenueFinancialBeginningBalanceLineAmount().subtract(subFundTotal.getSubFundExpenditureFinancialBeginningBalanceLineAmount());
445                 KualiInteger subFundDifferenceAccountLineAnnualBalanceAmount = subFundTotal.getSubFundRevenueAccountLineAnnualBalanceAmount().subtract(subFundTotal.getSubFundExpenditureAccountLineAnnualBalanceAmount());
446 
447                 orgObjectSummaryReportEntry.setSubFundDifferenceFinancialBeginningBalanceLineAmount(subFundDifferenceFinancialBeginningBalanceLineAmount);
448                 orgObjectSummaryReportEntry.setSubFundDifferenceAccountLineAnnualBalanceAmount(subFundDifferenceAccountLineAnnualBalanceAmount);
449 
450                 orgObjectSummaryReportEntry.setSubFundDifferenceFinancialBeginningBalanceLineAmount(subFundDifferenceFinancialBeginningBalanceLineAmount);
451                 orgObjectSummaryReportEntry.setSubFundDifferenceAccountLineAnnualBalanceAmount(subFundDifferenceAccountLineAnnualBalanceAmount);
452 
453                 KualiInteger subFundDifferenceAmountChange = subFundDifferenceAccountLineAnnualBalanceAmount.subtract(subFundDifferenceFinancialBeginningBalanceLineAmount);
454                 orgObjectSummaryReportEntry.setSubFundDifferenceAmountChange(subFundDifferenceAmountChange);
455                 orgObjectSummaryReportEntry.setSubFundDifferencePercentChange(BudgetConstructionReportHelper.calculatePercent(subFundDifferenceAmountChange, subFundDifferenceFinancialBeginningBalanceLineAmount));
456             }
457         }
458 
459 
460     }
461 
462     protected List calculateObjectTotal(List<BudgetConstructionAccountBalance> bcosList, List<BudgetConstructionAccountBalance> simpleList) {
463 
464         BigDecimal totalObjectPositionCsfLeaveFteQuantity = BigDecimal.ZERO;
465         BigDecimal totalObjectPositionFullTimeEquivalencyQuantity = BigDecimal.ZERO;
466         KualiInteger totalObjectFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
467         BigDecimal totalObjectAppointmentRequestedCsfFteQuantity = BigDecimal.ZERO;
468         BigDecimal totalObjectAppointmentRequestedFteQuantity = BigDecimal.ZERO;
469         KualiInteger totalObjectAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
470 
471         List returnList = new ArrayList();
472 
473         for (BudgetConstructionAccountBalance simpleBcosEntry : simpleList) {
474 
475             BudgetConstructionOrgAccountObjectDetailReportTotal bcObjectTotal = new BudgetConstructionOrgAccountObjectDetailReportTotal();
476             for (BudgetConstructionAccountBalance bcosListEntry : bcosList) {
477                 if (BudgetConstructionReportHelper.isSameEntry(simpleBcosEntry, bcosListEntry, fieldsForObject())) {
478                     totalObjectFinancialBeginningBalanceLineAmount = totalObjectFinancialBeginningBalanceLineAmount.add(bcosListEntry.getFinancialBeginningBalanceLineAmount());
479                     totalObjectAccountLineAnnualBalanceAmount = totalObjectAccountLineAnnualBalanceAmount.add(bcosListEntry.getAccountLineAnnualBalanceAmount());
480                     totalObjectPositionCsfLeaveFteQuantity = totalObjectPositionCsfLeaveFteQuantity.add(bcosListEntry.getPositionCsfLeaveFteQuantity());
481                     totalObjectPositionFullTimeEquivalencyQuantity = totalObjectPositionFullTimeEquivalencyQuantity.add(bcosListEntry.getPositionFullTimeEquivalencyQuantity());
482                     totalObjectAppointmentRequestedCsfFteQuantity = totalObjectAppointmentRequestedCsfFteQuantity.add(bcosListEntry.getAppointmentRequestedCsfFteQuantity());
483                     totalObjectAppointmentRequestedFteQuantity = totalObjectAppointmentRequestedFteQuantity.add(bcosListEntry.getAppointmentRequestedFteQuantity());
484                 }
485             }
486             bcObjectTotal.setBudgetConstructionAccountBalance(simpleBcosEntry);
487             bcObjectTotal.setTotalObjectPositionCsfLeaveFteQuantity(totalObjectPositionCsfLeaveFteQuantity);
488             bcObjectTotal.setTotalObjectPositionFullTimeEquivalencyQuantity(totalObjectPositionFullTimeEquivalencyQuantity);
489             bcObjectTotal.setTotalObjectFinancialBeginningBalanceLineAmount(totalObjectFinancialBeginningBalanceLineAmount);
490             bcObjectTotal.setTotalObjectAppointmentRequestedCsfFteQuantity(totalObjectAppointmentRequestedCsfFteQuantity);
491             bcObjectTotal.setTotalObjectAppointmentRequestedFteQuantity(totalObjectAppointmentRequestedFteQuantity);
492             bcObjectTotal.setTotalObjectAccountLineAnnualBalanceAmount(totalObjectAccountLineAnnualBalanceAmount);
493 
494             returnList.add(bcObjectTotal);
495 
496             totalObjectPositionCsfLeaveFteQuantity = BigDecimal.ZERO;
497             totalObjectPositionFullTimeEquivalencyQuantity = BigDecimal.ZERO;
498             totalObjectFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
499             totalObjectAppointmentRequestedCsfFteQuantity = BigDecimal.ZERO;
500             totalObjectAppointmentRequestedFteQuantity = BigDecimal.ZERO;
501             totalObjectAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
502         }
503         return returnList;
504 
505     }
506 
507     public void setBusinessObjectService(BusinessObjectService businessObjectService) {
508         this.businessObjectService = businessObjectService;
509     }
510 
511     protected List calculateLevelTotal(List<BudgetConstructionAccountBalance> bcosList, List<BudgetConstructionAccountBalance> simpleList) {
512 
513         BigDecimal totalLevelPositionCsfLeaveFteQuantity = BigDecimal.ZERO;
514         BigDecimal totalLevelPositionFullTimeEquivalencyQuantity = BigDecimal.ZERO;
515         KualiInteger totalLevelFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
516         BigDecimal totalLevelAppointmentRequestedCsfFteQuantity = BigDecimal.ZERO;
517         BigDecimal totalLevelAppointmentRequestedFteQuantity = BigDecimal.ZERO;
518         KualiInteger totalLevelAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
519 
520         List returnList = new ArrayList();
521 
522         for (BudgetConstructionAccountBalance simpleBcosEntry : simpleList) {
523 
524             BudgetConstructionOrgAccountObjectDetailReportTotal bcObjectTotal = new BudgetConstructionOrgAccountObjectDetailReportTotal();
525             for (BudgetConstructionAccountBalance bcosListEntry : bcosList) {
526                 if (BudgetConstructionReportHelper.isSameEntry(simpleBcosEntry, bcosListEntry, fieldsForLevel())) {
527                     totalLevelFinancialBeginningBalanceLineAmount = totalLevelFinancialBeginningBalanceLineAmount.add(bcosListEntry.getFinancialBeginningBalanceLineAmount());
528                     totalLevelAccountLineAnnualBalanceAmount = totalLevelAccountLineAnnualBalanceAmount.add(bcosListEntry.getAccountLineAnnualBalanceAmount());
529                     totalLevelPositionCsfLeaveFteQuantity = totalLevelPositionCsfLeaveFteQuantity.add(bcosListEntry.getPositionCsfLeaveFteQuantity());
530                     totalLevelPositionFullTimeEquivalencyQuantity = totalLevelPositionFullTimeEquivalencyQuantity.add(bcosListEntry.getPositionFullTimeEquivalencyQuantity());
531                     totalLevelAppointmentRequestedCsfFteQuantity = totalLevelAppointmentRequestedCsfFteQuantity.add(bcosListEntry.getAppointmentRequestedCsfFteQuantity());
532                     totalLevelAppointmentRequestedFteQuantity = totalLevelAppointmentRequestedFteQuantity.add(bcosListEntry.getAppointmentRequestedFteQuantity());
533                 }
534             }
535             bcObjectTotal.setBudgetConstructionAccountBalance(simpleBcosEntry);
536             bcObjectTotal.setTotalLevelPositionCsfLeaveFteQuantity(totalLevelPositionCsfLeaveFteQuantity);
537             bcObjectTotal.setTotalLevelPositionFullTimeEquivalencyQuantity(totalLevelPositionFullTimeEquivalencyQuantity);
538             bcObjectTotal.setTotalLevelFinancialBeginningBalanceLineAmount(totalLevelFinancialBeginningBalanceLineAmount);
539             bcObjectTotal.setTotalLevelAppointmentRequestedCsfFteQuantity(totalLevelAppointmentRequestedCsfFteQuantity);
540             bcObjectTotal.setTotalLevelAppointmentRequestedFteQuantity(totalLevelAppointmentRequestedFteQuantity);
541             bcObjectTotal.setTotalLevelAccountLineAnnualBalanceAmount(totalLevelAccountLineAnnualBalanceAmount);
542 
543             returnList.add(bcObjectTotal);
544 
545             totalLevelPositionCsfLeaveFteQuantity = BigDecimal.ZERO;
546             totalLevelPositionFullTimeEquivalencyQuantity = BigDecimal.ZERO;
547             totalLevelFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
548             totalLevelAppointmentRequestedCsfFteQuantity = BigDecimal.ZERO;
549             totalLevelAppointmentRequestedFteQuantity = BigDecimal.ZERO;
550             totalLevelAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
551         }
552         return returnList;
553     }
554 
555 
556     protected List calculateGexpAndTypeTotal(List<BudgetConstructionAccountBalance> bcabList, List<BudgetConstructionAccountBalance> simpleList) {
557 
558         KualiInteger grossFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
559         KualiInteger grossAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
560 
561         BigDecimal typePositionCsfLeaveFteQuantity = BigDecimal.ZERO;
562         BigDecimal typePositionFullTimeEquivalencyQuantity = BigDecimal.ZERO;
563         KualiInteger typeFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
564         BigDecimal typeAppointmentRequestedCsfFteQuantity = BigDecimal.ZERO;
565         BigDecimal typeAppointmentRequestedFteQuantity = BigDecimal.ZERO;
566         KualiInteger typeAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
567 
568         List returnList = new ArrayList();
569         for (BudgetConstructionAccountBalance simpleBcosEntry : simpleList) {
570             BudgetConstructionOrgAccountObjectDetailReportTotal bcObjectTotal = new BudgetConstructionOrgAccountObjectDetailReportTotal();
571             for (BudgetConstructionAccountBalance bcabListEntry : bcabList) {
572                 if (BudgetConstructionReportHelper.isSameEntry(simpleBcosEntry, bcabListEntry, fieldsForGexpAndType())) {
573 
574                     typeFinancialBeginningBalanceLineAmount = typeFinancialBeginningBalanceLineAmount.add(bcabListEntry.getFinancialBeginningBalanceLineAmount());
575                     typeAccountLineAnnualBalanceAmount = typeAccountLineAnnualBalanceAmount.add(bcabListEntry.getAccountLineAnnualBalanceAmount());
576                     typePositionCsfLeaveFteQuantity = typePositionCsfLeaveFteQuantity.add(bcabListEntry.getPositionCsfLeaveFteQuantity());
577                     typePositionFullTimeEquivalencyQuantity = typePositionFullTimeEquivalencyQuantity.add(bcabListEntry.getPositionFullTimeEquivalencyQuantity());
578                     typeAppointmentRequestedCsfFteQuantity = typeAppointmentRequestedCsfFteQuantity.add(bcabListEntry.getAppointmentRequestedCsfFteQuantity());
579                     typeAppointmentRequestedFteQuantity = typeAppointmentRequestedFteQuantity.add(bcabListEntry.getAppointmentRequestedFteQuantity());
580 
581                     if (bcabListEntry.getIncomeExpenseCode().equals("B") && !bcabListEntry.getFinancialObjectLevelCode().equals("CORI") && !bcabListEntry.getFinancialObjectLevelCode().equals("TRIN")) {
582                         grossFinancialBeginningBalanceLineAmount = grossFinancialBeginningBalanceLineAmount.add(bcabListEntry.getFinancialBeginningBalanceLineAmount());
583                         grossAccountLineAnnualBalanceAmount = grossAccountLineAnnualBalanceAmount.add(bcabListEntry.getAccountLineAnnualBalanceAmount());
584                     }
585                 }
586             }
587             bcObjectTotal.setBudgetConstructionAccountBalance(simpleBcosEntry);
588 
589             bcObjectTotal.setGrossFinancialBeginningBalanceLineAmount(grossFinancialBeginningBalanceLineAmount);
590             bcObjectTotal.setGrossAccountLineAnnualBalanceAmount(grossAccountLineAnnualBalanceAmount);
591 
592             bcObjectTotal.setTypePositionCsfLeaveFteQuantity(typePositionCsfLeaveFteQuantity);
593             bcObjectTotal.setTypePositionFullTimeEquivalencyQuantity(typePositionFullTimeEquivalencyQuantity);
594             bcObjectTotal.setTypeFinancialBeginningBalanceLineAmount(typeFinancialBeginningBalanceLineAmount);
595             bcObjectTotal.setTypeAppointmentRequestedCsfFteQuantity(typeAppointmentRequestedCsfFteQuantity);
596             bcObjectTotal.setTypeAppointmentRequestedFteQuantity(typeAppointmentRequestedFteQuantity);
597             bcObjectTotal.setTypeAccountLineAnnualBalanceAmount(typeAccountLineAnnualBalanceAmount);
598 
599             returnList.add(bcObjectTotal);
600 
601             grossFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
602             grossAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
603 
604             typePositionCsfLeaveFteQuantity = BigDecimal.ZERO;
605             typePositionFullTimeEquivalencyQuantity = BigDecimal.ZERO;
606             typeFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
607             typeAppointmentRequestedCsfFteQuantity = BigDecimal.ZERO;
608             typeAppointmentRequestedFteQuantity = BigDecimal.ZERO;
609             typeAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
610         }
611         return returnList;
612     }
613 
614     protected List calculateAccountTotal(List<BudgetConstructionAccountBalance> bcabList, List<BudgetConstructionAccountBalance> simpleList) {
615         BigDecimal accountPositionCsfLeaveFteQuantity = BigDecimal.ZERO;
616         BigDecimal accountPositionFullTimeEquivalencyQuantity = BigDecimal.ZERO;
617         BigDecimal accountAppointmentRequestedCsfFteQuantity = BigDecimal.ZERO;
618         BigDecimal accountAppointmentRequestedFteQuantity = BigDecimal.ZERO;
619 
620         KualiInteger accountRevenueFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
621         KualiInteger accountRevenueAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
622         KualiInteger accountTrnfrInFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
623         KualiInteger accountTrnfrInAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
624         KualiInteger accountExpenditureFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
625         KualiInteger accountExpenditureAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
626 
627         List returnList = new ArrayList();
628 
629         for (BudgetConstructionAccountBalance simpleBcosEntry : simpleList) {
630             BudgetConstructionOrgAccountObjectDetailReportTotal bcObjectTotal = new BudgetConstructionOrgAccountObjectDetailReportTotal();
631             for (BudgetConstructionAccountBalance bcabListEntry : bcabList) {
632                 if (BudgetConstructionReportHelper.isSameEntry(simpleBcosEntry, bcabListEntry, fieldsForAccountTotal())) {
633 
634                     accountPositionCsfLeaveFteQuantity = accountPositionCsfLeaveFteQuantity.add(bcabListEntry.getPositionCsfLeaveFteQuantity());
635                     accountPositionFullTimeEquivalencyQuantity = accountPositionFullTimeEquivalencyQuantity.add(bcabListEntry.getPositionFullTimeEquivalencyQuantity());
636                     accountAppointmentRequestedCsfFteQuantity = accountAppointmentRequestedCsfFteQuantity.add(bcabListEntry.getAppointmentRequestedCsfFteQuantity());
637                     accountAppointmentRequestedFteQuantity = accountAppointmentRequestedFteQuantity.add(bcabListEntry.getAppointmentRequestedFteQuantity());
638 
639                     if (bcabListEntry.getIncomeExpenseCode().equals("A")) {
640                         accountRevenueFinancialBeginningBalanceLineAmount = accountRevenueFinancialBeginningBalanceLineAmount.add(bcabListEntry.getFinancialBeginningBalanceLineAmount());
641                         accountRevenueAccountLineAnnualBalanceAmount = accountRevenueAccountLineAnnualBalanceAmount.add(bcabListEntry.getAccountLineAnnualBalanceAmount());
642                     }
643                     else {
644                         accountExpenditureFinancialBeginningBalanceLineAmount = accountExpenditureFinancialBeginningBalanceLineAmount.add(bcabListEntry.getFinancialBeginningBalanceLineAmount());
645                         accountExpenditureAccountLineAnnualBalanceAmount = accountExpenditureAccountLineAnnualBalanceAmount.add(bcabListEntry.getAccountLineAnnualBalanceAmount());
646                     }
647 
648                     if (bcabListEntry.getIncomeExpenseCode().equals("B")) {
649                         if (bcabListEntry.getFinancialObjectLevelCode().equals("CORI") || bcabListEntry.getFinancialObjectLevelCode().equals("TRIN")) {
650                             accountTrnfrInFinancialBeginningBalanceLineAmount = accountTrnfrInFinancialBeginningBalanceLineAmount.add(bcabListEntry.getFinancialBeginningBalanceLineAmount());
651                             accountTrnfrInAccountLineAnnualBalanceAmount = accountTrnfrInAccountLineAnnualBalanceAmount.add(bcabListEntry.getAccountLineAnnualBalanceAmount());
652                         }
653                     }
654                 }
655             }
656 
657             bcObjectTotal.setBudgetConstructionAccountBalance(simpleBcosEntry);
658 
659             bcObjectTotal.setAccountPositionCsfLeaveFteQuantity(accountPositionCsfLeaveFteQuantity);
660             bcObjectTotal.setAccountPositionFullTimeEquivalencyQuantity(accountPositionFullTimeEquivalencyQuantity);
661             bcObjectTotal.setAccountAppointmentRequestedCsfFteQuantity(accountAppointmentRequestedCsfFteQuantity);
662             bcObjectTotal.setAccountAppointmentRequestedFteQuantity(accountAppointmentRequestedFteQuantity);
663 
664             bcObjectTotal.setAccountRevenueFinancialBeginningBalanceLineAmount(accountRevenueFinancialBeginningBalanceLineAmount);
665             bcObjectTotal.setAccountRevenueAccountLineAnnualBalanceAmount(accountRevenueAccountLineAnnualBalanceAmount);
666             bcObjectTotal.setAccountTrnfrInFinancialBeginningBalanceLineAmount(accountTrnfrInFinancialBeginningBalanceLineAmount);
667             bcObjectTotal.setAccountTrnfrInAccountLineAnnualBalanceAmount(accountTrnfrInAccountLineAnnualBalanceAmount);
668             bcObjectTotal.setAccountExpenditureFinancialBeginningBalanceLineAmount(accountExpenditureFinancialBeginningBalanceLineAmount);
669             bcObjectTotal.setAccountExpenditureAccountLineAnnualBalanceAmount(accountExpenditureAccountLineAnnualBalanceAmount);
670 
671             returnList.add(bcObjectTotal);
672 
673             accountPositionCsfLeaveFteQuantity = BigDecimal.ZERO;
674             accountPositionFullTimeEquivalencyQuantity = BigDecimal.ZERO;
675             accountAppointmentRequestedCsfFteQuantity = BigDecimal.ZERO;
676             accountAppointmentRequestedFteQuantity = BigDecimal.ZERO;
677 
678             accountRevenueFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
679             accountRevenueAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
680             accountTrnfrInFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
681             accountTrnfrInAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
682             accountExpenditureFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
683             accountExpenditureAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
684         }
685         return returnList;
686     }
687 
688 
689     protected List calculateSubFundTotal(List<BudgetConstructionAccountBalance> bcabList, List<BudgetConstructionAccountBalance> simpleList) {
690 
691         BigDecimal subFundPositionCsfLeaveFteQuantity = BigDecimal.ZERO;
692         BigDecimal subFundPositionFullTimeEquivalencyQuantity = BigDecimal.ZERO;
693         BigDecimal subFundAppointmentRequestedCsfFteQuantity = BigDecimal.ZERO;
694         BigDecimal subFundAppointmentRequestedFteQuantity = BigDecimal.ZERO;
695 
696         KualiInteger subFundRevenueFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
697         KualiInteger subFundRevenueAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
698         KualiInteger subFundTrnfrInFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
699         KualiInteger subFundTrnfrInAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
700         KualiInteger subFundExpenditureFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
701         KualiInteger subFundExpenditureAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
702 
703         List returnList = new ArrayList();
704 
705         for (BudgetConstructionAccountBalance simpleBcosEntry : simpleList) {
706             BudgetConstructionOrgAccountObjectDetailReportTotal bcObjectTotal = new BudgetConstructionOrgAccountObjectDetailReportTotal();
707             for (BudgetConstructionAccountBalance bcabListEntry : bcabList) {
708                 if (BudgetConstructionReportHelper.isSameEntry(simpleBcosEntry, bcabListEntry, fieldsForSubFundTotal())) {
709 
710                     subFundPositionCsfLeaveFteQuantity = subFundPositionCsfLeaveFteQuantity.add(bcabListEntry.getPositionCsfLeaveFteQuantity());
711                     subFundPositionFullTimeEquivalencyQuantity = subFundPositionFullTimeEquivalencyQuantity.add(bcabListEntry.getPositionFullTimeEquivalencyQuantity());
712                     subFundAppointmentRequestedCsfFteQuantity = subFundAppointmentRequestedCsfFteQuantity.add(bcabListEntry.getAppointmentRequestedCsfFteQuantity());
713                     subFundAppointmentRequestedFteQuantity = subFundAppointmentRequestedFteQuantity.add(bcabListEntry.getAppointmentRequestedFteQuantity());
714 
715                     if (bcabListEntry.getIncomeExpenseCode().equals("A")) {
716                         subFundRevenueFinancialBeginningBalanceLineAmount = subFundRevenueFinancialBeginningBalanceLineAmount.add(bcabListEntry.getFinancialBeginningBalanceLineAmount());
717                         subFundRevenueAccountLineAnnualBalanceAmount = subFundRevenueAccountLineAnnualBalanceAmount.add(bcabListEntry.getAccountLineAnnualBalanceAmount());
718                     }
719                     else {
720                         subFundExpenditureFinancialBeginningBalanceLineAmount = subFundExpenditureFinancialBeginningBalanceLineAmount.add(bcabListEntry.getFinancialBeginningBalanceLineAmount());
721                         subFundExpenditureAccountLineAnnualBalanceAmount = subFundExpenditureAccountLineAnnualBalanceAmount.add(bcabListEntry.getAccountLineAnnualBalanceAmount());
722                     }
723 
724                     if (bcabListEntry.getIncomeExpenseCode().equals("B")) {
725                         if (bcabListEntry.getFinancialObjectLevelCode().equals("CORI") || bcabListEntry.getFinancialObjectLevelCode().equals("TRIN")) {
726                             subFundTrnfrInFinancialBeginningBalanceLineAmount = subFundTrnfrInFinancialBeginningBalanceLineAmount.add(bcabListEntry.getFinancialBeginningBalanceLineAmount());
727                             subFundTrnfrInAccountLineAnnualBalanceAmount = subFundTrnfrInAccountLineAnnualBalanceAmount.add(bcabListEntry.getAccountLineAnnualBalanceAmount());
728                         }
729                     }
730                 }
731             }
732 
733             bcObjectTotal.setBudgetConstructionAccountBalance(simpleBcosEntry);
734 
735             bcObjectTotal.setSubFundPositionCsfLeaveFteQuantity(subFundPositionCsfLeaveFteQuantity);
736             bcObjectTotal.setSubFundPositionFullTimeEquivalencyQuantity(subFundPositionFullTimeEquivalencyQuantity);
737             bcObjectTotal.setSubFundAppointmentRequestedCsfFteQuantity(subFundAppointmentRequestedCsfFteQuantity);
738             bcObjectTotal.setSubFundAppointmentRequestedFteQuantity(subFundAppointmentRequestedFteQuantity);
739 
740             bcObjectTotal.setSubFundRevenueFinancialBeginningBalanceLineAmount(subFundRevenueFinancialBeginningBalanceLineAmount);
741             bcObjectTotal.setSubFundRevenueAccountLineAnnualBalanceAmount(subFundRevenueAccountLineAnnualBalanceAmount);
742 
743             bcObjectTotal.setSubFundTrnfrInFinancialBeginningBalanceLineAmount(subFundTrnfrInFinancialBeginningBalanceLineAmount);
744             bcObjectTotal.setSubFundTrnfrInAccountLineAnnualBalanceAmount(subFundTrnfrInAccountLineAnnualBalanceAmount);
745 
746             bcObjectTotal.setSubFundExpenditureFinancialBeginningBalanceLineAmount(subFundExpenditureFinancialBeginningBalanceLineAmount);
747             bcObjectTotal.setSubFundExpenditureAccountLineAnnualBalanceAmount(subFundExpenditureAccountLineAnnualBalanceAmount);
748 
749             returnList.add(bcObjectTotal);
750 
751             subFundPositionCsfLeaveFteQuantity = BigDecimal.ZERO;
752             subFundPositionFullTimeEquivalencyQuantity = BigDecimal.ZERO;
753             subFundAppointmentRequestedCsfFteQuantity = BigDecimal.ZERO;
754             subFundAppointmentRequestedFteQuantity = BigDecimal.ZERO;
755 
756             subFundRevenueFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
757             subFundRevenueAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
758             subFundTrnfrInFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
759             subFundTrnfrInAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
760             subFundExpenditureFinancialBeginningBalanceLineAmount = KualiInteger.ZERO;
761             subFundExpenditureAccountLineAnnualBalanceAmount = KualiInteger.ZERO;
762         }
763         return returnList;
764     }
765 
766 
767     /**
768      * builds list of fields for comparing entry of Object
769      *
770      * @return List<String>
771      */
772     protected List<String> fieldsForObject() {
773         List<String> fieldList = new ArrayList();
774         fieldList.addAll(fieldsForLevel());
775         fieldList.add(KFSPropertyConstants.FINANCIAL_OBJECT_CODE);
776         // fieldList.add(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE);
777         return fieldList;
778     }
779 
780     /**
781      * builds list of fields for comparing entry of Level
782      *
783      * @return List<String>
784      */
785     protected List<String> fieldsForLevel() {
786         List<String> fieldList = new ArrayList();
787         fieldList.addAll(fieldsForGexpAndType());
788         fieldList.add(KFSPropertyConstants.FINANCIAL_LEVEL_SORT_CODE);
789         return fieldList;
790     }
791 
792     /**
793      * builds list of fields for comparing entry of GexpAndType
794      *
795      * @return List<String>
796      */
797     protected List<String> fieldsForGexpAndType() {
798         List<String> fieldList = new ArrayList();
799         fieldList.addAll(fieldsForAccountTotal());
800         fieldList.add(KFSPropertyConstants.INCOME_EXPENSE_CODE);
801         return fieldList;
802     }
803 
804     /**
805      * builds list of fields for comparing entry of AccountTotal
806      *
807      * @return List<String>
808      */
809     protected List<String> fieldsForAccountTotal() {
810         List<String> fieldList = new ArrayList();
811         // fieldList.addAll(fieldsForSubFundTotal());
812         fieldList.add(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE);
813         fieldList.add(KFSPropertyConstants.ACCOUNT_NUMBER);
814         fieldList.add(KFSPropertyConstants.SUB_ACCOUNT_NUMBER);
815         return fieldList;
816     }
817 
818     /**
819      * builds list of fields for comparing entry of SubFundTotal total
820      *
821      * @return List<String>
822      */
823     protected List<String> fieldsForSubFundTotal() {
824         List<String> fieldList = new ArrayList();
825 
826         fieldList.add(KFSPropertyConstants.ORGANIZATION_CHART_OF_ACCOUNTS_CODE);
827         fieldList.add(KFSPropertyConstants.ORGANIZATION_CODE);
828         fieldList.add(KFSPropertyConstants.SUB_FUND_GROUP_CODE);
829         return fieldList;
830     }
831 
832 
833     public List<String> buildOrderByList() {
834         List<String> returnList = new ArrayList();
835         returnList.add(KFSPropertyConstants.ORGANIZATION_CHART_OF_ACCOUNTS_CODE);
836         returnList.add(KFSPropertyConstants.ORGANIZATION_CODE);
837         returnList.add(KFSPropertyConstants.SUB_FUND_GROUP_CODE);
838         returnList.add(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR);
839         returnList.add(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE);
840         returnList.add(KFSPropertyConstants.ACCOUNT_NUMBER);
841         returnList.add(KFSPropertyConstants.SUB_ACCOUNT_NUMBER);
842         returnList.add(KFSPropertyConstants.INCOME_EXPENSE_CODE);
843         returnList.add(KFSPropertyConstants.FINANCIAL_CONSOLIDATION_SORT_CODE);
844         returnList.add(KFSPropertyConstants.FINANCIAL_LEVEL_SORT_CODE);
845         returnList.add(KFSPropertyConstants.FINANCIAL_OBJECT_CODE);
846         returnList.add(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE);
847         return returnList;
848     }
849 
850     public void setConfigurationService(ConfigurationService kualiConfigurationService) {
851         this.kualiConfigurationService = kualiConfigurationService;
852     }
853 
854     public ConfigurationService getConfigurationService() {
855         return kualiConfigurationService;
856     }
857 
858     public void setBudgetConstructionAccountObjectDetailReportDao(BudgetConstructionAccountObjectDetailReportDao budgetConstructionAccountObjectDetailReportDao) {
859         this.budgetConstructionAccountObjectDetailReportDao = budgetConstructionAccountObjectDetailReportDao;
860     }
861 
862     public void setBudgetConstructionOrganizationReportsService(BudgetConstructionOrganizationReportsService budgetConstructionOrganizationReportsService) {
863         this.budgetConstructionOrganizationReportsService = budgetConstructionOrganizationReportsService;
864     }
865 
866     /**
867      * Gets the persistenceServiceOjb attribute.
868      *
869      * @return Returns the persistenceServiceOjb
870      */
871 
872     public PersistenceService getPersistenceServiceOjb() {
873         return persistenceServiceOjb;
874     }
875 
876     /**
877      * Sets the persistenceServiceOjb attribute.
878      *
879      * @param persistenceServiceOjb The persistenceServiceOjb to set.
880      */
881     public void setPersistenceServiceOjb(PersistenceService persistenceServiceOjb) {
882         this.persistenceServiceOjb = persistenceServiceOjb;
883     }
884 
885 }