KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jaspersoft > jasperserver > irplugin > ReportRunner


1 /*
2  * ReportRunner.java
3  *
4  * All rights reserved.
5  * Copyright (C) 2005 JasperSoft Corporation
6  *
7  * JasperSoft Corporation
8  * 303 Second Street, Suite 450 North
9  * San Francisco, CA 94107
10  * http://www.jaspersoft.com
11  *
12  *
13  * Created on June 9, 2006, 11:13 AM
14  *
15  */

16
17 package com.jaspersoft.jasperserver.irplugin;
18
19 import it.businesslogic.ireport.export.JRTxtExporter;
20 import it.businesslogic.ireport.export.JRTxtExporterParameter;
21 import it.businesslogic.ireport.gui.MainFrame;
22 import it.businesslogic.ireport.gui.logpane.LogTextArea;
23 import it.businesslogic.ireport.util.Misc;
24 import java.io.File JavaDoc;
25 import java.io.StringWriter JavaDoc;
26 import net.sf.jasperreports.engine.JRExporter;
27 import net.sf.jasperreports.engine.JRExporterParameter;
28 import net.sf.jasperreports.engine.JasperPrint;
29 import net.sf.jasperreports.engine.export.JExcelApiExporter;
30 import net.sf.jasperreports.engine.export.JExcelApiExporterParameter;
31 import net.sf.jasperreports.engine.export.JRCsvExporter;
32 import net.sf.jasperreports.engine.export.JRCsvExporterParameter;
33 import net.sf.jasperreports.engine.export.JRGraphics2DExporter;
34 import net.sf.jasperreports.engine.export.JRHtmlExporter;
35 import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
36 import net.sf.jasperreports.engine.export.JRPdfExporter;
37 import net.sf.jasperreports.engine.export.JRPdfExporterParameter;
38 import net.sf.jasperreports.engine.export.JRRtfExporter;
39 import net.sf.jasperreports.engine.export.JRTextExporter;
40 import net.sf.jasperreports.engine.export.JRTextExporterParameter;
41 import net.sf.jasperreports.engine.export.JRXlsExporter;
42 import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
43 import net.sf.jasperreports.view.JasperViewer;
44
45 /**
46  *
47  * @author gtoffoli
48  */

49 public class ReportRunner implements Runnable JavaDoc {
50     
51     private RepositoryReportUnit reportUnit;
52     private java.util.Map JavaDoc map;
53     private JServer server;
54     private LogTextArea lta;
55     
56     /** Creates a new instance of ReportRunner */
57     public ReportRunner() {
58     }
59     
60     public void run()
61     {
62         try {
63             
64             lta.logOnConsole("<font face=\"SansSerif\" size=\"3\" color=\"#0000CC\"><b>Filling report on server: "+ getServer().getUrl() + "</b> </font><hr>", true);
65             
66             JasperPrint print = getServer().getWSClient().runReport(getReportUnit().getDescriptor() , getMap());
67             exportPrint( MainFrame.getMainInstance().IREPORT_TMP_DIR, getReportUnit().getDescriptor().getName() ,print, getLta());
68         } catch (Exception JavaDoc t)
69         {
70             StringWriter JavaDoc sw = new StringWriter JavaDoc();
71             t.printStackTrace(new java.io.PrintWriter JavaDoc( sw ));
72             sw.flush();
73             lta.logOnConsole("<font face=\"SansSerif\" size=\"3\" color=\"#CC0000\">"+ t.getMessage() + "</font><hr>", true);
74             lta.logOnConsole( sw.toString(), false);
75         }
76     }
77     
78     
79
80     public RepositoryReportUnit getReportUnit() {
81         return reportUnit;
82     }
83
84     public void setReportUnit(RepositoryReportUnit reportUnit) {
85         this.reportUnit = reportUnit;
86     }
87
88     public java.util.Map JavaDoc getMap() {
89         return map;
90     }
91
92     public void setMap(java.util.Map JavaDoc map) {
93         this.map = map;
94     }
95
96     public JServer getServer() {
97         return server;
98     }
99
100     public void setServer(JServer server) {
101         this.server = server;
102     }
103
104     public LogTextArea getLta() {
105         return lta;
106     }
107
108     public void setLta(LogTextArea lta) {
109         this.lta = lta;
110     }
111     
112     
113     public void exportPrint(String JavaDoc tmpDir, String JavaDoc fileName, JasperPrint print, LogTextArea lta)
114     {
115         String JavaDoc status = "";
116         if(!tmpDir.endsWith(File.separator))
117             tmpDir = tmpDir + File.separator;
118
119         int format = getMainFrame().getReportViewer();
120
121         if(print != null)
122         {
123             JRExporter exporter = null;
124             lta.logOnConsole((new StringBuilder JavaDoc()).append("<font face=\"SansSerif\" size=\"3\" color=\"#0000CC\"><b>Report filled</b> (pages generated: ").append(print.getPages().size()).append(")</font><hr>").toString(), true);
125             status = "exporting report";
126             long start = System.currentTimeMillis();
127             String JavaDoc viewer_program = "";
128             String JavaDoc exportingMessage = "";
129             
130             boolean errorExporting = false;
131             
132             try
133             {
134                 if(format == MainFrame.IREPORT_PDF_VIEWER)
135                 {
136                     exporter = new JRPdfExporter();
137                     if(getMainFrame().getProperties().getProperty("PDF_IS_ENCRYPTED") != null)
138                         exporter.setParameter(JRPdfExporterParameter.IS_ENCRYPTED, new Boolean JavaDoc(getMainFrame().getProperties().getProperty("PDF_IS_ENCRYPTED")));
139                     if(getMainFrame().getProperties().getProperty("PDF_IS_128_BIT_KEY") != null)
140                         exporter.setParameter(JRPdfExporterParameter.IS_128_BIT_KEY, new Boolean JavaDoc(getMainFrame().getProperties().getProperty("PDF_IS_128_BIT_KEY")));
141                     if(getMainFrame().getProperties().getProperty("PDF_USER_PASSWORD") != null)
142                         exporter.setParameter(JRPdfExporterParameter.USER_PASSWORD, getMainFrame().getProperties().getProperty("PDF_USER_PASSWORD"));
143                     if(getMainFrame().getProperties().getProperty("PDF_OWNER_PASSWORD") != null)
144                         exporter.setParameter(JRPdfExporterParameter.OWNER_PASSWORD, getMainFrame().getProperties().getProperty("PDF_OWNER_PASSWORD"));
145                     if(getMainFrame().getProperties().getProperty("PDF_PERMISSIONS") != null)
146                         exporter.setParameter(JRPdfExporterParameter.PERMISSIONS, new Integer JavaDoc(getMainFrame().getProperties().getProperty("PDF_PERMISSIONS")));
147                     fileName = Misc.changeFileExtension(fileName, "pdf");
148                     exportingMessage = (new StringBuilder JavaDoc()).append("Exporting pdf to file (using iText)... ").append(fileName).append("").toString();
149                     viewer_program = getMainFrame().getProperties().getProperty("ExternalPDFViewer");
150                 } else
151                 if(format == MainFrame.IREPORT_CSV_VIEWER)
152                 {
153                     exporter = new JRCsvExporter();
154                     if(getMainFrame().getProperties().getProperty("CSV_FIELD_DELIMITER") != null)
155                         exporter.setParameter(JRCsvExporterParameter.FIELD_DELIMITER, getMainFrame().getProperties().getProperty("CSV_FIELD_DELIMITER"));
156                     fileName = Misc.changeFileExtension(fileName, "csv");
157                     exportingMessage = (new StringBuilder JavaDoc()).append("Exporting CSV to file... ").append(fileName).append("").toString();
158                     viewer_program = Misc.nvl(getMainFrame().getProperties().getProperty("ExternalCSVViewer"), "");
159                 } else
160                 if(format == MainFrame.IREPORT_HTML_VIEWER)
161                 {
162                     exporter = new JRHtmlExporter();
163                     if(getMainFrame().getProperties().getProperty("HTML_IMAGES_DIR_NAME") != null)
164                         exporter.setParameter(JRHtmlExporterParameter.IMAGES_DIR_NAME, getMainFrame().getProperties().getProperty("HTML_IMAGES_DIR_NAME"));
165                     if(getMainFrame().getProperties().getProperty("HTML_IS_OUTPUT_IMAGES_TO_DIR") != null)
166                         exporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR, new Boolean JavaDoc(getMainFrame().getProperties().getProperty("HTML_IS_OUTPUT_IMAGES_TO_DIR")));
167                     if(getMainFrame().getProperties().getProperty("HTML_IMAGES_URI") != null)
168                         exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, getMainFrame().getProperties().getProperty("HTML_IMAGES_URI"));
169                     if(getMainFrame().getProperties().getProperty("HTML_HTML_HEADER") != null)
170                         exporter.setParameter(JRHtmlExporterParameter.HTML_HEADER, getMainFrame().getProperties().getProperty("HTML_HTML_HEADER"));
171                     if(getMainFrame().getProperties().getProperty("HTML_BETWEEN_PAGES_HTML") != null)
172                         exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, getMainFrame().getProperties().getProperty("HTML_BETWEEN_PAGES_HTML"));
173                     if(getMainFrame().getProperties().getProperty("HTML_HTML_FOOTER") != null)
174                         exporter.setParameter(JRHtmlExporterParameter.HTML_FOOTER, getMainFrame().getProperties().getProperty("HTML_HTML_FOOTER"));
175                     if(getMainFrame().getProperties().getProperty("HTML_IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS") != null)
176                         exporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, new Boolean JavaDoc(getMainFrame().getProperties().getProperty("HTML_IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS")));
177                     if(getMainFrame().getProperties().getProperty("HTML_IS_WHITE_PAGE_BACKGROUND") != null)
178                         exporter.setParameter(JRHtmlExporterParameter.IS_WHITE_PAGE_BACKGROUND, new Boolean JavaDoc(getMainFrame().getProperties().getProperty("HTML_IS_WHITE_PAGE_BACKGROUND")));
179                     if(getMainFrame().getProperties().getProperty("HTML_IS_USING_IMAGES_TO_ALIGN") != null)
180                         exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, new Boolean JavaDoc(getMainFrame().getProperties().getProperty("HTML_IS_USING_IMAGES_TO_ALIGN")));
181                     fileName = Misc.changeFileExtension(fileName, "html");
182                     exportingMessage = (new StringBuilder JavaDoc()).append("Exporting HTML to file... ").append(fileName).append("").toString();
183                     viewer_program = Misc.nvl(getMainFrame().getProperties().getProperty("ExternalHTMLViewer"), "");
184                 } else
185                 if(format == MainFrame.IREPORT_XLS_VIEWER)
186                 {
187                     exporter = new JRXlsExporter();
188                     if(getMainFrame().getProperties().getProperty("XLS_IS_ONE_PAGE_PER_SHEET") != null)
189                         exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, new Boolean JavaDoc(getMainFrame().getProperties().getProperty("XLS_IS_ONE_PAGE_PER_SHEET")));
190                     if(getMainFrame().getProperties().getProperty("XLS_IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS") != null)
191                         exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, new Boolean JavaDoc(getMainFrame().getProperties().getProperty("XLS_IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS")));
192                     if(getMainFrame().getProperties().getProperty("XLS_IS_WHITE_PAGE_BACKGROUND") != null)
193                         exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, new Boolean JavaDoc(getMainFrame().getProperties().getProperty("XLS_IS_WHITE_PAGE_BACKGROUND")));
194                     if(getMainFrame().getProperties().getProperty("XLS_IS_AUTO_DETECT_CELL_TYPE") != null)
195                         exporter.setParameter(JRXlsExporterParameter.IS_AUTO_DETECT_CELL_TYPE, new Boolean JavaDoc(getMainFrame().getProperties().getProperty("XLS_IS_AUTO_DETECT_CELL_TYPE")));
196                     fileName = Misc.changeFileExtension(fileName, "xls");
197                     exportingMessage = (new StringBuilder JavaDoc()).append("Exporting xls to file (using POI)... ").append(fileName).append("").toString();
198                     viewer_program = Misc.nvl(getMainFrame().getProperties().getProperty("ExternalXLSViewer"), "");
199                 } else
200                 if(format == MainFrame.IREPORT_XLS2_VIEWER)
201                 {
202                     exporter = new JExcelApiExporter();
203                     if(getMainFrame().getProperties().getProperty("XLS2_IS_FONT_SIZE_FIX_ENABLED") != null)
204                         exporter.setParameter(JExcelApiExporterParameter.IS_FONT_SIZE_FIX_ENABLED, new Boolean JavaDoc(getMainFrame().getProperties().getProperty("XLS2_IS_FONT_SIZE_FIX_ENABLED")));
205                     fileName = Misc.changeFileExtension(fileName, "xls");
206                     exportingMessage = (new StringBuilder JavaDoc()).append("Exporting xls to file (using JExcelApi)... ").append(fileName).append("").toString();
207                     viewer_program = Misc.nvl(getMainFrame().getProperties().getProperty("ExternalXLSViewer"), "");
208                 } else
209                 if(format == MainFrame.IREPORT_JAVA_VIEWER)
210                 {
211                     exporter = new JRGraphics2DExporter();
212                     exportingMessage = "Exporting to Java2D ";
213                     viewer_program = null;
214                 } else
215                 if(format == MainFrame.IREPORT_JASPER_VIEWER)
216                 {
217                     exportingMessage = "Viewing with JasperReports Viewer";
218                     exporter = null;
219                     viewer_program = null;
220                 } else
221                 if(format == MainFrame.IREPORT_TXT_VIEWER)
222                 {
223                     exporter = new JRTxtExporter();
224                     if(getMainFrame().getProperties().getProperty("TXT_PAGE_ROWS") != null)
225                         exporter.setParameter(JRTxtExporterParameter.PAGE_ROWS, getMainFrame().getProperties().getProperty("TXT_PAGE_ROWS"));
226                     if(getMainFrame().getProperties().getProperty("TXT_PAGE_COLUMNS") != null)
227                         exporter.setParameter(JRTxtExporterParameter.PAGE_COLUMNS, getMainFrame().getProperties().getProperty("TXT_PAGE_COLUMNS"));
228                     if(getMainFrame().getProperties().getProperty("TXT_ADD_FORM_FEED") != null)
229                         exporter.setParameter(JRTxtExporterParameter.ADD_FORM_FEED, new Boolean JavaDoc(getMainFrame().getProperties().getProperty("TXT_ADD_FORM_FEED")));
230                     fileName = Misc.changeFileExtension(fileName, "txt");
231                     exportingMessage = (new StringBuilder JavaDoc()).append("Exporting txt (iReport) to file... ").append(fileName).append("\n").toString();
232                     viewer_program = Misc.nvl(getMainFrame().getProperties().getProperty("ExternalTXTViewer"), "");
233                 } else
234                 if(format == MainFrame.IREPORT_TXT_JR_VIEWER)
235                 {
236                     exporter = new JRTextExporter();
237                     if(getMainFrame().getProperties().getProperty("JRTXT_PAGE_WIDTH") != null)
238                         exporter.setParameter(JRTextExporterParameter.PAGE_WIDTH, new Integer JavaDoc(getMainFrame().getProperties().getProperty("JRTXT_PAGE_WIDTH")));
239                     if(getMainFrame().getProperties().getProperty("JRTXT_PAGE_HEIGHT") != null)
240                         exporter.setParameter(JRTextExporterParameter.PAGE_HEIGHT, new Integer JavaDoc(getMainFrame().getProperties().getProperty("JRTXT_PAGE_HEIGHT")));
241                     if(getMainFrame().getProperties().getProperty("JRTXT_CHARACTER_WIDTH") != null)
242                         exporter.setParameter(JRTextExporterParameter.CHARACTER_WIDTH, new Integer JavaDoc(getMainFrame().getProperties().getProperty("JRTXT_CHARACTER_WIDTH")));
243                     if(getMainFrame().getProperties().getProperty("JRTXT_CHARACTER_HEIGHT") != null)
244                         exporter.setParameter(JRTextExporterParameter.CHARACTER_HEIGHT, new Integer JavaDoc(getMainFrame().getProperties().getProperty("JRTXT_CHARACTER_HEIGHT")));
245                     if(getMainFrame().getProperties().getProperty("JRTXT_BETWEEN_PAGES_TEXT") != null)
246                         exporter.setParameter(JRTextExporterParameter.BETWEEN_PAGES_TEXT, getMainFrame().getProperties().getProperty("JRTXT_BETWEEN_PAGES_TEXT"));
247                     fileName = Misc.changeFileExtension(fileName, "txt");
248                     exportingMessage = (new StringBuilder JavaDoc()).append("Exporting txt (jasperReports) to file... ").append(fileName).append("").toString();
249                     viewer_program = Misc.nvl(getMainFrame().getProperties().getProperty("ExternalTXTViewer"), "");
250                 } else
251                 if(format == MainFrame.IREPORT_RTF_VIEWER)
252                 {
253                     exporter = new JRRtfExporter();
254                     fileName = Misc.changeFileExtension(fileName, "rtf");
255                     exportingMessage = (new StringBuilder JavaDoc()).append("Exporting RTF to file... ").append(fileName).append("").toString();
256                     viewer_program = Misc.nvl(getMainFrame().getProperties().getProperty("ExternalRTFViewer"), "");
257                 }
258                 java.net.URL JavaDoc img_url = getClass().getResource("/it/businesslogic/ireport/icons/printer_mini.png");
259                 lta.logOnConsole((new StringBuilder JavaDoc()).append("<font face=\"SansSerif\" size=\"3\"><img align=\"right\" SRC=\"").append(img_url).append("\"> &nbsp;").append(exportingMessage).append("</font>").toString(), true);
260                 if(exporter != null)
261                 {
262                     exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, (new StringBuilder JavaDoc()).append(tmpDir).append(fileName).toString());
263                     exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
264                     exporter.exportReport();
265                 } else
266                 if(format == MainFrame.IREPORT_JASPER_VIEWER)
267                 {
268                     JasperViewer jasperViewer = new JasperViewer(print, false);
269                     jasperViewer.setTitle("iReport JasperViewer");
270                     jasperViewer.setVisible(true);
271                 }
272             }
273             catch(Throwable JavaDoc ex2)
274             {
275                 errorExporting = true;
276                 lta.logOnConsole("Error exporting print...\n");
277                 ex2.printStackTrace();
278                 lta.logOnConsole((new StringBuilder JavaDoc()).append("").append(ex2).toString());
279             }
280             
281             
282             if (!errorExporting)
283             {
284                 lta.logOnConsole((new StringBuilder JavaDoc()).append("<font face=\"SansSerif\" size=\"3\" color=\"#0000CC\"><b>Export running time : ").append(System.currentTimeMillis() - start).append("</b></font><hr>").toString(), true);
285                 Runtime JavaDoc rt = Runtime.getRuntime();
286                 if(viewer_program == null || viewer_program.equals(""))
287                 {
288                     if(format != MainFrame.IREPORT_JASPER_VIEWER)
289                         lta.logOnConsole("<font face=\"SansSerif\" size=\"3\">No external viewer specified for this type of print. Set it in the options frame!</font>", true);
290                 } else
291                 {
292                     try
293                     {
294                         File JavaDoc f = new File JavaDoc(fileName);
295
296                         String JavaDoc execute_string = (new StringBuilder JavaDoc()).append(viewer_program).append(" ").append(f).append("").toString();
297                         lta.logOnConsole((new StringBuilder JavaDoc()).append("<font face=\"SansSerif\" size=\"3\">Executing: ").append(execute_string).append("</font>").toString(), true);
298                         rt.exec(execute_string);
299                     }
300                     catch(Exception JavaDoc ex)
301                     {
302                         lta.logOnConsole("Error viewing report...\n");
303                         ex.printStackTrace();
304                     }
305                 }
306             }
307             else
308             {
309                 lta.logOnConsole((new StringBuilder JavaDoc()).append("<font face=\"SansSerif\" size=\"3\" color=\"#CC0000\"><b>Error exporting the report, try to run the report using the internal viewer.</b></font><hr>").toString(), true);
310             }
311         } else
312         {
313             lta.logOnConsole("Print not filled.\n");
314         }
315     }
316
317     public MainFrame getMainFrame()
318     {
319         return MainFrame.getMainInstance();
320     }
321 }
322
Popular Tags