/*
* The Kuali Financial System, a comprehensive financial management system for higher education.
*
* Copyright 2005-2014 The Kuali Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kuali.kfs.gl.service.impl;
import org.kuali.kfs.gl.batch.CollectorBatch;
import org.kuali.kfs.gl.batch.service.ScrubberProcess;
import org.kuali.kfs.gl.report.CollectorReportData;
import org.kuali.kfs.gl.service.ScrubberService;
import org.kuali.kfs.sys.context.SpringContext;
import org.springframework.transaction.annotation.Transactional;
/**
* The default implementation of ScrubberService
*/
@Transactional
public class ScrubberServiceImpl implements ScrubberService {
private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ScrubberServiceImpl.class);
private ScrubberProcess reportOnlyScrubberProcess;
private ScrubberProcess scrubberProcess;
private ScrubberProcess demergerScrubberProcess;
protected static final String COLLECTOR_SCRUBBER_PROCESS_BEAN_NAME = "batchScrubberProcess";
/**
* This process will call the scrubber in a read only mode. It will scrub a single group, won't create any output in origin
* entry. It will create a the scrubber report
* @param group the origin entry group to scrub for report
* @param documentNumber the id of documents which generated origin entries that should be scrubbed
* @see org.kuali.kfs.gl.service.ScrubberService#scrubGroupReportOnly(org.kuali.kfs.gl.businessobject.OriginEntryGroup)
*/
synchronized public void scrubGroupReportOnly(String fileName, String documentNumber) {
LOG.debug("scrubGroupReportOnly() started");
reportOnlyScrubberProcess.scrubGroupReportOnly(fileName, documentNumber);
}
/**
* Scrubs all of the entries in all origin entry groups that are up for scrubbing
* @see org.kuali.kfs.gl.service.ScrubberService#scrubEntries()
*/
public void scrubEntries() {
LOG.debug("scrubEntries() started");
scrubberProcess.scrubEntries();
}
/**
* Scrubs data read in by the Collector
*
* @param batch the data read by the Collector
* @param collectorReportData statistics about
* @param overrideOriginEntryService the implementation of origin entry service to use for this specific Collector scrub
* @param overrideOriginEntryGroupService the implementation of origin entry group service to use for this specific Collector scrub
* @return the status returned by the Scrubber
* @see org.kuali.kfs.gl.service.ScrubberService#scrubCollectorBatch(org.kuali.kfs.gl.batch.CollectorBatch, org.kuali.kfs.gl.report.CollectorReportData, org.kuali.kfs.gl.service.OriginEntryService, org.kuali.kfs.gl.service.OriginEntryGroupService)
*/
public void scrubCollectorBatch(ScrubberStatus scrubberStatus, CollectorBatch batch, CollectorReportData collectorReportData) {
ScrubberProcess batchScrubberProcess = (ScrubberProcess) SpringContext.getService(COLLECTOR_SCRUBBER_PROCESS_BEAN_NAME);
batchScrubberProcess.scrubCollectorBatch(scrubberStatus, batch, collectorReportData);
}
public void performDemerger() {
LOG.debug("performDemerger() started");
//new ScrubberProcessImpl(flexibleOffsetAccountService, accountingCycleCachingService, dateTimeService, offsetDefinitionService, objectCodeService, kualiConfigurationService, universityDateDao, persistenceService, scrubberValidator, generatedCostShareOriginEntryObjectCodeOverride, runDateService, batchFileDirectoryName, null, null, null, null, demergerReportWriterService, demergerRemovedTransactionsListingReportWriterService, null);
demergerScrubberProcess.performDemerger();
}
/**
* Sets the reportOnlyScrubberProcess attribute value.
* @param reportOnlyScrubberProcess The reportOnlyScrubberProcess to set.
*/
public void setReportOnlyScrubberProcess(ScrubberProcess reportOnlyScrubberProcess) {
this.reportOnlyScrubberProcess = reportOnlyScrubberProcess;
}
/**
* Sets the scrubberProcess attribute value.
* @param scrubberProcess The scrubberProcess to set.
*/
public void setScrubberProcess(ScrubberProcess scrubberProcess) {
this.scrubberProcess = scrubberProcess;
}
/**
* Sets the demergerScrubberProcess attribute value.
* @param demergerScrubberProcess The demergerScrubberProcess to set.
*/
public void setDemergerScrubberProcess(ScrubberProcess demergerScrubberProcess) {
this.demergerScrubberProcess = demergerScrubberProcess;
}
}