1 13 package org.pentaho.plugin.jfreereport.outputs; 14 15 import java.io.IOException ; 16 import java.io.OutputStream ; 17 18 import org.jfree.report.JFreeReport; 19 import org.jfree.report.ReportProcessingException; 20 import org.jfree.report.modules.output.table.html.HtmlProcessor; 21 import org.jfree.report.modules.output.table.html.StreamHtmlFilesystem; 22 import org.pentaho.core.repository.IContentRepository; 23 import org.pentaho.core.system.IApplicationContext; 24 import org.pentaho.core.system.PentahoSystem; 25 import org.pentaho.messages.Messages; 26 import org.pentaho.plugin.jfreereport.helper.PentahoHtmlFilesystem; 27 import org.pentaho.plugin.jfreereport.helper.YieldReportListener; 28 29 34 public class JFreeReportHtmlComponent extends AbstractGenerateStreamContentComponent { 35 private static final long serialVersionUID = -4296469329232291213L; 36 37 public JFreeReportHtmlComponent() { 38 } 39 40 protected String getMimeType() { 41 return "text/html"; } 43 44 protected String getExtension() { 45 return ".html"; } 47 48 protected boolean performExport(final JFreeReport report, final OutputStream outputStream) { 49 try { 50 final IContentRepository contentRepository = PentahoSystem.getContentRepository(getSession()); 51 52 String contentHandlerPattern = getInputStringValue(REPORTHTML_CONTENTHANDLER); 53 if (contentHandlerPattern == null) { 54 contentHandlerPattern = "GetContent?id={0}"; } 56 57 String format = null; 58 IApplicationContext ctx = PentahoSystem.getApplicationContext(); 59 if (ctx != null) { 60 format = ctx.getBaseUrl() + contentHandlerPattern; 61 } 62 63 if (contentRepository == null || format == null) { 64 debug(Messages.getString("JFreeReportHtmlComponent.DEBUG_0044_PROCESSING_WITHOUT_CONTENT_REPOS")); HtmlProcessor processor = new HtmlProcessor(report); 68 processor.setFilesystem(new StreamHtmlFilesystem(outputStream)); 69 final int yieldRate = getYieldRate(); 70 if (yieldRate > 0) { 71 processor.addRepaginationListener(new YieldReportListener(yieldRate)); 72 } 73 processor.processReport(); 74 outputStream.flush(); 75 return true; 76 } 77 78 debug(Messages.getString("JFreeReportHtmlComponent.DEBUG_045_PROCESSING_WITH_CONTENT_REPOS")); 89 final PentahoHtmlFilesystem filesystem = new PentahoHtmlFilesystem(outputStream, null, getActionName(), false, format); 90 91 HtmlProcessor processor = new HtmlProcessor(report); 92 processor.setFilesystem(filesystem); 93 final int yieldRate = getYieldRate(); 94 if (yieldRate > 0) { 95 processor.addRepaginationListener(new YieldReportListener(yieldRate)); 96 } 97 processor.processReport(); 98 outputStream.close(); 99 return true; 100 } catch (ReportProcessingException e) { 101 error(Messages.getString("JFreeReportHtmlComponent.ERROR_0046_FAILED_TO_PROCESS_REPORT"), e); return false; 103 } catch (IOException e) { 104 error(Messages.getString("JFreeReportHtmlComponent.ERROR_0046_FAILED_TO_PROCESS_REPORT"), e); return false; 106 } 107 } 108 } 109 | Popular Tags |