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.gl.batch.service.impl;
017    
018    import java.sql.Date;
019    import java.util.Collection;
020    
021    import org.kuali.kfs.gl.batch.CollectorBatch;
022    import org.kuali.kfs.gl.batch.CollectorScrubberProcess;
023    import org.kuali.kfs.gl.batch.service.CollectorScrubberService;
024    import org.kuali.kfs.gl.report.CollectorReportData;
025    import org.kuali.kfs.gl.service.ScrubberService;
026    import org.kuali.kfs.gl.service.impl.CollectorScrubberStatus;
027    import org.kuali.kfs.sys.dataaccess.UniversityDateDao;
028    import org.kuali.rice.kns.service.DateTimeService;
029    import org.kuali.rice.kns.service.KualiConfigurationService;
030    import org.kuali.rice.kns.service.PersistenceService;
031    import org.springframework.transaction.annotation.Transactional;
032    
033    /**
034     * An implementation of CollectorScrubberService
035     */
036    @Transactional
037    public class CollectorScrubberServiceImpl implements CollectorScrubberService {
038        private DateTimeService dateTimeService;
039        private UniversityDateDao universityDateDao;
040        private KualiConfigurationService kualiConfigurationService;
041        private PersistenceService persistenceService;
042        private ScrubberService scrubberService;
043        private String batchFileDirectoryName;
044    
045        /**
046         * uns the scrubber on the origin entries in the batch. Any OEs edits/removals result of the scrub and demerger are removed
047         * from the batch, and the same changes are reflected in the details in the same batch.
048         * 
049         * @param batch the data read in by the Collector
050         * @param collectorReportData statistics generated by the scrub run on the Collector data
051         * @return an object with the collector scrubber status.
052         * @see org.kuali.kfs.gl.batch.service.CollectorScrubberService#scrub(org.kuali.kfs.gl.batch.CollectorBatch,
053         *      org.kuali.kfs.gl.report.CollectorReportData)
054         */
055        public CollectorScrubberStatus scrub(CollectorBatch batch, CollectorReportData collectorReportData, String collectorFileDirectoryName) {
056            CollectorScrubberProcess collectorScrubberProcess = new CollectorScrubberProcess(batch, kualiConfigurationService, persistenceService, scrubberService, collectorReportData, dateTimeService, batchFileDirectoryName);
057            return collectorScrubberProcess.scrub();
058            
059        }
060    
061        /**
062         * Removes any temporarily created origin entries and origin entry groups so that they won't be persisted after the transaction
063         * is committed.
064         * 
065         * @param allStatusObjectsFromCollectorExecution a Collection of ScrubberStatus records to help find bad Collector data
066    
067         * @see org.kuali.kfs.gl.batch.service.CollectorScrubberService#removeTempGroups(java.util.Collection)
068         */
069        
070        //TODO: need to delete files
071        public void removeTempGroups(Collection<CollectorScrubberStatus> allStatusObjectsFromCollectorExecution) {
072        }
073    
074        /**
075         * Finds the run date of the current Collector scrubber process
076         * @return the date of the process
077         */
078        protected Date calculateRunDate() {
079            return dateTimeService.getCurrentSqlDate();
080        }
081    
082        /**
083         * Gets the dateTimeService attribute.
084         * 
085         * @return Returns the dateTimeService.
086         */
087        public DateTimeService getDateTimeService() {
088            return dateTimeService;
089        }
090    
091        /**
092         * Sets the dateTimeService attribute value.
093         * 
094         * @param dateTimeService The dateTimeService to set.
095         */
096        public void setDateTimeService(DateTimeService dateTimeService) {
097            this.dateTimeService = dateTimeService;
098        }
099    
100        /**
101         * Gets the kualiConfigurationService attribute.
102         * 
103         * @return Returns the kualiConfigurationService.
104         */
105        public KualiConfigurationService getKualiConfigurationService() {
106            return kualiConfigurationService;
107        }
108    
109        /**
110         * Sets the kualiConfigurationService attribute value.
111         * 
112         * @param kualiConfigurationService The kualiConfigurationService to set.
113         */
114        public void setKualiConfigurationService(KualiConfigurationService kualiConfigurationService) {
115            this.kualiConfigurationService = kualiConfigurationService;
116        }
117    
118        /**
119         * Sets the universityDateDao attribute value.
120         * 
121         * @param universityDateDao The universityDateDao to set.
122         */
123        public void setUniversityDateDao(UniversityDateDao universityDateDao) {
124            this.universityDateDao = universityDateDao;
125        }
126    
127        /**
128         * Gets the persistenceService attribute.
129         * 
130         * @return Returns the persistenceService.
131         */
132        public PersistenceService getPersistenceService() {
133            return persistenceService;
134        }
135    
136        /**
137         * Sets the persistenceService attribute value.
138         * 
139         * @param persistenceService The persistenceService to set.
140         */
141        public void setPersistenceService(PersistenceService persistenceService) {
142            this.persistenceService = persistenceService;
143        }
144    
145        /**
146         * Gets the universityDateDao attribute.
147         * 
148         * @return Returns the universityDateDao.
149         */
150        public UniversityDateDao getUniversityDateDao() {
151            return universityDateDao;
152        }
153    
154        /**
155         * Sets the scrubberService attribute value.
156         * 
157         * @param scrubberService The scrubberService to set.
158         */
159        public void setScrubberService(ScrubberService scrubberService) {
160            this.scrubberService = scrubberService;
161        }
162    
163        /**
164         * Sets the batchFileDirectoryName attribute value.
165         * @param batchFileDirectoryName The batchFileDirectoryName to set.
166         */
167        public void setBatchFileDirectoryName(String batchFileDirectoryName) {
168            this.batchFileDirectoryName = batchFileDirectoryName;
169        }
170    
171    
172    }