数据集工厂侦听器类
◆ 背景说明
数据集工厂侦听器类是在数据集创建前、创建后由用户进行业务处理的类,常见的用法是:数据集创建前往数据库里创建临时表,或者调用某个存储过程;数据集创建后删除数据库里的临时表或者调用某个存储过程。
因此,总体来说,数据集监听类主要用于数据集创建前后对数据库进行业务操作。
所以,数据集监听类最常用的API主要是获取系统数据库连接、获取报表参数、获取session信息等
◆ 代码示例
package ......; //指定类路径
import com.raqsoft.report.usermodel.*;
import ...... ; //其他需要引入的类包
public class MyDatasetListener implements IDataSetFactoryListener{ //实现IDataSetFactoryListener接口
public void beforeCreated( Context ctx, DataSetConfig dsc, DataSet ds ){ //数据集产生之前执行的方法
//获得系统默认数据源的连接对象
Connection con=ctx.getConnectionFactory(context.getDefDataSourceName()).getConnection();
//String dataSource=……; //指定数据源名称
//Connection con=ctx.getConnectionFactory(dataSource).getConnection(); //获得指定数据源的连接对象
Map params=ctx.getParamMap(false); //获得当前报表的参数
javax.servlet.http.HttpSession session=ctx.getHttpSession(); //获得session,从而可以得到用户信息
//........ //主体代码,例如整理数据库等
}
public void afterCreated( Context ctx, DataSetConfig dsc, DataSet ds ){ //数据集产生之后执行的方法
}
}
数据集工厂过滤器类
◆ 背景说明
数据集工厂过滤器类是在计算数据集时,如果设定了过滤类,则在生成数据集的每一条记录时都会做判断。
因此,总体来说,数据集工厂过滤器类主要用于在数据集计算过程中对记录进行业务操作。
◆ 代码示例
package api; //指定类路径
import java.sql.Connection;
import …… //其他需要引入的类包
public class datasetFiltertest implements IDataSetFilter{ //实现IDataSetFilter接口
//数据库返回ResultSet之后对每条记录进行过滤,该行数据满足条件返回true,否则返回false
public boolean filter(Object[] arg0) {
StringBuffer sb = new StringBuffer();
//主体代码,循环获取当前记录
for(int i=0;i<arg0.length;i++){
……
}
int id = Integer.parseInt(arg0[0].toString());
if(id>10800){
return true;
}else{
return false;
}
}
public void setContext(Context arg0) { //设定上下文环境
}
public void setDataSet(DataSet arg0) { //设定数据集,以在过滤时获取相关信息
}
public void setDataSetConfig(DataSetConfig arg0) { //设定数据集配置信息
}
}
参考文件:datasetFiltertest.java