|
|
(One intermediate revision by the same 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
| + | |