Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Data Extract"

(Second time onwards this code is not working)
(Replacing page with 'Moved to Data Extract (BIRT) 2.1')
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
== Data Extract ==
+
Moved to [[Data Extract (BIRT) 2.1]]
 
+
This example demonstrates using the RE API to run a report and extract the results
+
from the rptdocument.
+
 
+
Add comments at the bottom of the example.
+
 
+
[[BIRT Report Engine API]] Return to the BIRT Report Engine API examples
+
 
+
== Source ==
+
===DataExtract.java===
+
import java.util.ArrayList;
+
import java.util.logging.Level;
+
+
import org.eclipse.birt.core.framework.Platform;
+
import org.eclipse.birt.data.engine.core.DataException;
+
import org.eclipse.birt.report.engine.api.EngineConfig;
+
import org.eclipse.birt.report.engine.api.EngineException;
+
import org.eclipse.birt.report.engine.api.IDataExtractionTask;
+
import org.eclipse.birt.report.engine.api.IDataIterator;
+
import org.eclipse.birt.report.engine.api.IExtractionResults;
+
import org.eclipse.birt.report.engine.api.IReportDocument;
+
import org.eclipse.birt.report.engine.api.IReportEngine;
+
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
+
import org.eclipse.birt.report.engine.api.IReportRunnable;
+
import org.eclipse.birt.report.engine.api.IResultMetaData;
+
import org.eclipse.birt.report.engine.api.IResultSetItem;
+
import org.eclipse.birt.report.engine.api.IRunTask;
+
+
+
public class DataExtract {
+
+
static void executeReport() throws EngineException
+
{
+
  IReportEngine engine=null;
+
  EngineConfig config = null;
+
  try{
+
  config = new EngineConfig( );
+
  config.setEngineHome( "C:/birt-runtime-2_1_1/birt-runtime-2_1_1/ReportEngine" );
+
  config.setLogConfig(null, Level.FINE);
+
+
  Platform.startup( config );
+
  IReportEngineFactory factory = (IReportEngineFactory) Platform
+
  .createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
+
  engine = factory.createReportEngine( config );
+
  engine.changeLogLevel( Level.WARNING );
+
+
  }catch( Exception ex){
+
  ex.printStackTrace();
+
  }
+
+
  //open the report design
+
  IReportRunnable design = null;
+
+
  design = engine.openReportDesign("C:/test/2.1/toc/TOCTest.rptdesign");
+
+
  //Create task to run the report - use the task to run the report,
+
  IRunTask task = engine.createRunTask(design);
+
+
  //Run the report and create the rptdocument
+
  task.run("c:/test/2.1/toc/TOCTest.rptdocument");
+
+
  //Open the rptdocument
+
  IReportDocument rptdoc = engine.openReportDocument("c:/test/2.1/toc/TOCTest.rptdocument");
+
+
  //Create the data extraction task
+
  IDataExtractionTask iDataExtract = engine.createDataExtractionTask(rptdoc);
+
+
  /**
+
  * returns the metadata corresponding to the data stored in the report
+
  * document.  Could specify a component.
+
  */
+
+
  ArrayList resultSetList = (ArrayList)iDataExtract.getResultSetList( );
+
+
  //Get the first result set.  Note this is a table elemenent
+
  IResultSetItem resultItem = (IResultSetItem)resultSetList.get( 0 );
+
+
  //Set the name of the element you want to retrieve. 
+
  //This will usually be ELEMENT_something if you do not name your elements.
+
  //If you name a table for example "MyTable"  this will be the resultset name
+
  String dispName = resultItem.getResultSetName( );
+
  iDataExtract.selectResultSet( dispName );
+
+
  IExtractionResults iExtractResults = iDataExtract.extract();
+
  IDataIterator iData = null;
+
+
  //Iterate the results
+
  try{
+
  if ( iExtractResults != null )
+
  {
+
    iData = iExtractResults.nextResultIterator( );
+
    //Get metadata on retrieved results
+
    IResultMetaData irmd = iData.getResultMetaData();
+
    if ( iData != null  ){
+
    int colCount = irmd.getColumnCount();
+
    System.out.println("Cloumn Count =" + colCount );
+
    for( int j=0; j< colCount; j++){
+
      System.out.println("Cloumn Name =" + irmd.getColumnName(j) );
+
      System.out.println("Cloumn Type =" + irmd.getColumnTypeName(j) );
+
    }
+
+
    while ( iData.next( ) )
+
    {
+
      //Just disply the first two columns
+
      Object objColumn1;
+
      Object objColumn2;
+
      try{
+
      objColumn1 = iData.getValue(0);
+
      }catch(DataException e){
+
      objColumn1 = new String("");
+
      }
+
      try{
+
      objColumn2 = iData.getValue(1);
+
      }catch(DataException e){
+
      objColumn2 = new String("");
+
      }
+
      System.out.println( objColumn1 + " , " + objColumn2 );
+
    }
+
    iData.close();
+
    }
+
  }
+
  }catch( Exception e){
+
  e.printStackTrace();
+
  }
+
  //close the task and showdown the engine and Platform
+
  //Note - If the program stays resident do not shutdown the Platform or the Engine 
+
  iDataExtract.close();
+
  engine.shutdown();
+
  Platform.shutdown();
+
  System.out.println("Finished");
+
}
+
+
+
public static void main(String[] args) {
+
  try
+
  {
+
  executeReport( );
+
  }
+
  catch ( Exception e )
+
  {
+
  e.printStackTrace();
+
  }
+
}
+
+
}
+
 
+
== Comments ==
+
Please enter comments below by selecting the edit icon to the right.
+
You will need a Bugzilla account to add comments.
+
 
+
----
+
'''This code is working for only first time. While running second time if we use same *. Rptdesign file its giving fallowing invalid design file error message. If we use new *. Rptdesign file then it will work fine. Means the code is modifying Rptdesign file. Can you please tell me how to solve this problem?'''
+
 
+
 
+
SEVERE: Line Number:1 Error Code:Error.XMLParserException.SAX_ERROR Exception:org.xml.sax.SAXParseException: Content is not allowed in prolog. Message:SAX detected an error with the basic XML syntax of the file.
+
Jun 6, 2007 9:57:55 AM org.eclipse.birt.report.engine.api.impl.ReportEngineHelper openReportDesign
+
SEVERE: invalid design file file:/D:/workspace/Simple/ZZZZ.rptdesign
+
org.eclipse.birt.report.engine.api.EngineException: The design file file:/D:/workspace/Simple/ZZZZ.rptdesign has error and can not be run.
+
at org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.openReportDesign(ReportEngineHelper.java:249)
+
at org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.openReportDesign(ReportEngineHelper.java:192)
+
at org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.openReportDesign(ReportEngineHelper.java:126)
+
at org.eclipse.birt.report.engine.api.impl.ReportEngine.openReportDesign(ReportEngine.java:222)
+
at SRC.ReportGenerator.saveCSVFormat(ReportGenerator.java:314)
+
at SRC.ReportGenerator.widgetSelected(ReportGenerator.java:240)
+
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
+
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
+
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
+
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
+
at SRC.ReportGenerator.runDemo(ReportGenerator.java:210)
+
at SRC.ReportGenerator.main(ReportGenerator.java:94)
+
Caused by: Error.DesignFileException.INVALID_XML - 2 errors found!
+
1.)  ( line = 1, tag = null) org.eclipse.birt.report.model.util.XMLParserException (code = Error.XMLParserException.SAX_ERROR, message : Line Number:1 Error Code:Error.XMLParserException.SAX_ERROR Exception:org.xml.sax.SAXParseException: Content is not allowed in prolog. Message:SAX detected an error with the basic XML syntax of the file. )
+
2.)  ( line = 1) org.xml.sax.SAXParseException (message : Content is not allowed in prolog.)
+
 
+
at org.eclipse.birt.report.model.parser.ModuleReader.readModule(ModuleReader.java:117)
+
at org.eclipse.birt.report.model.parser.DesignReader.read(DesignReader.java:90)
+
at org.eclipse.birt.report.model.core.DesignSession.openDesign(DesignSession.java:301)
+
at org.eclipse.birt.report.model.api.SessionHandle.openDesign(SessionHandle.java:292)
+
at org.eclipse.birt.report.engine.parser.ReportParser.getDesignHandle(ReportParser.java:157)
+
at org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.openReportDesign(ReportEngineHelper.java:244)
+
... 12 more
+

Latest revision as of 15:26, 4 October 2007

Moved to Data Extract (BIRT) 2.1

Back to the top