1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.ole.gl.batch;
17
18 import java.io.File;
19 import java.io.IOException;
20 import java.util.ArrayList;
21 import java.util.List;
22
23 import org.apache.commons.io.FileUtils;
24 import org.apache.commons.io.LineIterator;
25 import org.kuali.ole.gl.GeneralLedgerConstants;
26 import org.kuali.ole.gl.report.PreScrubberReport;
27 import org.kuali.ole.gl.report.PreScrubberReportData;
28 import org.kuali.ole.gl.service.PreScrubberService;
29 import org.kuali.ole.sys.batch.AbstractWrappedBatchStep;
30 import org.kuali.ole.sys.batch.service.WrappedBatchExecutorService.CustomBatchExecutor;
31 import org.kuali.ole.sys.service.ReportWriterService;
32 import org.springframework.util.StopWatch;
33
34
35
36
37 public class PreScrubberStep extends AbstractWrappedBatchStep {
38 private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(PreScrubberStep.class);
39 private String batchFileDirectoryName;
40 private PreScrubberService preScrubberService;
41 private ReportWriterService preScrubberReportWriterService;
42
43
44
45
46 @Override
47 public List<String> getRequiredDirectoryNames() {
48 return new ArrayList<String>(){{add(batchFileDirectoryName);}};
49 }
50
51 @Override
52 protected CustomBatchExecutor getCustomBatchExecutor() {
53 return new CustomBatchExecutor() {
54 public boolean execute() {
55 StopWatch stopWatch = new StopWatch();
56 stopWatch.start();
57
58 String inputFile = batchFileDirectoryName + File.separator + GeneralLedgerConstants.BatchFileSystem.BACKUP_FILE + GeneralLedgerConstants.BatchFileSystem.EXTENSION;
59 String outputFile = batchFileDirectoryName + File.separator + GeneralLedgerConstants.BatchFileSystem.PRE_SCRUBBER_FILE + GeneralLedgerConstants.BatchFileSystem.EXTENSION;
60
61 PreScrubberReportData preScrubberReportData = null;
62 LineIterator oeIterator = null;
63 try {
64 oeIterator = FileUtils.lineIterator(new File(inputFile));
65 preScrubberReportData = preScrubberService.preprocessOriginEntries(oeIterator, outputFile);
66 }
67 catch (IOException e) {
68 LOG.error("IO exception occurred during pre scrubbing.", e);
69 throw new RuntimeException("IO exception occurred during pre scrubbing.", e);
70 }
71 finally {
72 LineIterator.closeQuietly(oeIterator);
73 }
74
75 if (preScrubberReportData != null) {
76 new PreScrubberReport().generateReport(preScrubberReportData, preScrubberReportWriterService);
77 }
78
79 stopWatch.stop();
80 if (LOG.isDebugEnabled()) {
81 LOG.debug("scrubber step of took " + (stopWatch.getTotalTimeSeconds() / 60.0) + " minutes to complete");
82 }
83 return true;
84 }
85 };
86 }
87
88 public void setBatchFileDirectoryName(String batchFileDirectoryName) {
89 this.batchFileDirectoryName = batchFileDirectoryName;
90 }
91
92 public PreScrubberService getPreScrubberService() {
93 return preScrubberService;
94 }
95
96 public void setPreScrubberService(PreScrubberService preScrubberService) {
97 this.preScrubberService = preScrubberService;
98 }
99
100 public void setPreScrubberReportWriterService(ReportWriterService preScrubberReportWriterService) {
101 this.preScrubberReportWriterService = preScrubberReportWriterService;
102 }
103 }