Hi,
I am making Java program to run Birt report using Birt Engine 3.7.2 and have the problem to set the parameter values in order to run the report. Here is the part of the program. I am not sure what objects(String, object) should be in task.setParameterValue(String, Value).
//Part of the program
design = reportEngine.openReportDesign("../"+reportName);
task = reportEngine.createRunAndRenderTask(design);
p_task = reportEngine.createGetParameterDefinitionTask( design );
Collection params = p_task.getParameterDefns( true );
if (params.isEmpty()) {
System.out.println("No Parameter");
} else {
System.out.println("There are parameters");
Iterator iter = params.iterator( );
while ( iter.hasNext( ) ) {
IParameterDefnBase param = (IParameterDefnBase) iter.next( );
scalar = (IScalarParameterDefn) param;
//loadParameterDetails function is to return HasjMap with detailed parameters information
parmDetails.add(loadParameterDetails( p_task, scalar));
}
AbstractField f;
for(HashMap<String,String> entry : parmDetails) {
System.err.println("Name = " + entry.get("Name")+" and Prompt Text: "+entry.get("Prompt Text"));
String type = entry.get("Data Type");
if("Date Time".equals(type)) {
f = new PopupDateField(); //Input field will created on pop up screen
f.addListener(new DateTimeListener(entry.get("Name")));
} else {
f = new TextField();//Input field will created on pop up screen
f.addListener(new StringListener(entry.get("Name")));
}
f.setCaption(entry.get("Prompt Text"));
f.setRequired(entry.get("Is Required").equals("Yes"));
sub_layout.addComponent(f);//Popup screen layout to add the fields
}
}
runButton = new Button();
runButton.setCaption("Run Report");
runButton.addListener(new runReportListener());
sub_layout.addComponent(runButton);
subWindow.addComponent(sub_layout);
class StringListener implements Property.ValueChangeListener {
private String propertyName;
public void valueChange(ValueChangeEvent event) {
System.out.println("Para Name: "+this.propertyName +"; Field Value : "+event.getProperty().getValue());
task.setParameterValue(this.propertyName, event.getProperty().getValue());
}
public StringListener(String propertyName) {
this.propertyName = propertyName;
}
}
class DateTimeListener implements Property.ValueChangeListener {
private String propertyName;
public void valueChange(ValueChangeEvent event) {
task.setParameterValue(this.propertyName, event.getProperty().getValue());
}
public DateTimeListener(String propertyName) {
this.propertyName = propertyName;
}
}
class runReportListener implements ClickListener {
public void buttonClick(ClickEvent event) {
System.out.println("Button is clicked");
System.out.println("Box Value: "+box.getValue());
//box is the Radio Group with values either PDF or Excel
if ("PDF".equals(box.getValue())) {
PDFRenderOption options = new PDFRenderOption();
options.setOutputFileName("test.pdf");
options.setSupportedImageFormats("PNG;GIF;JPG;BMP;SWF;SVG");
options.setOutputFormat("pdf");
task.setRenderOption(options);
} else if ("Excel".equals(box.getValue())) {
System.out.println("Output is Excel"+box.getValue());
//Should do Excel formet
}
try {
task.run();
} catch (Exception e ) {
e.printStackTrace();
}
p_task.close();
task.close();
}
}
//Part of the error message from the Console
Para Name: ProjectNumber; Field Value : CP1234
Button is clicked.
Box Value: PDF
java.lang.NullPointerException
at org.eclipse.birt.core.framework.jar.ServiceLauncher$1.getRegistry(ServiceLauncher.java:88)
at org.eclipse.core.runtime.RegistryFactory.getRegistry(RegistryFactory.java:72)
at org.eclipse.core.runtime.Platform.getExtensionRegistry(Platform.java:913)
at org.eclipse.birt.core.internal.plugin.ScriptEngineFactoryManagerImpl.<init>(ScriptEngineFactoryManagerImpl.java:35)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at org.eclipse.birt.core.script.ScriptEngineFactoryManager.getInstance(ScriptEngineFactoryManager.java:48)
at org.eclipse.birt.core.script.ScriptContext.getScriptEngine(ScriptContext.java:223)
at org.eclipse.birt.report.engine.adapter.ModelDteApiAdapter.<init>(ModelDteApiAdapter.java:178)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.<init>(AbstractDataEngine.java:109)
at org.eclipse.birt.report.engine.data.dte.DteDataEngine.<init>(DteDataEngine.java:85)
at org.eclipse.birt.report.engine.data.DataEngineFactory.createDataEngine(DataEngineFactory.java:115)
at org.eclipse.birt.report.engine.executor.ExecutionContext.openDataEngine(ExecutionContext.java:883)
at org.eclipse.birt.report.engine.executor.ExecutionContext.getDataEngine(ExecutionContext.java:900)
at org.eclipse.birt.report.engine.executor.ReportExecutor.execute(ReportExecutor.java:122)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:60)
at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplciateReportExecutor.execute(SuppressDuplciateReportExecutor.java:42)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:60)
at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportExecutor.execute(LocalizedReportExecutor.java:61)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:178)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
at com.example.test.TestComponent$runReportListener.buttonClick(TestComponent.java:248)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:512)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1219)
at com.vaadin.ui.Button.fireClick(Button.java:550)
at com.vaadin.ui.Button.changeVariables(Button.java:217)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.changeVariables(AbstractCommunicationManager.java:1445)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1393)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1312)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:763)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:96)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:156)
at com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:95)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:289)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:811)
at com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:1215)
at com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:1171)
at com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:1155)
at com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:1078)
at com.caucho.network.listen.TcpSocketLink.handleAcceptTask(TcpSocketLink.java:907)
at com.caucho.network.listen.AcceptTask.doTask(AcceptTask.java:74)
at com.caucho.network.listen.ConnectionTask.runThread(ConnectionTask.java:97)
at com.caucho.network.listen.ConnectionTask.run(ConnectionTask.java:80)
at com.caucho.network.listen.AcceptTask.run(AcceptTask.java:59)
at com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
at com.caucho.env.thread.ResinThread.run(ResinThread.java:130)
org.eclipse.birt.report.engine.api.EngineException: Cant create data engine.[12-04-06 12:27:00.487] {
http://*:8080-11} An error happened while running the report. Cause:
org.eclipse.birt.report.engine.api.EngineException: Cant create data engine.
at org.eclipse.birt.report.engine.executor.ExecutionContext.openDataEngine(ExecutionContext.java:888)
at org.eclipse.birt.report.engine.executor.ExecutionContext.getDataEngine(ExecutionContext.java:900)
at org.eclipse.birt.report.engine.executor.ReportExecutor.execute(ReportExecutor.java:122)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:60)
at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplciateReportExecutor.execute(SuppressDuplciateReportExecutor.java:42)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:60)
at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportExecutor.execute(LocalizedReportExecutor.java:61)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:178)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
at com.example.test.TestComponent$runReportListener.buttonClick(TestComponent.java:248)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:512)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1219)
at com.vaadin.ui.Button.fireClick(Button.java:550)
at com.vaadin.ui.Button.changeVariables(Button.java:217)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.changeVariables(AbstractCommunicationManager.java:1445)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1393)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1312)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:763)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:96)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:156)
at com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:95)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:289)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:811)
at com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:1215)
at com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:1171)
at com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:1155)
at com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:1078)
at com.caucho.network.listen.TcpSocketLink.handleAcceptTask(TcpSocketLink.java:907)
at com.caucho.network.listen.AcceptTask.doTask(AcceptTask.java:74)
at com.caucho.network.listen.ConnectionTask.runThread(ConnectionTask.java:97)
at com.caucho.network.listen.ConnectionTask.run(ConnectionTask.java:80)
at com.caucho.network.listen.AcceptTask.run(AcceptTask.java:59)
at com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
at com.caucho.env.thread.ResinThread.run(ResinThread.java:130)
Caused by: java.lang.NullPointerException
at org.eclipse.birt.core.script.ScriptContext.getScriptEngine(ScriptContext.java:224)
at org.eclipse.birt.report.engine.adapter.ModelDteApiAdapter.<init>(ModelDteApiAdapter.java:178)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.<init>(AbstractDataEngine.java:109)
at org.eclipse.birt.report.engine.data.dte.DteDataEngine.<init>(DteDataEngine.java:85)
at org.eclipse.birt.report.engine.data.DataEngineFactory.createDataEngine(DataEngineFactory.java:115)
at org.eclipse.birt.report.engine.executor.ExecutionContext.openDataEngine(ExecutionContext.java:883)
... 41 more
at org.eclipse.birt.report.engine.executor.ExecutionContext.openDataEngine(ExecutionContext.java:888)
at org.eclipse.birt.report.engine.executor.ExecutionContext.getDataEngine(ExecutionContext.java:900)
at org.eclipse.birt.report.engine.executor.ReportExecutor.execute(ReportExecutor.java:122)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:60)
at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplciateReportExecutor.execute(SuppressDuplciateReportExecutor.java:42)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:60)
at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportExecutor.execute(LocalizedReportExecutor.java:61)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:178)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
at com.example.test.TestComponent$runReportListener.buttonClick(TestComponent.java:248)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:512)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1219)
at com.vaadin.ui.Button.fireClick(Button.java:550)
at com.vaadin.ui.Button.changeVariables(Button.java:217)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.changeVariables(AbstractCommunicationManager.java:1445)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1393)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1312)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:763)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:96)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:156)
at com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:95)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:289)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:811)
at com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:1215)
at com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:1171)
at com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:1155)
at com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:1078)
at com.caucho.network.listen.TcpSocketLink.handleAcceptTask(TcpSocketLink.java:907)
at com.caucho.network.listen.AcceptTask.doTask(AcceptTask.java:74)
at com.caucho.network.listen.ConnectionTask.runThread(ConnectionTask.java:97)
at com.caucho.network.listen.ConnectionTask.run(ConnectionTask.java:80)
at com.caucho.network.listen.AcceptTask.run(AcceptTask.java:59)
at com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
at com.caucho.env.thread.ResinThread.run(ResinThread.java:130)
Caused by: java.lang.NullPointerException
at org.eclipse.birt.core.script.ScriptContext.getScriptEngine(ScriptContext.java:224)
at org.eclipse.birt.report.engine.adapter.ModelDteApiAdapter.<init>(ModelDteApiAdapter.java:178)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.<init>(AbstractDataEngine.java:109)
at org.eclipse.birt.report.engine.data.dte.DteDataEngine.<init>(DteDataEngine.java:85)
at org.eclipse.birt.report.engine.data.DataEngineFactory.createDataEngine(DataEngineFactory.java:115)
at org.eclipse.birt.report.engine.executor.ExecutionContext.openDataEngine(ExecutionContext.java:883)
I guess the error caused by parameter setting values.
Thank you in advance!
Richard