hi,
first of all i'm new to BIRT so please excuse if i use the wrong vocab.
i have some huge problems with getting a ScriptedDataSetHandler to run.
i created a package "EvenHandler" which contains a DataSetEventHandler, a EventHandler for a ScriptedDataSet and another Handler just for testing. I think birt finds them but when i preview the report it runs only runs through the first evenhandler of the package.
for testings i tried to open a new frame in each of my evenhandlers but only in the frame of DataSetHandler_KundenUmsatz appears and I don't know why.
Structure:
EventHandler
DataSetHandler_KundenUmsatz.java
DataSetHandler_WawiProperties.java
testHandler.java
Code:
DataSetHandler_KundenUmsatz.java
package EventHandler;
import javax.swing.JFrame;
import org.eclipse.birt.report.engine.api.script.IDataSetRow;
import org.eclipse.birt.report.engine.api.script.IReportContext;
import org.eclipse.birt.report.engine.api.script.ScriptException;
import org.eclipse.birt.report.engine.api.script.eventadapter.DataSetEventAdapter;
import org.eclipse.birt.report.engine.api.script.instance.IDataSetInstance;
import OWawi.*;
/**
*
@author lukas
*
*/
public class DataSetHandler_KundenUmsatz extends DataSetEventAdapter {
//cntGlobVar zählt die gefundenen Elemente
private int cntLine = 0;
private OWawi.IWawiApp wawi;
private OWawi.IDatabase db;
@Override
public void beforeOpen(IDataSetInstance dataSet,
IReportContext reportContext) {
// TODO Auto-generated method stub
System.out.println("beforeOpen");
JFrame frame = new JFrame("beforeOpen Kundenumsatz");
frame.setSize(400, 400);
frame.setVisible(true);
//das WAWI-Objekt wird erstellt und der Mandant geöffnet
wawi = OWawi.ClassFactory.createWawiApp();
wawi.openMandant("ADMIN", "", 100);
wawi.waitInit(-1, -1, "beforeOpen");
//das Objekt der Datenbank wird erstellt
db =(IDatabase) wawi.datenbanken().getDBName("Mandant");
//super.beforeOpen(dataSet, reportContext);
}
@Override
public void onFetch(IDataSetInstance dataSet, IDataSetRow row, IReportContext reportContext) {
// TODO Auto-generated method stub
System.out.println("onFetch");
try {
//ID aus Tabelle einlesen
int id = (Integer) row.getColumnValue("ID");
wawi.waitInfo(-1, "onFetch");
//passendes Property auslesen
OWawi.IRecord value = db.createRecord("Adresse_Umsatzstat");
OWawi.ICursor curser = value.cursor();
curser.keyNumberInt(0);
Object[] safeArray = new Object[1];
safeArray[0] = id;
curser.setKey(safeArray);
curser.curr();
long temp =(Long) value.propByName2("Umsatz");
double umsatz = temp / 10000;
//Wert in entsprechende Variable sichern
//IdLine_<Zeilennummer>
reportContext.setGlobalVariable("IdLine_" + cntLine, umsatz);
cntLine++;
curser = null;
value = null;
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//super.onFetch(dataSet, row, reportContext);
}
@Override
public void afterClose(IReportContext reportContext) {
// TODO Auto-generated method stub
System.out.println("afterClose");
if (wawi != null) {
wawi.waitInfo(-1, "afterClose");
db = null;
wawi = null;
wawi.closeMandant();
}
//super.afterClose(reportContext);
}
}
DataSetHandler_WawiProperties.java
package EventHandler;
import javax.swing.JFrame;
import org.eclipse.birt.report.engine.api.script.IUpdatableDataSetRow;
import org.eclipse.birt.report.engine.api.script.ScriptException;
import org.eclipse.birt.report.engine.api.script.eventadapter.ScriptedDataSetEventAdapter;
import org.eclipse.birt.report.engine.api.script.instance.IDataSetInstance;
import OWawi.*;
/**
*
@author lukas
*
*/
public class DataSetHandler_WawiProperties extends ScriptedDataSetEventAdapter {
private OWawi.IWawiApp wawi;
private OWawi.IDatabase db;
@Override
public void open(IDataSetInstance dataSet) {
// TODO Auto-generated method stub
System.out.println("Open");
JFrame frame = new JFrame("Open WawiProperties");
frame.setSize(400, 400);
frame.setVisible(true);
//das WAWI-Objekt wird erstellt und der Mandant geöffnet
wawi = OWawi.ClassFactory.createWawiApp();
wawi.openMandant("ADMIN", "", 100);
wawi.waitInit(-1, -1, "Open");
//das Objekt der Datenbank wird erstellt
db =(IDatabase) wawi.datenbanken().getDBName("Mandant");
//super.open(dataSet);
}
@Override
public boolean fetch(IDataSetInstance dataSet, IUpdatableDataSetRow row) {
// TODO Auto-generated method stub
System.out.println("Fetch");
try {
row.setColumnValue("id", 5678);
} catch (ScriptException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
wawi.waitInfo(-1, "Fetch");
OWawi.IRecord value = db.createRecord("Adresse_Umsatzstat");
OWawi.ICursor curser = value.cursor();
curser.keyNumberInt(0);
Object[] safeArray = new Object[1];
safeArray[0] = 70344;
curser.setKey(safeArray);
curser.curr();
if (curser.status() == 0) {
try {
row.setColumnValue("ID", value.propByName2("ID"));
long temp = (Long) value.propByName2("Umsatz");
double umsatz = temp / 10000;
row.setColumnValue("Umsatz", umsatz);
row.setColumnValue("Datum", value.propByName2("Datum"));
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//row.setColumnValue("Datum", value.propByName2("Datum"));
curser = null;
value = null;
return true;
} else {
curser = null;
value = null;
return false;
}
//return super.fetch(dataSet, row);
}
@Override
public void close(IDataSetInstance dataSet) {
// TODO Auto-generated method stub
System.out.println("Close");
if (wawi != null) {
wawi.waitInfo(-1, "Close");
db = null;
wawi = null;
wawi.closeMandant();
}
//super.close(dataSet);
}
}
testHandler.java
ackage EventHandler;
import javax.swing.JFrame;
import org.eclipse.birt.report.engine.api.script.IReportContext;
import org.eclipse.birt.report.engine.api.script.eventadapter.DataSetEventAdapter;
import org.eclipse.birt.report.engine.api.script.instance.IDataSetInstance;
/**
*
@author lukas
*
*/
public class testHandler extends DataSetEventAdapter {
@Override
public void beforeOpen(IDataSetInstance dataSet,
IReportContext reportContext) {
// TODO Auto-generated method stub
JFrame frame = new JFrame("beforeOpen testHandler");
frame.setSize(400, 400);
frame.setVisible(true);
//super.beforeOpen(dataSet, reportContext);
}
}
i really need help!
can anbody please help me?
Lukas