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.cab.batch.service.impl;
017    
018    import java.io.File;
019    import java.util.ArrayList;
020    import java.util.HashMap;
021    import java.util.List;
022    import java.util.Map;
023    import java.util.ResourceBundle;
024    
025    import net.sf.jasperreports.engine.JRParameter;
026    
027    import org.kuali.kfs.module.cab.batch.ExtractProcessLog;
028    import org.kuali.kfs.module.cab.batch.service.BatchExtractReportService;
029    import org.kuali.kfs.sys.KFSConstants.ReportGeneration;
030    import org.kuali.kfs.sys.report.ReportInfo;
031    import org.kuali.kfs.sys.service.ReportGenerationService;
032    import org.kuali.rice.kns.service.DateTimeService;
033    
034    public class BatchExtractReportServiceImpl implements BatchExtractReportService {
035        protected ReportGenerationService reportGenerationService;
036        protected ReportInfo cabBatchStatusReportInfo;
037        protected ReportInfo cabBatchMismatchReportInfo;
038    
039        protected DateTimeService dateTimeService;
040    
041        /**
042         * @see org.kuali.kfs.module.cab.batch.service.BatchExtractReportService#generateStatusReportPDF(org.kuali.kfs.module.cab.batch.ExtractProcessLog)
043         */
044        public File generateStatusReportPDF(ExtractProcessLog extractProcessLog) {
045            String reportFileName = cabBatchStatusReportInfo.getReportFileName();
046            String reportDirectoty = cabBatchStatusReportInfo.getReportsDirectory();
047            String reportTemplateClassPath = cabBatchStatusReportInfo.getReportTemplateClassPath();
048            String reportTemplateName = cabBatchStatusReportInfo.getReportTemplateName();
049            ResourceBundle resourceBundle = cabBatchStatusReportInfo.getResourceBundle();
050            String subReportTemplateClassPath = cabBatchStatusReportInfo.getSubReportTemplateClassPath();
051            Map<String, String> subReports = cabBatchStatusReportInfo.getSubReports();
052            Map<String, Object> reportData = new HashMap<String, Object>();
053            reportData.put(JRParameter.REPORT_RESOURCE_BUNDLE, resourceBundle);
054            reportData.put(ReportGeneration.PARAMETER_NAME_SUBREPORT_DIR, subReportTemplateClassPath);
055            reportData.put(ReportGeneration.PARAMETER_NAME_SUBREPORT_TEMPLATE_NAME, subReports);
056            String template = reportTemplateClassPath + reportTemplateName;
057            String fullReportFileName = reportGenerationService.buildFullFileName(dateTimeService.getCurrentDate(), reportDirectoty, reportFileName, "");
058            List<ExtractProcessLog> dataSource = new ArrayList<ExtractProcessLog>();
059            dataSource.add(extractProcessLog);
060            reportGenerationService.generateReportToPdfFile(reportData, dataSource, template, fullReportFileName);
061            return new File(fullReportFileName + ".pdf");
062        }
063    
064        /**
065         * @see org.kuali.kfs.module.cab.batch.service.BatchExtractReportService#generateMismatchReportPDF(org.kuali.kfs.module.cab.batch.ExtractProcessLog)
066         */
067        public File generateMismatchReportPDF(ExtractProcessLog extractProcessLog) {
068            String reportFileName = cabBatchMismatchReportInfo.getReportFileName();
069            String reportDirectoty = cabBatchMismatchReportInfo.getReportsDirectory();
070            String reportTemplateClassPath = cabBatchMismatchReportInfo.getReportTemplateClassPath();
071            String reportTemplateName = cabBatchMismatchReportInfo.getReportTemplateName();
072            ResourceBundle resourceBundle = cabBatchMismatchReportInfo.getResourceBundle();
073            String subReportTemplateClassPath = cabBatchMismatchReportInfo.getSubReportTemplateClassPath();
074            Map<String, String> subReports = cabBatchMismatchReportInfo.getSubReports();
075            Map<String, Object> reportData = new HashMap<String, Object>();
076            reportData.put(JRParameter.REPORT_RESOURCE_BUNDLE, resourceBundle);
077            reportData.put(ReportGeneration.PARAMETER_NAME_SUBREPORT_DIR, subReportTemplateClassPath);
078            reportData.put(ReportGeneration.PARAMETER_NAME_SUBREPORT_TEMPLATE_NAME, subReports);
079            String template = reportTemplateClassPath + reportTemplateName;
080            String fullReportFileName = reportGenerationService.buildFullFileName(dateTimeService.getCurrentDate(), reportDirectoty, reportFileName, "");
081            List<ExtractProcessLog> dataSource = new ArrayList<ExtractProcessLog>();
082            dataSource.add(extractProcessLog);
083            reportGenerationService.generateReportToPdfFile(reportData, dataSource, template, fullReportFileName);
084            return new File(fullReportFileName + ".pdf");
085        }
086    
087        /**
088         * Gets the reportGenerationService attribute.
089         * 
090         * @return Returns the reportGenerationService.
091         */
092        public ReportGenerationService getReportGenerationService() {
093            return reportGenerationService;
094        }
095    
096        /**
097         * Sets the reportGenerationService attribute value.
098         * 
099         * @param reportGenerationService The reportGenerationService to set.
100         */
101        public void setReportGenerationService(ReportGenerationService reportGenerationService) {
102            this.reportGenerationService = reportGenerationService;
103        }
104    
105        /**
106         * Gets the cabBatchStatusReportInfo attribute.
107         * 
108         * @return Returns the cabBatchStatusReportInfo.
109         */
110        public ReportInfo getCabBatchStatusReportInfo() {
111            return cabBatchStatusReportInfo;
112        }
113    
114        /**
115         * Sets the cabBatchStatusReportInfo attribute value.
116         * 
117         * @param cabBatchStatusReportInfo The cabBatchStatusReportInfo to set.
118         */
119        public void setCabBatchStatusReportInfo(ReportInfo cabBatchStatusReportInfo) {
120            this.cabBatchStatusReportInfo = cabBatchStatusReportInfo;
121        }
122    
123    
124        /**
125         * Gets the dateTimeService attribute.
126         * 
127         * @return Returns the dateTimeService.
128         */
129        public DateTimeService getDateTimeService() {
130            return dateTimeService;
131        }
132    
133        /**
134         * Sets the dateTimeService attribute value.
135         * 
136         * @param dateTimeService The dateTimeService to set.
137         */
138        public void setDateTimeService(DateTimeService dateTimeService) {
139            this.dateTimeService = dateTimeService;
140        }
141    
142        /**
143         * Gets the cabBatchMismatchReportInfo attribute.
144         * 
145         * @return Returns the cabBatchMismatchReportInfo.
146         */
147        public ReportInfo getCabBatchMismatchReportInfo() {
148            return cabBatchMismatchReportInfo;
149        }
150    
151        /**
152         * Sets the cabBatchMismatchReportInfo attribute value.
153         * 
154         * @param cabBatchMismatchReportInfo The cabBatchMismatchReportInfo to set.
155         */
156        public void setCabBatchMismatchReportInfo(ReportInfo cabBatchMismatchReportInfo) {
157            this.cabBatchMismatchReportInfo = cabBatchMismatchReportInfo;
158        }
159    }