iDataExtract.getResultSetList() gives empty list [message #1386679] |
Thu, 19 June 2014 08:17  |
Eclipse User |
|
|
|
Hi, I try to get a list of results according to the documentation, but for some reason I am getting empty ArrayList of results though reports shows results, and I can get normal file using web viewer.
rptdocument is not empty though it is full of not readable characters and I am not sure whether it has data or not.
My code is below + I am attaching rpt document
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.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:\\Users\\hpsa\\workspace\\My Reports\\new_report_1.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:\\Users\\hpsa\\workspace\\My Reports\\new_report_1.rptdocument");
//Open the rptdocument
IReportDocument rptdoc = engine.openReportDocument("C:\\Users\\hpsa\\workspace\\My Reports\\new_report_1.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( );
if ( iData != null ){
//Get metadata on retrieved results
IResultMetaData irmd = iData.getResultMetaData();
int colCount = irmd.getColumnCount();
System.out.println("Column Count =" + colCount );
for( int j=0; j< colCount; j++){
System.out.println("Column Name =" + irmd.getColumnName(j) );
System.out.println("Column 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.destroy();
Platform.shutdown();
System.out.println("Finished");
}
public static void main(String[] args) {
try
{
executeReport( );
}
catch ( Exception e )
{
e.printStackTrace();
}
}
}
[Updated on: Fri, 20 June 2014 06:41] by Moderator
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.02975 seconds