目录

接口类介绍

6.3.1. 接口类介绍

  1. Function

    类说明:

    com.runqian.report4.model.engine.Function是各功能函数的基类,它有抽象的calculate ()方法需要用户实现。在润乾内置的功能函数中,典型的有获得系统当前时间的now()、将对象转换成字符型、转换过程中可以进行格式化的string()等。继承本类的函数的特点是运算过程不依赖于数据集。

    主要方法:

    语 法: public abstract java.lang.Object calculate(Context ctx, boolean inputValue)

    参数说明: Context ctx-报表运行时的上下文 Boolean inputValue –是否来自填报数据

    功能说明: 系统在运算报表时,将会自动调用calculate()来计算表达式,并返回计算结果。

    示 例:

    public Object calculate(Context context, boolean inputValue) { // 这是调用用户的方法,你也可以调用你自己的方法 //return generateUUID(); //直接返回字符串nortan return "nortan"; }

  2. DSFunction

    类说明:

    com.runqian.report4.model.engine.DSFunction是各数据集操作函数的基类,它由Function继承而来,主要完成对数据集的操作。润乾的内置函数典型的有:对从当前数据组中选取符合条件记录的datasetName.select( <select_exp>[, desc_exp, filter_exp, sort_exp] )函数、根据分组表达式,从数据集中选出一组组集的datasetName.group( <selectExp>, , <filterExp> )函数等。它的特点是运算过程中,必须依赖于数据集。

    主要方法:

    语 法: public abstract java.lang.Object calculate()

    功能说明: 与Function类的calculate()同

    语 法: public void setDS(DataSet ds)

    功能说明: 设置所操作的数据集对象

    示 例:

    DataSet ds = getDataSet();//getDataSet方法具体实现略,取得数据集 //设置数据集,并取得数据集操作对象Group this.setDs( ds ); Group group = this.ds.getCurrentGroup();

  3. 其它重要类

    在自定义函数中,常常需要输入一定的参数进行运算,如在=count2(B2{})中,B2{}是一个参数,它表达由B2单元格扩展出来的集合。参数实际上就是一个表达式,表达式在程序中用类com.runqian.report4.model.engine.Expression来表示。

    它有一个重要的方法:

    语 法: public java.lang.Object calculate(Context ctx, boolean inputValue)

    功能说明: 运算参数表达式。

    参数说明: ctx - 运算报表时的上下文环境变量 inputValue - 是否是填报值

    Returns: 运算结果 在自定义函数的例子中我们看到了Expression的计算结果还要通过Variant2的静态方法getValue()来获取实际的值,因为每个表达式Expression和Node计算后都是一个结构,可能是单元格ICell,可能是数据组Group,可能是数据行Row,还有很多种可能,Variant2.getValue()的意思就是取Expression计算后存储于特定结构中的值。