KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > efs > openreports > actions > JXLSReportAction


1 /*
2  * Copyright (C) 2006 Erik Swenson - erik@oreports.com
3  *
4  * This program is free software; you can redistribute it and/or modify it under
5  * the terms of the GNU General Public License as published by the Free Software
6  * Foundation; either version 2 of the License, or (at your option) any later
7  * version.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
12  * details.
13  *
14  * You should have received a copy of the GNU General Public License along with
15  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
16  * Place - Suite 330, Boston, MA 02111-1307, USA.
17  *
18  */

19
20 package org.efs.openreports.actions;
21
22 import java.sql.Connection JavaDoc;
23 import java.util.Date JavaDoc;
24 import java.util.Map JavaDoc;
25
26 import javax.servlet.ServletOutputStream JavaDoc;
27 import javax.servlet.http.HttpServletResponse JavaDoc;
28
29 import org.apache.commons.lang.StringUtils;
30 import org.apache.log4j.Logger;
31 import org.efs.openreports.ORStatics;
32 import org.efs.openreports.engine.JXLSReportEngine;
33 import org.efs.openreports.engine.input.ReportEngineInput;
34 import org.efs.openreports.engine.output.ReportEngineOutput;
35 import org.efs.openreports.objects.Report;
36 import org.efs.openreports.objects.ReportLog;
37 import org.efs.openreports.objects.ReportUser;
38
39 import com.opensymphony.webwork.ServletActionContext;
40 import com.opensymphony.xwork.ActionContext;
41
42 public class JXLSReportAction extends QueryReportAction
43 {
44     protected static Logger log = Logger.getLogger(JXLSReportAction.class);
45     
46     public String JavaDoc execute()
47     {
48         ReportUser user = (ReportUser) ActionContext.getContext().getSession().get(
49                 ORStatics.REPORT_USER);
50
51         report = (Report) ActionContext.getContext().getSession().get(ORStatics.REPORT);
52
53         Map JavaDoc parameters = getReportParameterMap(user);
54
55         ReportLog reportLog = new ReportLog(user, report, new Date JavaDoc());
56
57         Connection JavaDoc conn = null;
58         
59         try
60         {
61             log.debug("Starting JXLS Report: " + report.getName());
62
63             reportLogProvider.insertReportLog(reportLog);
64
65             ReportEngineInput input = new ReportEngineInput(report, parameters);
66             
67             JXLSReportEngine reportEngine = new JXLSReportEngine(
68                         dataSourceProvider, directoryProvider, propertiesProvider);
69                 
70             ReportEngineOutput output = reportEngine.generateReport(input);
71
72             HttpServletResponse JavaDoc response = ServletActionContext.getResponse();
73             response.setContentType("application/vnd.ms-excel");
74             response.setHeader("Content-disposition", "inline; filename="
75                     + StringUtils.deleteWhitespace(report.getName()) + ".xls");
76
77             ServletOutputStream JavaDoc out = response.getOutputStream();
78
79             out.write(output.getContent(), 0, output.getContent().length);
80
81             out.flush();
82             out.close();
83
84             reportLog.setEndTime(new Date JavaDoc());
85             reportLog.setStatus(ReportLog.STATUS_SUCCESS);
86             reportLogProvider.updateReportLog(reportLog);
87
88             log.debug("Finished JRXLS Report: " + report.getName());
89         }
90         catch (Exception JavaDoc e)
91         {
92             addActionError(e.getMessage());
93
94             log.error(e.getMessage());
95
96             reportLog.setMessage(e.getMessage());
97             reportLog.setStatus(ReportLog.STATUS_FAILURE);
98
99             reportLog.setEndTime(new Date JavaDoc());
100
101             try
102             {
103                 reportLogProvider.updateReportLog(reportLog);
104             }
105             catch (Exception JavaDoc ex)
106             {
107                 log.error("Unable to create ReportLog: " + ex.getMessage());
108             }
109
110             return ERROR;
111         }
112         finally
113         {
114             try
115             {
116                 if (conn != null) conn.close();
117             }
118             catch (Exception JavaDoc c)
119             {
120                 log.error("Error closing");
121             }
122         }
123
124         return NONE;
125     }
126 }
Popular Tags