View Javadoc
1   /*
2    * Copyright 2009 The Kuali Foundation
3    * 
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    * http://www.opensource.org/licenses/ecl2.php
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.ole.gl.batch.service.impl;
17  
18  import java.sql.Date;
19  import java.util.HashMap;
20  import java.util.Map;
21  
22  import org.apache.commons.lang.StringUtils;
23  import org.kuali.ole.coa.businessobject.A21SubAccount;
24  import org.kuali.ole.coa.businessobject.Account;
25  import org.kuali.ole.coa.businessobject.AccountingPeriod;
26  import org.kuali.ole.coa.businessobject.BalanceType;
27  import org.kuali.ole.coa.businessobject.Chart;
28  import org.kuali.ole.coa.businessobject.IndirectCostRecoveryType;
29  import org.kuali.ole.coa.businessobject.ObjectCode;
30  import org.kuali.ole.coa.businessobject.ObjectLevel;
31  import org.kuali.ole.coa.businessobject.ObjectType;
32  import org.kuali.ole.coa.businessobject.OffsetDefinition;
33  import org.kuali.ole.coa.businessobject.Organization;
34  import org.kuali.ole.coa.businessobject.ProjectCode;
35  import org.kuali.ole.coa.businessobject.SubAccount;
36  import org.kuali.ole.coa.businessobject.SubFundGroup;
37  import org.kuali.ole.coa.businessobject.SubObjectCode;
38  import org.kuali.ole.gl.GeneralLedgerConstants;
39  import org.kuali.ole.gl.batch.dataaccess.LedgerPreparedStatementCachingDao;
40  import org.kuali.ole.gl.batch.service.AccountingCycleCachingService;
41  import org.kuali.ole.gl.businessobject.AccountBalance;
42  import org.kuali.ole.gl.businessobject.Balance;
43  import org.kuali.ole.gl.businessobject.Encumbrance;
44  import org.kuali.ole.gl.businessobject.Entry;
45  import org.kuali.ole.gl.businessobject.ExpenditureTransaction;
46  import org.kuali.ole.gl.businessobject.Reversal;
47  import org.kuali.ole.gl.businessobject.SufficientFundBalances;
48  import org.kuali.ole.gl.businessobject.Transaction;
49  import org.kuali.ole.sys.batch.service.AbstractBatchTransactionalCachingService;
50  import org.kuali.ole.sys.businessobject.OriginationCode;
51  import org.kuali.ole.sys.businessobject.SystemOptions;
52  import org.kuali.ole.sys.businessobject.UniversityDate;
53  import org.kuali.ole.sys.document.service.FinancialSystemDocumentTypeService;
54  import org.kuali.ole.sys.service.UniversityDateService;
55  import org.kuali.rice.core.api.datetime.DateTimeService;
56  import org.kuali.rice.krad.util.ObjectUtils;
57  
58  public class AccountingCycleCachingServiceImpl extends AbstractBatchTransactionalCachingService implements AccountingCycleCachingService {
59      protected org.kuali.ole.sys.batch.dataaccess.LedgerReferenceValuePreparedStatementCachingDao systemReferenceValueDao;
60      protected org.kuali.ole.coa.batch.dataaccess.LedgerReferenceValuePreparedStatementCachingDao chartReferenceValueDao;
61      protected LedgerPreparedStatementCachingDao ledgerDao;
62  
63      protected Map<String,Boolean> documentTypeValidCache;
64      
65      protected UniversityDateService universityDateService;
66      protected FinancialSystemDocumentTypeService financialSystemDocumentTypeService;
67      protected DateTimeService dateTimeService;
68  
69      public void initialize() {
70          super.initialize();
71          systemReferenceValueDao.initialize();
72          chartReferenceValueDao.initialize();
73          ledgerDao.initialize();
74          documentTypeValidCache = new HashMap<String,Boolean>();
75          previousValueCache.put(Balance.class, new PreviousValueReference<Balance>());
76          previousValueCache.put(Encumbrance.class, new PreviousValueReference<Encumbrance>());
77          previousValueCache.put(ExpenditureTransaction.class, new PreviousValueReference<ExpenditureTransaction>());
78          previousValueCache.put(SufficientFundBalances.class, new PreviousValueReference<SufficientFundBalances>());
79          previousValueCache.put(AccountBalance.class, new PreviousValueReference<AccountBalance>());
80      }
81  
82      public void destroy() {
83          super.destroy();
84          systemReferenceValueDao.destroy();
85          chartReferenceValueDao.destroy();
86          ledgerDao.destroy();
87          documentTypeValidCache = null;
88      }
89  
90      public boolean isCurrentActiveAccountingDocumentType(String documentTypeCode) {
91          Boolean documentTypeValid = documentTypeValidCache.get(documentTypeCode);
92          if (documentTypeValid == null) {
93              documentTypeValid = new Boolean(financialSystemDocumentTypeService.isCurrentActiveAccountingDocumentType(documentTypeCode));
94              documentTypeValidCache.put(documentTypeCode, documentTypeValid);
95          }
96          return documentTypeValid.booleanValue();
97      }
98  
99      public OriginationCode getOriginationCode(final String financialSystemOriginationCode) {
100         return new ReferenceValueRetriever<OriginationCode>() {
101             @Override
102             protected OriginationCode useDao() {
103                 return systemReferenceValueDao.getOriginationCode(financialSystemOriginationCode);
104             }
105             @Override
106             protected void retrieveReferences(OriginationCode originationCode) {}
107         }.get(OriginationCode.class, financialSystemOriginationCode);
108     }
109 
110     public SystemOptions getSystemOptions(final Integer fiscalYear) {
111         return new ReferenceValueRetriever<SystemOptions>() {
112             @Override
113             protected SystemOptions useDao() {
114                 return systemReferenceValueDao.getSystemOptions(fiscalYear);
115             }
116             @Override
117             protected void retrieveReferences(SystemOptions systemOptions) {}
118         }.get(SystemOptions.class, fiscalYear);
119     }
120 
121     public UniversityDate getUniversityDate(final Date date) {
122         return new ReferenceValueRetriever<UniversityDate>() {
123             @Override
124             protected UniversityDate useDao() {
125                 return systemReferenceValueDao.getUniversityDate(date);
126             }
127             @Override
128             protected void retrieveReferences(UniversityDate universityDate) {
129                 universityDate.setAccountingPeriod(getAccountingPeriod(universityDate.getUniversityFiscalYear(), universityDate.getUniversityFiscalAccountingPeriod()));
130             }
131         }.get(UniversityDate.class, date);
132     }
133     
134     public A21SubAccount getA21SubAccount(final String chartOfAccountsCode, final String accountNumber, final String subAccountNumber) {
135         return new ReferenceValueRetriever<A21SubAccount>() {
136             @Override
137             protected A21SubAccount useDao() {
138                 A21SubAccount a21 = chartReferenceValueDao.getA21SubAccount(chartOfAccountsCode, accountNumber, subAccountNumber);
139                 if (ObjectUtils.isNotNull(a21)){
140                     a21.setA21IndirectCostRecoveryAccounts(chartReferenceValueDao.getA21IndirectCostRecoveryAccounts(chartOfAccountsCode, accountNumber, subAccountNumber));
141                 }
142                 return a21;
143             }
144             @Override
145             protected void retrieveReferences(A21SubAccount a21SubAccount) {}
146         }.get(A21SubAccount.class, chartOfAccountsCode, accountNumber, subAccountNumber);
147     }
148 
149     public Account getAccount(final String chartCode, final String accountNumber) {
150         return new ReferenceValueRetriever<Account>() {
151             @Override
152             protected Account useDao() {
153                 return chartReferenceValueDao.getAccount(chartCode, accountNumber);
154             }
155             @Override
156             protected void retrieveReferences(Account account) {}
157         }.get(Account.class, chartCode, accountNumber);
158     }
159 
160     public AccountingPeriod getAccountingPeriod(final Integer fiscalYear, final String fiscalPeriodCode) {
161         return new ReferenceValueRetriever<AccountingPeriod>() {
162             @Override
163             protected AccountingPeriod useDao() {
164                 return chartReferenceValueDao.getAccountingPeriod(fiscalYear, fiscalPeriodCode);
165             }
166             @Override
167             protected void retrieveReferences(AccountingPeriod accountingPeriod) {}
168         }.get(AccountingPeriod.class, fiscalYear, fiscalPeriodCode);
169     }
170 
171     public BalanceType getBalanceType(final String financialBalanceTypeCode) {
172         return new ReferenceValueRetriever<BalanceType>() {
173             @Override
174             protected BalanceType useDao() {
175                 return chartReferenceValueDao.getBalanceType(financialBalanceTypeCode);
176             }
177             @Override
178             protected void retrieveReferences(BalanceType balanceType) {}
179         }.get(BalanceType.class, financialBalanceTypeCode);
180     }
181 
182     public Chart getChart(final String chartOfAccountsCode) {
183         return new ReferenceValueRetriever<Chart>() {
184             @Override
185             protected Chart useDao() {
186                 return chartReferenceValueDao.getChart(chartOfAccountsCode);
187             }
188             @Override
189             protected void retrieveReferences(Chart chart) {
190                 chart.setFundBalanceObject(getObjectCode(universityDateService.getCurrentFiscalYear(), chart.getChartOfAccountsCode(), chart.getFundBalanceObjectCode()));
191             }
192         }.get(Chart.class, chartOfAccountsCode);
193     }
194 
195     public IndirectCostRecoveryType getIndirectCostRecoveryType(final String accountIcrTypeCode) {
196         return new ReferenceValueRetriever<IndirectCostRecoveryType>() {
197             @Override
198             protected IndirectCostRecoveryType useDao() {
199                 return chartReferenceValueDao.getIndirectCostRecoveryType(accountIcrTypeCode);
200             }
201             @Override
202             protected void retrieveReferences(IndirectCostRecoveryType indirectCostRecoveryType) {}
203         }.get(IndirectCostRecoveryType.class, accountIcrTypeCode);
204     }
205 
206     public ObjectCode getObjectCode(final Integer universityFiscalYear, final String chartOfAccountsCode, final String financialObjectCode) {
207         return new ReferenceValueRetriever<ObjectCode>() {
208             @Override
209             protected ObjectCode useDao() {
210                 return chartReferenceValueDao.getObjectCode(universityFiscalYear, chartOfAccountsCode, financialObjectCode);
211             }
212             @Override
213             protected void retrieveReferences(ObjectCode objectCode) {}
214         }.get(ObjectCode.class, universityFiscalYear, chartOfAccountsCode, financialObjectCode);
215     }
216 
217     public ObjectLevel getObjectLevel(final String chartOfAccountsCode, final String financialObjectLevelCode) {
218         return new ReferenceValueRetriever<ObjectLevel>() {
219             @Override
220             protected ObjectLevel useDao() {
221                 return chartReferenceValueDao.getObjectLevel(chartOfAccountsCode, financialObjectLevelCode);
222             }
223             @Override
224             protected void retrieveReferences(ObjectLevel objectLevel) {}
225         }.get(ObjectLevel.class, chartOfAccountsCode, financialObjectLevelCode);
226     }
227 
228     public ObjectType getObjectType(final String financialObjectTypeCode) {
229         return new ReferenceValueRetriever<ObjectType>() {
230             @Override
231             protected ObjectType useDao() {
232                 return chartReferenceValueDao.getObjectType(financialObjectTypeCode);
233             }
234             @Override
235             protected void retrieveReferences(ObjectType objectType) {}
236         }.get(ObjectType.class, financialObjectTypeCode);
237     }
238 
239     public OffsetDefinition getOffsetDefinition(final Integer universityFiscalYear, final String chartOfAccountsCode, final String financialDocumentTypeCode, final String financialBalanceTypeCode) {
240         return new ReferenceValueRetriever<OffsetDefinition>() {
241             @Override
242             protected OffsetDefinition useDao() {
243                 return chartReferenceValueDao.getOffsetDefinition(universityFiscalYear, chartOfAccountsCode, financialDocumentTypeCode, financialBalanceTypeCode);
244             }
245             @Override
246             protected void retrieveReferences(OffsetDefinition offsetDefinition) {
247                 offsetDefinition.setFinancialObject(getObjectCode(universityFiscalYear, chartOfAccountsCode, offsetDefinition.getFinancialObjectCode()));
248             }
249         }.get(OffsetDefinition.class, universityFiscalYear, chartOfAccountsCode, financialDocumentTypeCode, financialBalanceTypeCode);
250     }
251 
252     public Organization getOrganization(final String chartOfAccountsCode, final String organizationCode) {
253         return new ReferenceValueRetriever<Organization>() {
254             @Override
255             protected Organization useDao() {
256                 return chartReferenceValueDao.getOrganization(chartOfAccountsCode, organizationCode);
257             }
258             @Override
259             protected void retrieveReferences(Organization organization) {}
260         }.get(Organization.class, chartOfAccountsCode, organizationCode);
261     }
262 
263     public ProjectCode getProjectCode(final String financialSystemProjectCode) {
264         return new ReferenceValueRetriever<ProjectCode>() {
265             @Override
266             protected ProjectCode useDao() {
267                 return chartReferenceValueDao.getProjectCode(financialSystemProjectCode);
268             }
269             @Override
270             protected void retrieveReferences(ProjectCode projectCode) {}
271         }.get(ProjectCode.class, financialSystemProjectCode);
272     }
273 
274     public SubAccount getSubAccount(final String chartOfAccountsCode, final String accountNumber, final String subAccountNumber) {
275         return new ReferenceValueRetriever<SubAccount>() {
276             @Override
277             protected SubAccount useDao() {
278                 return chartReferenceValueDao.getSubAccount(chartOfAccountsCode, accountNumber, subAccountNumber);
279             }
280             @Override
281             protected void retrieveReferences(SubAccount subAccount) {
282                 subAccount.setA21SubAccount(getA21SubAccount(chartOfAccountsCode, accountNumber, subAccountNumber));
283             }
284         }.get(SubAccount.class, chartOfAccountsCode, accountNumber, subAccountNumber);
285     }
286 
287     public SubFundGroup getSubFundGroup(final String subFundGroupCode) {
288         return new ReferenceValueRetriever<SubFundGroup>() {
289             @Override
290             protected SubFundGroup useDao() {
291                 return chartReferenceValueDao.getSubFundGroup(subFundGroupCode);
292             }
293             @Override
294             protected void retrieveReferences(SubFundGroup subFundGroup) {}
295         }.get(SubFundGroup.class, subFundGroupCode);
296     }
297 
298     public SubObjectCode getSubObjectCode(final Integer universityFiscalYear, final String chartOfAccountsCode, final String accountNumber, final String financialObjectCode, final String financialSubObjectCode) {
299         return new ReferenceValueRetriever<SubObjectCode>() {
300             @Override
301             protected SubObjectCode useDao() {
302                 return chartReferenceValueDao.getSubObjectCode(universityFiscalYear, chartOfAccountsCode, accountNumber, financialObjectCode, financialSubObjectCode);
303             }
304             @Override
305             protected void retrieveReferences(SubObjectCode subObjectCode) {}
306         }.get(SubObjectCode.class, universityFiscalYear, chartOfAccountsCode, accountNumber, financialObjectCode, financialSubObjectCode);
307     }
308 
309 
310     public int getMaxSequenceNumber(Transaction t) {
311         return ledgerDao.getMaxSequenceNumber(t);
312     }
313     
314     public AccountBalance getAccountBalance(final Transaction t) {
315         return new PreviousValueRetriever<AccountBalance>() {
316             @Override
317             protected AccountBalance useDao() {
318                 return ledgerDao.getAccountBalance(t);
319             }
320         }.get(AccountBalance.class, t.getUniversityFiscalYear(), t.getChartOfAccountsCode(), t.getAccountNumber(), t.getSubAccountNumber(), t.getFinancialObjectCode(), t.getFinancialSubObjectCode());
321     }
322 
323     public Balance getBalance(final Transaction t) {
324         return new PreviousValueRetriever<Balance>() {
325             @Override
326             protected Balance useDao() {
327                 return ledgerDao.getBalance(t);
328             }            
329         }.get(Balance.class, t.getUniversityFiscalYear(), t.getChartOfAccountsCode(), t.getAccountNumber(), t.getSubAccountNumber(), t.getFinancialObjectCode(), t.getFinancialSubObjectCode(), t.getFinancialBalanceTypeCode(), t.getFinancialObjectTypeCode());
330     }
331 
332     public Encumbrance getEncumbrance(final Entry entry) {
333         return new PreviousValueRetriever<Encumbrance>() {
334             @Override
335             protected Encumbrance useDao() {
336                 return ledgerDao.getEncumbrance(entry);
337             }            
338         }.get(Encumbrance.class, entry.getUniversityFiscalYear(), entry.getChartOfAccountsCode(), entry.getAccountNumber(), entry.getSubAccountNumber(), entry.getFinancialObjectCode(), entry.getFinancialSubObjectCode(), entry.getFinancialBalanceTypeCode(), entry.getFinancialDocumentTypeCode(), entry.getFinancialSystemOriginationCode(), entry.getDocumentNumber());
339     }
340 
341     public ExpenditureTransaction getExpenditureTransaction(final Transaction t) {
342         return new PreviousValueRetriever<ExpenditureTransaction>() {
343             @Override
344             protected ExpenditureTransaction useDao() {
345                 return ledgerDao.getExpenditureTransaction(t);
346             }
347         }.get(ExpenditureTransaction.class, t.getUniversityFiscalYear(), t.getChartOfAccountsCode(), t.getAccountNumber(), t.getSubAccountNumber(), t.getFinancialObjectCode(), t.getFinancialSubObjectCode(), t.getFinancialBalanceTypeCode(), t.getFinancialObjectTypeCode(), t.getUniversityFiscalPeriodCode(), t.getProjectCode(), StringUtils.isBlank(t.getOrganizationReferenceId()) ? GeneralLedgerConstants.getDashOrganizationReferenceId() : t.getOrganizationReferenceId());
348     }
349 
350     public SufficientFundBalances getSufficientFundBalances(final Integer universityFiscalYear, final String chartOfAccountsCode, final String accountNumber, final String financialObjectCode) {
351         return new PreviousValueRetriever<SufficientFundBalances>() {
352             @Override
353             protected SufficientFundBalances useDao() {
354                 return ledgerDao.getSufficientFundBalances(universityFiscalYear, chartOfAccountsCode, accountNumber, financialObjectCode);
355             }            
356         }.get(SufficientFundBalances.class, universityFiscalYear, chartOfAccountsCode, accountNumber, financialObjectCode);
357     }
358 
359 
360     public void insertAccountBalance(AccountBalance accountBalance) {
361         ledgerDao.insertAccountBalance(accountBalance, dateTimeService.getCurrentTimestamp());
362         previousValueCache.get(AccountBalance.class).update(accountBalance, accountBalance.getUniversityFiscalYear(), accountBalance.getChartOfAccountsCode(), accountBalance.getAccountNumber(), accountBalance.getSubAccountNumber(), accountBalance.getObjectCode(), accountBalance.getSubObjectCode());
363     }
364 
365     public void updateAccountBalance(AccountBalance accountBalance) {
366         ledgerDao.updateAccountBalance(accountBalance, dateTimeService.getCurrentTimestamp());        
367         previousValueCache.get(AccountBalance.class).update(accountBalance, accountBalance.getUniversityFiscalYear(), accountBalance.getChartOfAccountsCode(), accountBalance.getAccountNumber(), accountBalance.getSubAccountNumber(), accountBalance.getObjectCode(), accountBalance.getSubObjectCode());
368     }
369 
370     public void insertBalance(Balance balance) {
371         ledgerDao.insertBalance(balance, dateTimeService.getCurrentTimestamp());
372         previousValueCache.get(Balance.class).update(balance, balance.getUniversityFiscalYear(), balance.getChartOfAccountsCode(), balance.getAccountNumber(), balance.getSubAccountNumber(), balance.getObjectCode(), balance.getSubObjectCode(), balance.getBalanceTypeCode(), balance.getObjectTypeCode());
373     }
374 
375     public void updateBalance(Balance balance) {
376         ledgerDao.updateBalance(balance, dateTimeService.getCurrentTimestamp());
377         previousValueCache.get(Balance.class).update(balance, balance.getUniversityFiscalYear(), balance.getChartOfAccountsCode(), balance.getAccountNumber(), balance.getSubAccountNumber(), balance.getObjectCode(), balance.getSubObjectCode(), balance.getBalanceTypeCode(), balance.getObjectTypeCode());
378     }
379 
380     public void insertEncumbrance(Encumbrance encumbrance) {
381         ledgerDao.insertEncumbrance(encumbrance, dateTimeService.getCurrentTimestamp());
382         previousValueCache.get(Encumbrance.class).update(encumbrance, encumbrance.getUniversityFiscalYear(), encumbrance.getChartOfAccountsCode(), encumbrance.getAccountNumber(), encumbrance.getSubAccountNumber(), encumbrance.getObjectCode(), encumbrance.getSubObjectCode(), encumbrance.getBalanceTypeCode(), encumbrance.getDocumentTypeCode(), encumbrance.getOriginCode(), encumbrance.getDocumentNumber());
383     }
384 
385     public void updateEncumbrance(Encumbrance encumbrance) {
386         ledgerDao.updateEncumbrance(encumbrance, dateTimeService.getCurrentTimestamp());        
387         previousValueCache.get(Encumbrance.class).update(encumbrance, encumbrance.getUniversityFiscalYear(), encumbrance.getChartOfAccountsCode(), encumbrance.getAccountNumber(), encumbrance.getSubAccountNumber(), encumbrance.getObjectCode(), encumbrance.getSubObjectCode(), encumbrance.getBalanceTypeCode(), encumbrance.getDocumentTypeCode(), encumbrance.getOriginCode(), encumbrance.getDocumentNumber());
388     }
389 
390     public void insertExpenditureTransaction(ExpenditureTransaction expenditureTransaction) {
391         ledgerDao.insertExpenditureTransaction(expenditureTransaction);
392         previousValueCache.get(ExpenditureTransaction.class).update(expenditureTransaction, expenditureTransaction.getUniversityFiscalYear(), expenditureTransaction.getChartOfAccountsCode(), expenditureTransaction.getAccountNumber(), expenditureTransaction.getSubAccountNumber(), expenditureTransaction.getObjectCode(), expenditureTransaction.getSubObjectCode(), expenditureTransaction.getBalanceTypeCode(), expenditureTransaction.getObjectTypeCode(), expenditureTransaction.getUniversityFiscalAccountingPeriod(), expenditureTransaction.getProjectCode(), expenditureTransaction.getOrganizationReferenceId());
393     }
394 
395     public void updateExpenditureTransaction(ExpenditureTransaction expenditureTransaction) {
396         ledgerDao.updateExpenditureTransaction(expenditureTransaction);        
397         previousValueCache.get(ExpenditureTransaction.class).update(expenditureTransaction, expenditureTransaction.getUniversityFiscalYear(), expenditureTransaction.getChartOfAccountsCode(), expenditureTransaction.getAccountNumber(), expenditureTransaction.getSubAccountNumber(), expenditureTransaction.getObjectCode(), expenditureTransaction.getSubObjectCode(), expenditureTransaction.getBalanceTypeCode(), expenditureTransaction.getObjectTypeCode(), expenditureTransaction.getUniversityFiscalAccountingPeriod(), expenditureTransaction.getProjectCode(), expenditureTransaction.getOrganizationReferenceId());
398     }
399 
400     public void insertSufficientFundBalances(SufficientFundBalances sufficientFundBalances) {
401         ledgerDao.insertSufficientFundBalances(sufficientFundBalances, dateTimeService.getCurrentTimestamp());
402         previousValueCache.get(SufficientFundBalances.class).update(sufficientFundBalances, sufficientFundBalances.getUniversityFiscalYear(), sufficientFundBalances.getChartOfAccountsCode(), sufficientFundBalances.getAccountNumber(), sufficientFundBalances.getFinancialObjectCode());
403     }
404 
405     public void updateSufficientFundBalances(SufficientFundBalances sufficientFundBalances) {
406         ledgerDao.updateSufficientFundBalances(sufficientFundBalances, dateTimeService.getCurrentTimestamp());        
407         previousValueCache.get(SufficientFundBalances.class).update(sufficientFundBalances, sufficientFundBalances.getUniversityFiscalYear(), sufficientFundBalances.getChartOfAccountsCode(), sufficientFundBalances.getAccountNumber(), sufficientFundBalances.getFinancialObjectCode());
408     }
409 
410     public void insertEntry(Entry entry) {
411         ledgerDao.insertEntry(entry, dateTimeService.getCurrentTimestamp());
412     }
413 
414     public void insertReversal(Reversal reversal) {
415         ledgerDao.insertReversal(reversal);        
416     }
417     
418     public void setSystemReferenceValueDao(org.kuali.ole.sys.batch.dataaccess.LedgerReferenceValuePreparedStatementCachingDao systemReferenceValueDao) {
419         this.systemReferenceValueDao = systemReferenceValueDao;
420     }
421 
422     public void setChartReferenceValueDao(org.kuali.ole.coa.batch.dataaccess.LedgerReferenceValuePreparedStatementCachingDao chartReferenceValueDao) {
423         this.chartReferenceValueDao = chartReferenceValueDao;
424     }
425 
426     public void setLedgerDao(LedgerPreparedStatementCachingDao ledgerDao) {
427         this.ledgerDao = ledgerDao;
428     }
429 
430     public void setUniversityDateService(UniversityDateService universityDateService) {
431         this.universityDateService = universityDateService;
432     }
433 
434     /**
435      * Sets the financialSystemDocumentTypeService attribute value.
436      * @param financialSystemDocumentTypeService The financialSystemDocumentTypeService to set.
437      */
438     public void setFinancialSystemDocumentTypeService(FinancialSystemDocumentTypeService financialSystemDocumentTypeService) {
439         this.financialSystemDocumentTypeService = financialSystemDocumentTypeService;
440     }
441 
442     /**
443      * Sets the dateTimeService.
444      * 
445      * @param dateTimeService
446      */
447     public void setDateTimeService(DateTimeService dateTimeService) {
448         this.dateTimeService = dateTimeService;
449     }
450 }