001    /*
002     * Copyright 2011 The Kuali Foundation.
003     * 
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     * http://www.opensource.org/licenses/ecl2.php
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.kfs.module.ld.batch.service.impl;
017    
018    import org.kuali.kfs.gl.batch.service.impl.AccountingCycleCachingServiceImpl;
019    import org.kuali.kfs.module.ld.batch.dataaccess.LedgerPreparedStatementCachingDao;
020    import org.kuali.kfs.module.ld.batch.service.LaborAccountingCycleCachingService;
021    import org.kuali.kfs.module.ld.businessobject.LaborObject;
022    import org.kuali.kfs.module.ld.businessobject.LedgerBalance;
023    import org.kuali.kfs.module.ld.businessobject.LedgerEntry;
024    
025    public class LaborAccountingCycleCachingServiceImpl extends AccountingCycleCachingServiceImpl implements LaborAccountingCycleCachingService {
026        protected LedgerPreparedStatementCachingDao laborLedgerDao;
027        
028        public void initialize() {
029            super.initialize();
030            laborLedgerDao.initialize();
031            previousValueCache.put(LedgerBalance.class, new PreviousValueReference<LedgerBalance>());
032        }
033    
034        public LaborObject getLaborObject(final Integer fiscalYear, final String chartCode, final String objectCode) {
035            return new ReferenceValueRetriever<LaborObject>() {
036                @Override
037                protected LaborObject useDao() {
038                    return laborLedgerDao.getLaborObject(fiscalYear, chartCode, objectCode);
039                }
040                @Override
041                protected void retrieveReferences(LaborObject laborObject) {}
042            }.get(LaborObject.class, fiscalYear, chartCode, objectCode);
043        }
044    
045        public int getMaxLaborSequenceNumber(LedgerEntry t) {
046            return laborLedgerDao.getMaxLaborSequenceNumber(t);
047        }
048    
049        public LedgerBalance getLedgerBalance(final LedgerBalance ledgerBalance) {
050            return new PreviousValueRetriever<LedgerBalance>() {
051                @Override
052                protected LedgerBalance useDao() {
053                    return laborLedgerDao.getLedgerBalance(ledgerBalance);
054                }            
055            }.get(LedgerBalance.class, ledgerBalance.getUniversityFiscalYear(), ledgerBalance.getChartOfAccountsCode(), ledgerBalance.getAccountNumber(), ledgerBalance.getSubAccountNumber(), ledgerBalance.getFinancialObjectCode(), ledgerBalance.getFinancialSubObjectCode(), ledgerBalance.getFinancialBalanceTypeCode(), ledgerBalance.getFinancialObjectTypeCode(), ledgerBalance.getPositionNumber(), ledgerBalance.getEmplid());
056        }
057    
058        public void insertLedgerBalance(LedgerBalance ledgerBalance) {
059            laborLedgerDao.insertLedgerBalance(ledgerBalance);
060            previousValueCache.get(LedgerBalance.class).update(ledgerBalance, ledgerBalance.getUniversityFiscalYear(), ledgerBalance.getChartOfAccountsCode(), ledgerBalance.getAccountNumber(), ledgerBalance.getSubAccountNumber(), ledgerBalance.getFinancialObjectCode(), ledgerBalance.getFinancialSubObjectCode(), ledgerBalance.getFinancialBalanceTypeCode(), ledgerBalance.getFinancialObjectTypeCode(), ledgerBalance.getPositionNumber(), ledgerBalance.getEmplid());
061        }
062    
063        public void updateLedgerBalance(LedgerBalance ledgerBalance) {
064            laborLedgerDao.updateLedgerBalance(ledgerBalance);
065            previousValueCache.get(LedgerBalance.class).update(ledgerBalance, ledgerBalance.getUniversityFiscalYear(), ledgerBalance.getChartOfAccountsCode(), ledgerBalance.getAccountNumber(), ledgerBalance.getSubAccountNumber(), ledgerBalance.getFinancialObjectCode(), ledgerBalance.getFinancialSubObjectCode(), ledgerBalance.getFinancialBalanceTypeCode(), ledgerBalance.getFinancialObjectTypeCode(), ledgerBalance.getPositionNumber(), ledgerBalance.getEmplid());
066        }
067    
068        public void insertLedgerEntry(LedgerEntry ledgerEntry) {
069            laborLedgerDao.insertLedgerEntry(ledgerEntry);
070        }
071    
072        public void setLaborLedgerDao(LedgerPreparedStatementCachingDao laborLedgerDao) {
073            this.laborLedgerDao = laborLedgerDao;
074        }
075    }