Skip to main content

Notice: This Wiki is now read only and edits are no longer 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"

(Source)
(Replacing page with 'Moved to Data Extract (BIRT) 2.1')
 
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:\eclipseBIRT\eclipse\features\org.eclipse.birt.report.runtime_2.2.0.v20070529-7U7U-Cmz0UWCVvy52" );
+
  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:/temp/BIRT/acceptandorder.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:/temp/BIRT/acceptandorder.rptdocument");
+
+
  //Open the rptdocument
+
  IReportDocument rptdoc = engine.openReportDocument("C:/temp/BIRT/acceptandorder.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