Hello i have a big problem with my Birt Designer Version 2.2.2
On my report i'm using a scripted data source, within this it calls a
java class that generates data from a table using a jdbc connection.
This java class returns a vector to my report.
Everything works fine within my report, i can us a table to give out the
data.
But if i'm using within a chart the scripted data set, the birt designer
crashs and does shut down my whole eclipse environment.
Sometimes the error happens on selecting the scripted data set and
sometimes i can select it, but if i try to run the report, eclipse and
the birt designer crash too.
my data set
Script:open
TimeTableGeneratedClass = new Packages.TimeTableGeneratedExtension();
timetable = TimeTableGeneratedClass.readData();
totalrows = timetable.size();
currentrow = 0;
Script:fetch
if( currentrow >= totalrows){
return(false);
}
var favrow = timetable.get(currentrow);
var test1 = favrow[0];
var test2 = favrow[1];
var test3 = favrow[2];
var test4 = favrow[3];
var test5 = favrow[4];
var test6 = favrow[5];
row["TIME_ID"]=test1;
row["TIMESTAMP_COL"]=test2;
row["DAY_COL"]=test3;
row["WEEK"]=test4;
row["MONTH_COL"]=test5;
row["YEAR_COL"]=test6;
currentrow = currentrow + 1;
return(true);
Script:close
TimeTableGeneratedClass = null;
timetable = null;
my java class seems to be fine
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
public class TimeTableGeneratedExtension
{
private String username = "";
private String password = "";
private ResultSet rs;
private Statement stmt;
public Vector readData(){
Vector rtnV = new Vector();
Connection con = null;
try {
Class.forName("com.ibm.db2.jcc.DB2Driver");
} catch (ClassNotFoundException exc) {
System.err.println("ERROR on loading DB2Driver:" +
exc.toString());
System.exit(1);
}
con = getConnection();
if(con !=null){
try {
try{
stmt = con.createStatement();
}catch(SQLException exc){
System.out.println("ERROR on creating statement:" +
exc.toString());
return null;
}
try{
rs = stmt.executeQuery("SELECT TIME_ID,
TIMESTAMP_COL, DAY_COL, WEEK, MONTH_COL, YEAR_COL FROM
COMMON_SNAPSHOT.TIME_TBL");
}catch(SQLException exc){
System.out.println("ERROR on executing query:" +
exc.toString());
return null;
}
while (rs.next()){
long timeid = rs.getLong("TIME_ID");
String timestampcol = rs.getString("TIMESTAMP_COL");
String daycol = rs.getString("DAY_COL");
String week = rs.getString("WEEK");
String monthcol = rs.getString("MONTH_COL");
String yearcol = rs.getString("YEAR_COL");
rtnV.add(new String[]{Long.toString(timeid),
timestampcol, daycol, week, monthcol, yearcol});
}
return (rtnV);
} catch (SQLException exc) {
return null;
}
}else{
return null;
}
}
public Connection getConnection(){
Connection con = null;
try {
String url = "jdbc:db2://localhost:50000/JAZZ";
con = DriverManager.getConnection(url, username, password);
return con;
} catch (SQLException exc) {
System.err.println("ERROR on creating connection:" +
exc.toString());
return con;
}
}
public static void main(String[] args)
{ TimeTableGeneratedExtension sc = new
TimeTableGeneratedExtension();
Vector rtn = sc.readData();
int t = 0;
for( int i=0; i<rtn.size(); i++ ){
String[] test = (String[])rtn.elementAt(i);
System.out.println(t++ +" " +test[0] +" "+ test[1] +" "+ test[2]
+ " " + test[3] + " " + test[4] + " " + test[5]);
}
}
}