[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