View Javadoc
1   /*
2    * The Kuali Financial System, a comprehensive financial management system for higher education.
3    * 
4    * Copyright 2005-2014 The Kuali Foundation
5    * 
6    * This program is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU Affero General Public License as
8    * published by the Free Software Foundation, either version 3 of the
9    * License, or (at your option) any later version.
10   * 
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU Affero General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Affero General Public License
17   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.kuali.kfs.module.ld.batch.service.impl;
20  
21  import org.kuali.kfs.coa.service.ObjectCodeService;
22  import org.kuali.kfs.coa.service.OffsetDefinitionService;
23  import org.kuali.kfs.gl.service.OriginEntryGroupService;
24  import org.kuali.kfs.gl.service.PreScrubberService;
25  import org.kuali.kfs.gl.service.ScrubberValidator;
26  import org.kuali.kfs.module.ld.batch.service.LaborAccountingCycleCachingService;
27  import org.kuali.kfs.module.ld.batch.service.LaborScrubberService;
28  import org.kuali.kfs.module.ld.service.LaborOriginEntryService;
29  import org.kuali.kfs.sys.dataaccess.UniversityDateDao;
30  import org.kuali.kfs.sys.service.DocumentNumberAwareReportWriterService;
31  import org.kuali.kfs.sys.service.FlexibleOffsetAccountService;
32  import org.kuali.kfs.sys.service.ReportWriterService;
33  import org.kuali.rice.core.api.config.property.ConfigurationService;
34  import org.kuali.rice.core.api.datetime.DateTimeService;
35  import org.kuali.rice.coreservice.framework.parameter.ParameterService;
36  import org.kuali.rice.krad.service.PersistenceService;
37  import org.springframework.transaction.annotation.Transactional;
38  
39  /**
40   * Service implementation of LaborScrubberService.
41   */
42  @Transactional
43  public class LaborScrubberServiceImpl implements LaborScrubberService {
44      private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(LaborScrubberServiceImpl.class);
45  
46      private FlexibleOffsetAccountService flexibleOffsetAccountService;
47      private LaborOriginEntryService laborOriginEntryService;
48      private OriginEntryGroupService originEntryGroupService;
49      private DateTimeService dateTimeService;
50      private OffsetDefinitionService offsetDefinitionService;
51      private ObjectCodeService objectCodeService;
52      private ConfigurationService kualiConfigurationService;
53      private UniversityDateDao universityDateDao;
54      private PersistenceService persistenceService;
55      private ScrubberValidator scrubberValidator;
56      private LaborAccountingCycleCachingService laborAccountingCycleCachingService;
57      private PreScrubberService laborPreScrubberService;
58      private DocumentNumberAwareReportWriterService llcpPreScrubberReportWriterService;
59  
60      private DocumentNumberAwareReportWriterService laborMainReportWriterService;
61      private DocumentNumberAwareReportWriterService llcpMainReportWriterService;
62      private DocumentNumberAwareReportWriterService laborLedgerReportWriterService;
63      private DocumentNumberAwareReportWriterService llcpLedgerReportWriterService;
64      private ReportWriterService laborBadBalanceTypeReportWriterService;
65      private ReportWriterService laborErrorListingReportWriterService;
66      private DocumentNumberAwareReportWriterService laborGeneratedTransactionsReportWriterService;
67      private ReportWriterService laborDemergerReportWriterService;
68      private ParameterService parameterService;
69  
70      private String batchFileDirectoryName;
71  
72      /**
73       * @see org.kuali.module.labor.service.ScrubberService#scrubGroupReportOnly(org.kuali.kfs.gl.businessobject.OriginEntryGroup)
74       */
75      synchronized public void scrubGroupReportOnly(String fileName, String documentNumber) {
76          LOG.debug("scrubGroupReportOnly() started");
77  
78          // The logic for this was moved into another object because the process was written using
79          // many instance variables which shouldn't be used for Spring services
80  
81          LaborScrubberProcess sp = new LaborScrubberProcess(flexibleOffsetAccountService, laborAccountingCycleCachingService, laborOriginEntryService, originEntryGroupService, dateTimeService, offsetDefinitionService, objectCodeService, kualiConfigurationService, universityDateDao, persistenceService, scrubberValidator, batchFileDirectoryName, 
82                  llcpMainReportWriterService, llcpLedgerReportWriterService, laborBadBalanceTypeReportWriterService, laborErrorListingReportWriterService, laborGeneratedTransactionsReportWriterService, laborDemergerReportWriterService, laborPreScrubberService, llcpPreScrubberReportWriterService, parameterService);
83          sp.scrubGroupReportOnly(fileName, documentNumber);
84      } 
85  
86      /**
87       * @see org.kuali.module.labor.service.ScrubberService#scrubEntries()
88       */
89      public void scrubEntries() {
90          LOG.debug("scrubEntries() started");
91  
92          // The logic for this was moved into another object because the process was written using
93          // many instance variables which shouldn't be used for Spring services
94  
95          LaborScrubberProcess sp = new LaborScrubberProcess(flexibleOffsetAccountService, laborAccountingCycleCachingService, laborOriginEntryService, originEntryGroupService, dateTimeService, offsetDefinitionService, objectCodeService, kualiConfigurationService, universityDateDao, persistenceService, scrubberValidator, batchFileDirectoryName, 
96                  laborMainReportWriterService, laborLedgerReportWriterService, laborBadBalanceTypeReportWriterService, laborErrorListingReportWriterService, laborGeneratedTransactionsReportWriterService, laborDemergerReportWriterService, null, null, parameterService);
97          sp.scrubEntries();
98      }
99      
100     public void performDemerger() {
101         LOG.debug("performDemerger() started");
102         LaborScrubberProcess sp = new LaborScrubberProcess(flexibleOffsetAccountService, laborAccountingCycleCachingService, laborOriginEntryService, originEntryGroupService, dateTimeService, offsetDefinitionService, objectCodeService, kualiConfigurationService, universityDateDao, persistenceService, scrubberValidator, batchFileDirectoryName, 
103                 laborMainReportWriterService, laborLedgerReportWriterService, laborBadBalanceTypeReportWriterService, laborErrorListingReportWriterService, laborGeneratedTransactionsReportWriterService, laborDemergerReportWriterService, null, null, parameterService);
104         sp.performDemerger();
105                 
106     }
107 
108     /**
109      * Sets the setScrubberValidator attribute value.
110      * 
111      * @param sv The setScrubberValidator to set.
112      */
113     public void setScrubberValidator(ScrubberValidator sv) {
114         scrubberValidator = sv;
115     }
116 
117     /**
118      * Sets the laborOriginEntryService attribute value.
119      * 
120      * @param loes The laborOriginEntryService to set.
121      */
122     public void setLaborOriginEntryService(LaborOriginEntryService loes) {
123         this.laborOriginEntryService = loes;
124     }
125 
126     /**
127      * Sets the originEntryGroupService attribute value.
128      * 
129      * @param groupService The originEntryGroupService to set.
130      */
131     public void setOriginEntryGroupService(OriginEntryGroupService groupService) {
132         this.originEntryGroupService = groupService;
133     }
134 
135     /**
136      * Sets the dateTimeService attribute value.
137      * 
138      * @param dts The dateTimeService to set.
139      */
140     public void setDateTimeService(DateTimeService dts) {
141         this.dateTimeService = dts;
142     }
143 
144     /**
145      * Sets the universityDateDao attribute value.
146      * 
147      * @param universityDateDao The universityDateDao to set.
148      */
149     public void setUniversityDateDao(UniversityDateDao universityDateDao) {
150         this.universityDateDao = universityDateDao;
151     }
152 
153     /**
154      * Sets the persistenceService attribute value.
155      * 
156      * @param ps The persistenceService to set.
157      */
158     public void setPersistenceService(PersistenceService ps) {
159         persistenceService = ps;
160     }
161 
162     /**
163      * Sets the offsetDefinitionService attribute value.
164      * 
165      * @param offsetDefinitionService The offsetDefinitionService to set.
166      */
167     public void setOffsetDefinitionService(OffsetDefinitionService offsetDefinitionService) {
168         this.offsetDefinitionService = offsetDefinitionService;
169     }
170 
171     /**
172      * Sets the objectCodeService attribute value.
173      * 
174      * @param objectCodeService The objectCodeService to set.
175      */
176     public void setObjectCodeService(ObjectCodeService objectCodeService) {
177         this.objectCodeService = objectCodeService;
178     }
179 
180     /**
181      * Sets the kualiConfigurationService attribute value.
182      * 
183      * @param kualiConfigurationService The kualiConfigurationService to set.
184      */
185     public void setConfigurationService(ConfigurationService kualiConfigurationService) {
186         this.kualiConfigurationService = kualiConfigurationService;
187     }
188 
189     public void setBatchFileDirectoryName(String batchFileDirectoryName) {
190         this.batchFileDirectoryName = batchFileDirectoryName;
191     }
192 
193     /**
194      * Sets the flexibleOffsetAccountService attribute value.
195      * @param flexibleOffsetAccountService The flexibleOffsetAccountService to set.
196      */
197     public void setFlexibleOffsetAccountService(FlexibleOffsetAccountService flexibleOffsetAccountService) {
198         this.flexibleOffsetAccountService = flexibleOffsetAccountService;
199     }
200 
201 
202     public void setLaborAccountingCycleCachingService(LaborAccountingCycleCachingService laborAccountingCycleCachingService) {
203         this.laborAccountingCycleCachingService = laborAccountingCycleCachingService;
204     }
205 
206     /**
207      * @param laborMainReportWriterService The laborMainReportWriterService to set.
208      */
209     public void setLaborMainReportWriterService(DocumentNumberAwareReportWriterService laborMainReportWriterService) {
210         this.laborMainReportWriterService = laborMainReportWriterService;
211     }
212 
213     /**
214      * @param laborLedgerReportWriterService The laborLedgerReportWriterService to set.
215      */
216     public void setLaborLedgerReportWriterService(DocumentNumberAwareReportWriterService laborLedgerReportWriterService) {
217         this.laborLedgerReportWriterService = laborLedgerReportWriterService;
218     }
219 
220     /**
221      * @param laborBadBalanceTypeReportWriterService The laborBadBalanceTypeReportWriterService to set.
222      */
223     public void setLaborBadBalanceTypeReportWriterService(ReportWriterService laborBadBalanceTypeReportWriterService) {
224         this.laborBadBalanceTypeReportWriterService = laborBadBalanceTypeReportWriterService;
225     }
226 
227     /**
228      * @param laborErrorListingReportWriterService The laborErrorListingReportWriterService to set.
229      */
230     public void setLaborErrorListingReportWriterService(ReportWriterService laborErrorListingReportWriterService) {
231         this.laborErrorListingReportWriterService = laborErrorListingReportWriterService;
232     }
233 
234     /**
235      * @param laborGeneratedTransactionsReportWriterService The laborGeneratedTransactionsReportWriterService to set.
236      */
237     public void setLaborGeneratedTransactionsReportWriterService(DocumentNumberAwareReportWriterService laborGeneratedTransactionsReportWriterService) {
238         this.laborGeneratedTransactionsReportWriterService = laborGeneratedTransactionsReportWriterService;
239     }
240 
241     /**
242      * @param laborDemergerReportWriterService The laborDemergerReportWriterService to set.
243      */
244     public void setLaborDemergerReportWriterService(ReportWriterService laborDemergerReportWriterService) {
245         this.laborDemergerReportWriterService = laborDemergerReportWriterService;
246     }
247 
248     /**
249      * Sets the llcpMainReportWriterService attribute value.
250      * @param llcpMainReportWriterService The llcpMainReportWriterService to set.
251      */
252     public void setLlcpMainReportWriterService(DocumentNumberAwareReportWriterService llcpMainReportWriterService) {
253         this.llcpMainReportWriterService = llcpMainReportWriterService;
254     }
255 
256     /**
257      * Sets the llcpLedgerReportWriterService attribute value.
258      * @param llcpLedgerReportWriterService The llcpLedgerReportWriterService to set.
259      */
260     public void setLlcpLedgerReportWriterService(DocumentNumberAwareReportWriterService llcpLedgerReportWriterService) {
261         this.llcpLedgerReportWriterService = llcpLedgerReportWriterService;
262     }
263 
264     /**
265      * Gets the laborPreScrubberService attribute. 
266      * @return Returns the laborPreScrubberService.
267      */
268     public PreScrubberService getLaborPreScrubberService() {
269         return laborPreScrubberService;
270     }
271 
272     /**
273      * Sets the laborPreScrubberService attribute value.
274      * @param laborPreScrubberService The laborPreScrubberService to set.
275      */
276     public void setLaborPreScrubberService(PreScrubberService laborPreScrubberService) {
277         this.laborPreScrubberService = laborPreScrubberService;
278     }
279 
280     /**
281      * Sets the laborPreScrubberAwareReportWriterService attribute value.
282      * @param laborPreScrubberAwareReportWriterService The laborPreScrubberAwareReportWriterService to set.
283      */
284     public void setLlcpPreScrubberReportWriterService(DocumentNumberAwareReportWriterService llcpPreScrubberReportWriterService) {
285         this.llcpPreScrubberReportWriterService = llcpPreScrubberReportWriterService;
286     }
287     
288     /**
289      * Sets the parameterService attribute value.
290      * @param parameterService The parameterService to set.
291      */
292     public void setParameterService(ParameterService parameterService) {
293         this.parameterService = parameterService;
294     }
295 }