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.coa.service.ObjectCodeService;
019    import org.kuali.kfs.coa.service.OffsetDefinitionService;
020    import org.kuali.kfs.gl.service.OriginEntryGroupService;
021    import org.kuali.kfs.gl.service.PreScrubberService;
022    import org.kuali.kfs.gl.service.ScrubberValidator;
023    import org.kuali.kfs.module.ld.batch.service.LaborAccountingCycleCachingService;
024    import org.kuali.kfs.module.ld.batch.service.LaborScrubberService;
025    import org.kuali.kfs.module.ld.service.LaborOriginEntryService;
026    import org.kuali.kfs.sys.dataaccess.UniversityDateDao;
027    import org.kuali.kfs.sys.service.DocumentNumberAwareReportWriterService;
028    import org.kuali.kfs.sys.service.FlexibleOffsetAccountService;
029    import org.kuali.kfs.sys.service.ReportWriterService;
030    import org.kuali.rice.kns.service.DateTimeService;
031    import org.kuali.rice.kns.service.KualiConfigurationService;
032    import org.kuali.rice.kns.service.ParameterService;
033    import org.kuali.rice.kns.service.PersistenceService;
034    import org.springframework.transaction.annotation.Transactional;
035    
036    /**
037     * Service implementation of LaborScrubberService.
038     */
039    @Transactional
040    public class LaborScrubberServiceImpl implements LaborScrubberService {
041        private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(LaborScrubberServiceImpl.class);
042    
043        private FlexibleOffsetAccountService flexibleOffsetAccountService;
044        private LaborOriginEntryService laborOriginEntryService;
045        private OriginEntryGroupService originEntryGroupService;
046        private DateTimeService dateTimeService;
047        private OffsetDefinitionService offsetDefinitionService;
048        private ObjectCodeService objectCodeService;
049        private KualiConfigurationService kualiConfigurationService;
050        private UniversityDateDao universityDateDao;
051        private PersistenceService persistenceService;
052        private ScrubberValidator scrubberValidator;
053        private LaborAccountingCycleCachingService laborAccountingCycleCachingService;
054        private PreScrubberService laborPreScrubberService;
055        private DocumentNumberAwareReportWriterService llcpPreScrubberReportWriterService;
056    
057        private DocumentNumberAwareReportWriterService laborMainReportWriterService;
058        private DocumentNumberAwareReportWriterService llcpMainReportWriterService;
059        private DocumentNumberAwareReportWriterService laborLedgerReportWriterService;
060        private DocumentNumberAwareReportWriterService llcpLedgerReportWriterService;
061        private ReportWriterService laborBadBalanceTypeReportWriterService;
062        private ReportWriterService laborErrorListingReportWriterService;
063        private DocumentNumberAwareReportWriterService laborGeneratedTransactionsReportWriterService;
064        private ReportWriterService laborDemergerReportWriterService;
065        private ParameterService parameterService;
066    
067        private String batchFileDirectoryName;
068    
069        /**
070         * @see org.kuali.module.labor.service.ScrubberService#scrubGroupReportOnly(org.kuali.kfs.gl.businessobject.OriginEntryGroup)
071         */
072        synchronized public void scrubGroupReportOnly(String fileName, String documentNumber) {
073            LOG.debug("scrubGroupReportOnly() started");
074    
075            // The logic for this was moved into another object because the process was written using
076            // many instance variables which shouldn't be used for Spring services
077    
078            LaborScrubberProcess sp = new LaborScrubberProcess(flexibleOffsetAccountService, laborAccountingCycleCachingService, laborOriginEntryService, originEntryGroupService, dateTimeService, offsetDefinitionService, objectCodeService, kualiConfigurationService, universityDateDao, persistenceService, scrubberValidator, batchFileDirectoryName, 
079                    llcpMainReportWriterService, llcpLedgerReportWriterService, laborBadBalanceTypeReportWriterService, laborErrorListingReportWriterService, laborGeneratedTransactionsReportWriterService, laborDemergerReportWriterService, laborPreScrubberService, llcpPreScrubberReportWriterService, parameterService);
080            sp.scrubGroupReportOnly(fileName, documentNumber);
081        } 
082    
083        /**
084         * @see org.kuali.module.labor.service.ScrubberService#scrubEntries()
085         */
086        public void scrubEntries() {
087            LOG.debug("scrubEntries() started");
088    
089            // The logic for this was moved into another object because the process was written using
090            // many instance variables which shouldn't be used for Spring services
091    
092            LaborScrubberProcess sp = new LaborScrubberProcess(flexibleOffsetAccountService, laborAccountingCycleCachingService, laborOriginEntryService, originEntryGroupService, dateTimeService, offsetDefinitionService, objectCodeService, kualiConfigurationService, universityDateDao, persistenceService, scrubberValidator, batchFileDirectoryName, 
093                    laborMainReportWriterService, laborLedgerReportWriterService, laborBadBalanceTypeReportWriterService, laborErrorListingReportWriterService, laborGeneratedTransactionsReportWriterService, laborDemergerReportWriterService, null, null, parameterService);
094            sp.scrubEntries();
095        }
096        
097        public void performDemerger() {
098            LOG.debug("performDemerger() started");
099            LaborScrubberProcess sp = new LaborScrubberProcess(flexibleOffsetAccountService, laborAccountingCycleCachingService, laborOriginEntryService, originEntryGroupService, dateTimeService, offsetDefinitionService, objectCodeService, kualiConfigurationService, universityDateDao, persistenceService, scrubberValidator, batchFileDirectoryName, 
100                    laborMainReportWriterService, laborLedgerReportWriterService, laborBadBalanceTypeReportWriterService, laborErrorListingReportWriterService, laborGeneratedTransactionsReportWriterService, laborDemergerReportWriterService, null, null, parameterService);
101            sp.performDemerger();
102                    
103        }
104    
105        /**
106         * Sets the setScrubberValidator attribute value.
107         * 
108         * @param sv The setScrubberValidator to set.
109         */
110        public void setScrubberValidator(ScrubberValidator sv) {
111            scrubberValidator = sv;
112        }
113    
114        /**
115         * Sets the laborOriginEntryService attribute value.
116         * 
117         * @param loes The laborOriginEntryService to set.
118         */
119        public void setLaborOriginEntryService(LaborOriginEntryService loes) {
120            this.laborOriginEntryService = loes;
121        }
122    
123        /**
124         * Sets the originEntryGroupService attribute value.
125         * 
126         * @param groupService The originEntryGroupService to set.
127         */
128        public void setOriginEntryGroupService(OriginEntryGroupService groupService) {
129            this.originEntryGroupService = groupService;
130        }
131    
132        /**
133         * Sets the dateTimeService attribute value.
134         * 
135         * @param dts The dateTimeService to set.
136         */
137        public void setDateTimeService(DateTimeService dts) {
138            this.dateTimeService = dts;
139        }
140    
141        /**
142         * Sets the universityDateDao attribute value.
143         * 
144         * @param universityDateDao The universityDateDao to set.
145         */
146        public void setUniversityDateDao(UniversityDateDao universityDateDao) {
147            this.universityDateDao = universityDateDao;
148        }
149    
150        /**
151         * Sets the persistenceService attribute value.
152         * 
153         * @param ps The persistenceService to set.
154         */
155        public void setPersistenceService(PersistenceService ps) {
156            persistenceService = ps;
157        }
158    
159        /**
160         * Sets the offsetDefinitionService attribute value.
161         * 
162         * @param offsetDefinitionService The offsetDefinitionService to set.
163         */
164        public void setOffsetDefinitionService(OffsetDefinitionService offsetDefinitionService) {
165            this.offsetDefinitionService = offsetDefinitionService;
166        }
167    
168        /**
169         * Sets the objectCodeService attribute value.
170         * 
171         * @param objectCodeService The objectCodeService to set.
172         */
173        public void setObjectCodeService(ObjectCodeService objectCodeService) {
174            this.objectCodeService = objectCodeService;
175        }
176    
177        /**
178         * Sets the kualiConfigurationService attribute value.
179         * 
180         * @param kualiConfigurationService The kualiConfigurationService to set.
181         */
182        public void setKualiConfigurationService(KualiConfigurationService kualiConfigurationService) {
183            this.kualiConfigurationService = kualiConfigurationService;
184        }
185    
186        public void setBatchFileDirectoryName(String batchFileDirectoryName) {
187            this.batchFileDirectoryName = batchFileDirectoryName;
188        }
189    
190        /**
191         * Sets the flexibleOffsetAccountService attribute value.
192         * @param flexibleOffsetAccountService The flexibleOffsetAccountService to set.
193         */
194        public void setFlexibleOffsetAccountService(FlexibleOffsetAccountService flexibleOffsetAccountService) {
195            this.flexibleOffsetAccountService = flexibleOffsetAccountService;
196        }
197    
198    
199        public void setLaborAccountingCycleCachingService(LaborAccountingCycleCachingService laborAccountingCycleCachingService) {
200            this.laborAccountingCycleCachingService = laborAccountingCycleCachingService;
201        }
202    
203        /**
204         * @param laborMainReportWriterService The laborMainReportWriterService to set.
205         */
206        public void setLaborMainReportWriterService(DocumentNumberAwareReportWriterService laborMainReportWriterService) {
207            this.laborMainReportWriterService = laborMainReportWriterService;
208        }
209    
210        /**
211         * @param laborLedgerReportWriterService The laborLedgerReportWriterService to set.
212         */
213        public void setLaborLedgerReportWriterService(DocumentNumberAwareReportWriterService laborLedgerReportWriterService) {
214            this.laborLedgerReportWriterService = laborLedgerReportWriterService;
215        }
216    
217        /**
218         * @param laborBadBalanceTypeReportWriterService The laborBadBalanceTypeReportWriterService to set.
219         */
220        public void setLaborBadBalanceTypeReportWriterService(ReportWriterService laborBadBalanceTypeReportWriterService) {
221            this.laborBadBalanceTypeReportWriterService = laborBadBalanceTypeReportWriterService;
222        }
223    
224        /**
225         * @param laborErrorListingReportWriterService The laborErrorListingReportWriterService to set.
226         */
227        public void setLaborErrorListingReportWriterService(ReportWriterService laborErrorListingReportWriterService) {
228            this.laborErrorListingReportWriterService = laborErrorListingReportWriterService;
229        }
230    
231        /**
232         * @param laborGeneratedTransactionsReportWriterService The laborGeneratedTransactionsReportWriterService to set.
233         */
234        public void setLaborGeneratedTransactionsReportWriterService(DocumentNumberAwareReportWriterService laborGeneratedTransactionsReportWriterService) {
235            this.laborGeneratedTransactionsReportWriterService = laborGeneratedTransactionsReportWriterService;
236        }
237    
238        /**
239         * @param laborDemergerReportWriterService The laborDemergerReportWriterService to set.
240         */
241        public void setLaborDemergerReportWriterService(ReportWriterService laborDemergerReportWriterService) {
242            this.laborDemergerReportWriterService = laborDemergerReportWriterService;
243        }
244    
245        /**
246         * Sets the llcpMainReportWriterService attribute value.
247         * @param llcpMainReportWriterService The llcpMainReportWriterService to set.
248         */
249        public void setLlcpMainReportWriterService(DocumentNumberAwareReportWriterService llcpMainReportWriterService) {
250            this.llcpMainReportWriterService = llcpMainReportWriterService;
251        }
252    
253        /**
254         * Sets the llcpLedgerReportWriterService attribute value.
255         * @param llcpLedgerReportWriterService The llcpLedgerReportWriterService to set.
256         */
257        public void setLlcpLedgerReportWriterService(DocumentNumberAwareReportWriterService llcpLedgerReportWriterService) {
258            this.llcpLedgerReportWriterService = llcpLedgerReportWriterService;
259        }
260    
261        /**
262         * Gets the laborPreScrubberService attribute. 
263         * @return Returns the laborPreScrubberService.
264         */
265        public PreScrubberService getLaborPreScrubberService() {
266            return laborPreScrubberService;
267        }
268    
269        /**
270         * Sets the laborPreScrubberService attribute value.
271         * @param laborPreScrubberService The laborPreScrubberService to set.
272         */
273        public void setLaborPreScrubberService(PreScrubberService laborPreScrubberService) {
274            this.laborPreScrubberService = laborPreScrubberService;
275        }
276    
277        /**
278         * Sets the laborPreScrubberAwareReportWriterService attribute value.
279         * @param laborPreScrubberAwareReportWriterService The laborPreScrubberAwareReportWriterService to set.
280         */
281        public void setLlcpPreScrubberReportWriterService(DocumentNumberAwareReportWriterService llcpPreScrubberReportWriterService) {
282            this.llcpPreScrubberReportWriterService = llcpPreScrubberReportWriterService;
283        }
284        
285        /**
286         * Sets the parameterService attribute value.
287         * @param parameterService The parameterService to set.
288         */
289        public void setParameterService(ParameterService parameterService) {
290            this.parameterService = parameterService;
291        }
292    }