[jboss-svn-commits] JBL Code SVN: r7547 - labs/reportingservices/trunk/dev/modules/engine/birtreport/src/main/java/org/jboss/reporting/server/engine
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Nov 12 09:46:08 EST 2006
Author: romainguinot at gmail.com
Date: 2006-11-12 09:46:07 -0500 (Sun, 12 Nov 2006)
New Revision: 7547
Modified:
labs/reportingservices/trunk/dev/modules/engine/birtreport/src/main/java/org/jboss/reporting/server/engine/BirtReport.java
Log:
Enhanced Version
Modified: labs/reportingservices/trunk/dev/modules/engine/birtreport/src/main/java/org/jboss/reporting/server/engine/BirtReport.java
===================================================================
--- labs/reportingservices/trunk/dev/modules/engine/birtreport/src/main/java/org/jboss/reporting/server/engine/BirtReport.java 2006-11-12 13:19:41 UTC (rev 7546)
+++ labs/reportingservices/trunk/dev/modules/engine/birtreport/src/main/java/org/jboss/reporting/server/engine/BirtReport.java 2006-11-12 14:46:07 UTC (rev 7547)
@@ -28,7 +28,7 @@
import org.jboss.system.ServiceMBeanSupport;
import org.jboss.system.server.ServerConfigImplMBean;
-public class BirtReport extends ServiceMBeanSupport implements ReportEngineModule
+public class BirtReport extends ServiceMBeanSupport implements BirtReportMBean,ReportEngineModule
{
private final Logger log = Logger.getLogger(BirtReport.class);// provide logging
@@ -45,11 +45,11 @@
/**
* the default output format, used in Render and RunAndRender.
*/
- protected String format = "html"; // The output format, defaults to HTML
+ protected String format = "PDF"; // The output format, defaults to HTML
/**
* used to decorate the HTML output, used in Render and RunAndRender mode.
*/
- protected String htmlType = "HTML"; // The type of html
+ //protected String htmlType = "HTML"; // The type of html
/**
* the output encoding, used in html format in Render and RunAndRender
* modes.
@@ -73,6 +73,7 @@
public Object compileReport(InputStream in_stream) throws Exception
{
+ String tmpDoc = System.getProperty("birt.reports.compile.temp")+Long.toString(System.currentTimeMillis())+COMPILED_EXTENSION;
try
{
IReportRunnable runnable = engine.openReportDesign( in_stream );// parse the source to get the report runnable
@@ -81,11 +82,13 @@
//task.setParameterValues( inputValues );
task.setAppContext( new HashMap( ) );// set the application context
- String tmpDoc = System.getProperty("birt.reports.compile.temp")+Long.toString(System.currentTimeMillis())+COMPILED_EXTENSION;
+ log.info("Compiling Report in : "+tmpDoc+" ... ");
task.run( tmpDoc );// run the task to create the report document
task.close( );// close the task.
+ log.info("Compilation successful :) ");
IReportDocument rptdoc = engine.openReportDocument(tmpDoc);
-
+ String plural = rptdoc.getPageCount()==1 ? "":"s" ;
+ log.info("Report "+rptdoc.getName()+" contained "+rptdoc.getPageCount()+" page"+plural+".");
return rptdoc;
}
catch ( EngineException e )
@@ -93,9 +96,16 @@
log.error( e.getMessage( ), e );
return null;
}
+ finally
+ {
+ File tmpCompiledReport = new File(tmpDoc);
+ log.info("Cleanup...");
+ if (tmpCompiledReport != null && tmpCompiledReport.exists()) tmpCompiledReport.delete();
+ log.info("Temp file "+tmpDoc+" deleted [OK] ");
+ }
}
- public byte[] runReportToPdf(String in_reportName, Object in_report, Map in_parameters, String in_datasource_jndi_name) throws Exception
+ public byte[] runReportToPdf(String in_reportName, Object in_report, Map in_parameters, String in_datasource_jndi_name)
{
try
{
@@ -111,26 +121,39 @@
task.setLocale( getLocale( locale ) );// setup the locale
/** @TODO : decide whether to store the reports on the filesystem or keep it in memory **/
- String tmpReport = System.getProperty("birt.reports.compile.temp")+Long.toString(System.currentTimeMillis())+in_reportName;
+ String tmpReport = System.getProperty("birt.reports.compile.temp")+"rendering_"+in_reportName;
+ log.info("Render ouput : "+tmpReport);
//OutputStream os = new ByteArrayOutputStream();
if ( pageNumber <= 0 )// setup the output file
{
- options.setOutputFileName( in_reportName );
+ options.setOutputFileName( tmpReport );
//options.setOutputStream(os);
+ log.info("Rendering all pages...");
task.render();
+ log.info("Rendering done.");
+
}
else
{
- options.setOutputFileName( in_reportName );
+ options.setOutputFileName( tmpReport );
//options.setOutputStream(os);
+ log.info("Rendering page "+pageNumber+" ...");
task.setPageNumber(pageNumber);
task.render();
+ log.info("Rendering done.");
}
task.close( );
File tmpReportFile = new File(tmpReport);
/** @TODO : DELETE TEMP FILES !!! **/
+
+ byte[] reportBytes=null;
+ try
+ {
+ reportBytes = getBytesFromFile(tmpReportFile);
+ }
+ catch (IOException e) {e.printStackTrace(); }
- return getBytesFromFile(tmpReportFile);
+ return reportBytes;
}
catch ( org.eclipse.birt.report.engine.api.EngineException e )
@@ -151,6 +174,7 @@
*/
public void startService()
{
+ System.setProperty("RUN_UNDER_ECLIPSE","false");
File birt_temp_dir=null;
ServerConfigImplMBean serverConfig = (ServerConfigImplMBean)
@@ -162,20 +186,33 @@
if ( engine == null )
{
EngineConfig config = new EngineConfig( );
- config.setEngineHome(serverConfig.getServerHomeDir().getAbsolutePath()+"/deploy/reporting-services.sar/");
+ config.setEngineHome(serverConfig.getServerHomeDir().getAbsolutePath()+"/deploy/engine-BIRT-0.2-SNAPSHOT.sar/");
try
{
log.info("Attempting to start platform");
Platform.startup( config );
+ log.info("Platform is of type : "+Platform.ECLIPSE_PLATFORM);
}
catch (BirtException e)
{
e.printStackTrace();
}
log.info("Platform started");
+ //log.info("waiting 3 secs");
+ //try {Thread.sleep(3000);}catch (InterruptedException e){e.printStackTrace();} "org.eclipse.birt.report.engine.ReportEngineFactory"
IReportEngineFactory factory = (IReportEngineFactory) Platform.createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
+
+ //ReportEngineFactory factory = new ReportEngineFactory();
+ //try {Thread.sleep(3000);}catch (InterruptedException e){e.printStackTrace();}
+ //log.info("waiting 3 secs");
+ if (factory==null ) log.error("ReportEngineFactory \"factory\"is NULL !!");
+ if (config==null ) log.error("EngineConfig \"config\" is NULL !!");
engine = factory.createReportEngine( config );
+ if (config==null ) log.error("IReportEngine \"engine\" is NULL !!");
+ //engine = (IReportEngine) new ReportEngine( config) ;
engine.changeLogLevel( Level.WARNING );
+ log.info("ReportEngine started");
+
}
}
/**
@@ -204,9 +241,8 @@
InputStream is = new FileInputStream(file);
long length = file.length();
- // You cannot create an array using a long type.
- // It needs to be an int type.Before converting to an int type, check to ensure that file is not larger than Integer.MAX_VALUE.
- if (length > Integer.MAX_VALUE) return null;
+ //Cannot read file larger than 2GB , shouldn't be a problem .
+ if (length > Integer.MAX_VALUE) throw new IOException("File "+file.getName()+" is too large to be read");;
byte[] bytes = new byte[(int)length];// Create the byte array to hold the data
// Read in the bytes
More information about the jboss-svn-commits
mailing list