Bonsoir,
J'ai crée un simple rapport avec birt sous eclipse et je fais l'intégration dans une classe java.
Voilà le code :
package Package1;
import
java.util.HashMap; import
java.util.logging.Level; import
org.eclipse.birt.core.framework.Platform; import
org.eclipse.birt.report.engine.api.EngineConfig; import
org.eclipse.birt.report.engine.api.EngineConstants; import
org.eclipse.birt.report.engine.api.EngineException; import
org.eclipse.birt.report.engine.api.HTMLActionHandler; import
org.eclipse.birt.report.engine.api.HTMLRenderOption; import
org.eclipse.birt.report.engine.api.HTMLServerImageHandler; import
org.eclipse.birt.report.engine.api.HTMLCompleteImageHandler; 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.IRunAndRenderTask; import
org.eclipse.birt.report.engine.api.impl.EngineTask; import
org.eclipse.birt.report.engine.api.impl.EngineTask; import
org.eclipse.birt.report.engine.api.impl.RunTask; import
org.eclipse.birt.report.engine.api.impl.RunAndRenderTask; import
org.eclipse.birt.report.engine.emitter.*;
public
class ExecuteReport {
public void runReport() throws EngineException {
IReportEngine engine=
null ; EngineConfig config =
null ;
try { System.setProperty(
"java.io.tmpdir" , "c:/temp/test/testsampledb" ); config =
new EngineConfig( ); config.setBIRTHome(
"E:\\2008\\birt-runtime-2_2_2\\birt-runtime-2_2_2\\ReportEngine" ); config.setLogConfig(
"c:/temp/test" , Level. ALL ); Platform.startup( config );
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject( IReportEngineFactory.
EXTENSION_REPORT_ENGINE_FACTORY ); engine = factory.createReportEngine( config );
IReportRunnable design =
null ;
design = engine.openReportDesign(
"C:/Documents and Settings/Administrateur/Travail/MonPremier/src/Package1/TopNPercent.rptdesign" );
IRunAndRenderTask task = engine.createRunAndRenderTask(design);
task.setParameterValue(
"Top Percentage" , ( new Integer(3)));; task.setParameterValue(
"Top Count" , ( new Integer(5))); task.validateParameters();
HTMLRenderOption options =
new HTMLRenderOption(); options.setOutputFileName(
"ListePro.html" ); options.setOutputFormat(
"html" ); CancelReport cancelThread =
new CancelReport( "cancelReport" , task); cancelThread.start();
long beginTime = System.currentTimeMillis(); task.run();
long endTime = System.currentTimeMillis();
long timeSpan = endTime - beginTime; System.
out .println( "Report Runtime: " + timeSpan);
int teststatus = task.getStatus();
if ( teststatus == 4){ System.
out .println( "Report was cancelled" ); }
task.close();
//Create task to run and render the report, task = engine.createRunAndRenderTask(design);
task.setParameterValue(
"Top Percentage" , ( new Integer(3))); task.setParameterValue(
"Top Count" , ( new Integer(5))); task.validateParameters();
task.setRenderOption(options);
beginTime = System.currentTimeMillis();
task.run();
endTime = System.currentTimeMillis();
timeSpan = endTime - beginTime;
System.
out .println( "Report Runtime: " + timeSpan); teststatus = task.getStatus();
if ( teststatus == 2){ System.
out .println( "Report Completed" ); }
task.close();
engine.shutdown();
engine.destroy();
}
catch ( Exception ex){ ex.printStackTrace();
}
finally {
Platform.shutdown( );
System.
out .println( "Finished" ); }
}
/**
* @param args
*/
public static void main(String[] args) {
try {
ExecuteReport ex =
new ExecuteReport( ); ex.runReport();
}
catch ( Exception e ) {
e.printStackTrace();
}
}
private class CancelReport extends Thread {
private IRunAndRenderTask rTask ;
public CancelReport( String threadName, IRunAndRenderTask task){
super (threadName);
rTask = task; }
public void run() {
try { Thread.currentThread().sleep( 100 );
rTask .cancel(); System.
out .println( "######Report Cancelled#######" ); }
catch (Exception e) {
e.printStackTrace();
}
}
}
}
et voilà le message d'erreur:
7 janv. 2009 14:34:58 org.eclipse.birt.report.engine.api.impl.RunAndRenderTask doRun
GRAVE: An error happened while running the report. Cause:
java.lang.NullPointerException
at org.eclipse.birt.report.engine.api.impl.EngineTask.createContentEmitter(
EngineTask.java:1060) at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(
RunAndRenderTask.java:88) at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(
RunAndRenderTask.java:68) at Package1.ExecuteReport.runReport(
ExecuteReport.java:69) at Package1.ExecuteReport.main(
ExecuteReport.java:113)org.eclipse.birt.report.engine.api.EngineException
: Error happened while running the report at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(
RunAndRenderTask.java:155) at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(
RunAndRenderTask.java:68) at Package1.ExecuteReport.runReport(
ExecuteReport.java:69) at Package1.ExecuteReport.main(
ExecuteReport.java:113) Caused by:
java.lang.NullPointerExceptionat org.eclipse.birt.report.engine.api.impl.EngineTask.createContentEmitter(
EngineTask.java:1060) at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(
RunAndRenderTask.java:88) ... 3 more
######Report Cancelled#######
Finished
j'attends vos réponses.
Merci d'avance.