1 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 ; 25 import java.io.StringWriter ; 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 49 public class ReportRunner implements Runnable { 50 51 private RepositoryReportUnit reportUnit; 52 private java.util.Map map; 53 private JServer server; 54 private LogTextArea lta; 55 56 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 t) 69 { 70 StringWriter sw = new StringWriter (); 71 t.printStackTrace(new java.io.PrintWriter ( 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 getMap() { 89 return map; 90 } 91 92 public void setMap(java.util.Map 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 tmpDir, String fileName, JasperPrint print, LogTextArea lta) 114 { 115 String 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 ()).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 viewer_program = ""; 128 String 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 (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 (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 (getMainFrame().getProperties().getProperty("PDF_PERMISSIONS"))); 147 fileName = Misc.changeFileExtension(fileName, "pdf"); 148 exportingMessage = (new StringBuilder ()).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 ()).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 (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 (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 (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 (getMainFrame().getProperties().getProperty("HTML_IS_USING_IMAGES_TO_ALIGN"))); 181 fileName = Misc.changeFileExtension(fileName, "html"); 182 exportingMessage = (new StringBuilder ()).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 (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 (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 (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 (getMainFrame().getProperties().getProperty("XLS_IS_AUTO_DETECT_CELL_TYPE"))); 196 fileName = Misc.changeFileExtension(fileName, "xls"); 197 exportingMessage = (new StringBuilder ()).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 (getMainFrame().getProperties().getProperty("XLS2_IS_FONT_SIZE_FIX_ENABLED"))); 205 fileName = Misc.changeFileExtension(fileName, "xls"); 206 exportingMessage = (new StringBuilder ()).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 (getMainFrame().getProperties().getProperty("TXT_ADD_FORM_FEED"))); 230 fileName = Misc.changeFileExtension(fileName, "txt"); 231 exportingMessage = (new StringBuilder ()).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 (getMainFrame().getProperties().getProperty("JRTXT_PAGE_WIDTH"))); 239 if(getMainFrame().getProperties().getProperty("JRTXT_PAGE_HEIGHT") != null) 240 exporter.setParameter(JRTextExporterParameter.PAGE_HEIGHT, new Integer (getMainFrame().getProperties().getProperty("JRTXT_PAGE_HEIGHT"))); 241 if(getMainFrame().getProperties().getProperty("JRTXT_CHARACTER_WIDTH") != null) 242 exporter.setParameter(JRTextExporterParameter.CHARACTER_WIDTH, new Integer (getMainFrame().getProperties().getProperty("JRTXT_CHARACTER_WIDTH"))); 243 if(getMainFrame().getProperties().getProperty("JRTXT_CHARACTER_HEIGHT") != null) 244 exporter.setParameter(JRTextExporterParameter.CHARACTER_HEIGHT, new Integer (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 ()).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 ()).append("Exporting RTF to file... ").append(fileName).append("").toString(); 256 viewer_program = Misc.nvl(getMainFrame().getProperties().getProperty("ExternalRTFViewer"), ""); 257 } 258 java.net.URL img_url = getClass().getResource("/it/businesslogic/ireport/icons/printer_mini.png"); 259 lta.logOnConsole((new StringBuilder ()).append("<font face=\"SansSerif\" size=\"3\"><img align=\"right\" SRC=\"").append(img_url).append("\"> ").append(exportingMessage).append("</font>").toString(), true); 260 if(exporter != null) 261 { 262 exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, (new StringBuilder ()).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 ex2) 274 { 275 errorExporting = true; 276 lta.logOnConsole("Error exporting print...\n"); 277 ex2.printStackTrace(); 278 lta.logOnConsole((new StringBuilder ()).append("").append(ex2).toString()); 279 } 280 281 282 if (!errorExporting) 283 { 284 lta.logOnConsole((new StringBuilder ()).append("<font face=\"SansSerif\" size=\"3\" color=\"#0000CC\"><b>Export running time : ").append(System.currentTimeMillis() - start).append("</b></font><hr>").toString(), true); 285 Runtime 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 f = new File (fileName); 295 296 String execute_string = (new StringBuilder ()).append(viewer_program).append(" ").append(f).append("").toString(); 297 lta.logOnConsole((new StringBuilder ()).append("<font face=\"SansSerif\" size=\"3\">Executing: ").append(execute_string).append("</font>").toString(), true); 298 rt.exec(execute_string); 299 } 300 catch(Exception ex) 301 { 302 lta.logOnConsole("Error viewing report...\n"); 303 ex.printStackTrace(); 304 } 305 } 306 } 307 else 308 { 309 lta.logOnConsole((new StringBuilder ()).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 |