自定义用户工厂

用途

提供对用户自定义功能的调用。

皕杰API为用户提供了用户工厂接口,通过这个接口,用户可以实现自定义html工具条输出、读取完成扩展计算后的报表对象(即序列化brf文件)和自定义报表来源(在皕杰报表中,服务器默认的是从report_home指定的路径来读取报表模板)等。

自定工厂有以下几种接口

1、IReportFactory
接口介绍

报表工厂。用户可实现该接口bios.report.api.factory.IReportFactory,来自定义系统运行时报表模板以及报表运算结果的处理方式。

方法说明

supportsLoadReportTemplate

用途:开关方法,是否支持自定义读取报表模板

语法:boolean supportsLoadReportTemplate()

返回值:返回true时,loadReportTemplate方法起效。

loadReportTemplate

用途:根据指定名称获取报表模板文件的输入流,supportsLoadReportTemplate方法返回true时,该方法起效。

语法:java.io.InputStream loadReportTemplate(java.lang.String templateName)

参数:templateName - 模板名称,可以是文件名或用户自定义标识等,对应应用中的请求参数"rpt"

返回值:模板文件输入流,返回null时将继续使用系统默认方式加载报表模板

loadBrf

用途:读取报表序列化brf文件(完成扩展计算后的报表对象),brf文件可使用BiosReportManager的toBrf方法创建。

语法:java.io.InputStream loadBrf(java.lang.String brfId, boolean rfsCache)

参数:brfId - 报表对应的brf文件ID,对应应用中的请求参数"rpt"("brf"参数值为true的情况下)

rfsCache - 是否刷新brf文件缓存

返回值:brf文件流。

loadBrd

用途:读取包含报表数据集缓存的brd文件,brd文件可使用BiosReportManager的saveCacheDataSet方法创建

语法:java.io.InputStream loadBrd(java.lang.String brdId, boolean rfsCache)

参数:brdId - 数据集缓存brd文件ID,对应应用中的请求参数"brd"

rfsCache - 是否刷新数据集缓存内容

返回值:brd文件输入流

supportsBuildReport

用途:开关方法,是否支持自定义报表计算

语法:boolean supportsBuildReport()

返回值:返回true时,buildReport方法起效

buildReport

用途:自定义报表的加载和计算处理,可以使用BiosReportManager类来完成计算操作

语法:java.lang.Object buildReport(java.lang.String rpt, java.lang.String params, java.lang.String vars)

参数:rpt - 报表模板路径或ID,对应应用中的请求参数"rpt"

params - 报表所需的参数字符串,对应应用中的请求参数"params",(格式:param1=xx;param2=yy;...)

vars - 报表所需的变量字符串,对应应用中的请求参数"vars",(格式:var1=xx;var2=yy;...)

返回值:计算完成的报表结果 BiosReportManager.getRptObject()

supportsLoadBizModel

用途:开关方法,是否支持自定义读取语义文件

语法:boolean supportsLoadBizModel()

返回值:返回true时,loadBizModel方法起效

loadBizModel

用途:根据指定名称获取语义文件的输入流 supportsLoadBizModel()方法返回true时,该方法才生效

语法:java.io.InputStream loadBizModel(java.lang.String bizModelName)

参数:bizModelName - 报表模板中引用的语义定义名称

返回值:语义文件输入流

使用操作

这个监听只用于web项目端:

1、将设计好的监听类加载到web项目上

一是将编译好的.class文件打成jar包,将jar包放到WEB-INF/lib目录下;

二是将. class文件放到WEB-INF/classes。

2、然后在WEB-INF\resources\congfig.xml里修改<reportFactory>节点值为监听类的全路径

<!-- 用户自定义接口配置,包括工厂、事件等 -->
<userDef>
<!-- <reportFactory></reportFactory> --> <!-- 报表工厂,用于自定义报表加载和计算等 --> <!-- <dataSourceFactory></dataSourceFactory>--> <!-- 自定义数据源工厂,用于通过自定义的方式获取报表数据源 --> <!-- <toolbarFactory></toolbarFactory> --> <!-- 工具条工厂,用于自定义html工具条 --> <!-- <toolbarButtonFactory></toolbarButtonFactory> --> <!-- 工具条按钮工厂,用于替换html工具条上的一些按钮 --> <!-- <printEventListener></printEventListener> --> <!-- 打印事件监听器 --> <!-- <fillinEventListener></fillinEventListener> --> <!-- 填报事件监听器 --> <!-- <exportEventListener></exportEventListener> --> <!-- 报表导出事件监听器 --> <!-- <reportLogHandler></reportLogHandler> --> <!-- 自定义报表日志输出处理器,在报表系统日志的基础上,增加其他日志记录方式 --> </userDef>
2、IToolbarFactory
接口介绍

工具条工厂。用户可实现该接口bios.report.api.factory.IToolbarFactory,自定义展现报表在html页面上的工具条,以替代默认工具条。

方法说明

buildToolbarHtml

用途:自定义html工具条输出

语法:java.lang.String buildToolbarHtml(javax.servlet.http.HttpServletRequest request, ReportMark rptMark, ToolbarInfo toolbarInfo)

参数:request - 当前的http请求

rptMark - 正在运行的报表标识,可从中获取报表名称、参数和变量等数据

toolbarInfo - 输出工具条html代码所需的各种相关信息(页码,参数等)

返回值:工具条的html代码。返回null时,该方法无效,将使用系统默认工具条。

使用操作

这个监听只用于web项目端:

1、将设计好的监听类加载到web项目上

一是将编译好的.class文件打成jar包,将jar包放到WEB-INF/lib目录下;

二是将. class文件放到WEB-INF/classes。

2、然后在WEB-INF\resources\congfig.xml里修改<toolbarFactory>节点值为监听类的全路径

<!-- 用户自定义接口配置,包括工厂、事件等 -->
<userDef>
<!-- <reportFactory></reportFactory> --> <!-- 报表工厂,用于自定义报表加载和计算等 --> <!-- <dataSourceFactory></dataSourceFactory>--> <!-- 自定义数据源工厂,用于通过自定义的方式获取报表数据源 --> <!-- <toolbarFactory></toolbarFactory> --> <!-- 工具条工厂,用于自定义html工具条 --> <!-- <toolbarButtonFactory></toolbarButtonFactory> --> <!-- 工具条按钮工厂,用于替换html工具条上的一些按钮 --> <!-- <printEventListener></printEventListener> --> <!-- 打印事件监听器 --> <!-- <fillinEventListener></fillinEventListener> --> <!-- 填报事件监听器 --> <!-- <exportEventListener></exportEventListener> --> <!-- 报表导出事件监听器 --> <!-- <reportLogHandler></reportLogHandler> --> <!-- 自定义报表日志输出处理器,在报表系统日志的基础上,增加其他日志记录方式 --> </userDef>
3、IDataSourceFactory
接口介绍

数据源工厂,用户可通过实现该接口bios.report.api.factory.IDataSourceFactory中的方法,来自定义获取报表数据源。

方法说明

getDbDataSource

用途:获取数据库类型的数据源

语法:DataSourceEntity getDbDataSource(java.lang.String dsName)

参数:dsName - 数据源名称,与设计器中的名称一致,默认数据源的名称为"default"

返回值:数据库类型的数据源实体对象。

getXmlDataSource

用途:根据数据源名称,和xml定义名称,获取xml数据源信息。

语法:DataSourceEntity getXmlDataSource(java.lang.String dsName, java.lang.String xmlDefName)

参数:dsName - 数据源名称,与设计器中一致

xmlDefName - 所选的xml定义名称,与设计器中一致

返回值:xml类型的数据源实体对象

getWsDataSource

用途:根据数据源名称,获取WebService数据源所需的WSDL路径。

语法:DataSourceEntity getWsDataSource(java.lang.String dsName)

参数:dsName - 数据源名称,与设计器中一致

返回值:WebService类型的数据源实体对象

使用操作

这个监听只用于web项目端:

1、将设计好的监听类加载到web项目上

一是将编译好的.class文件打成jar包,将jar包放到WEB-INF/lib目录下;

二是将. class文件放到WEB-INF/classes。

2、然后在WEB-INF\resources\congfig.xml里修改<dataSourceFactory>节点值为监听类的全路径

<!-- 用户自定义接口配置,包括工厂、事件等 -->
<userDef>
<!-- <reportFactory></reportFactory> --> <!-- 报表工厂,用于自定义报表加载和计算等 --> <!-- <dataSourceFactory></dataSourceFactory>--> <!-- 自定义数据源工厂,用于通过自定义的方式获取报表数据源 --> <!-- <toolbarFactory></toolbarFactory> --> <!-- 工具条工厂,用于自定义html工具条 --> <!-- <toolbarButtonFactory></toolbarButtonFactory> --> <!-- 工具条按钮工厂,用于替换html工具条上的一些按钮 --> <!-- <printEventListener></printEventListener> --> <!-- 打印事件监听器 --> <!-- <fillinEventListener></fillinEventListener> --> <!-- 填报事件监听器 --> <!-- <exportEventListener></exportEventListener> --> <!-- 报表导出事件监听器 --> <!-- <reportLogHandler></reportLogHandler> --> <!-- 自定义报表日志输出处理器,在报表系统日志的基础上,增加其他日志记录方式 --> </userDef>
4、DataSourceFactoryAdapter
接口介绍

数据源工厂适配器,为IDataSourceFactory接口中描述的方法提供了缺省实现,方便用户快捷继承(仅对需要的方法做实现即可)。 用户可通过实现该类bios.report.api.factory.DataSourceFactoryAdapter中的方法。

方法说明

getDbDataSource

用途:获取数据库类型的数据源

语法:public DataSourceEntity getDbDataSource(java.lang.String dsName)

指定者:接口 IDataSourceFactory 中的 getDbDataSource

参数:dsName - 数据源名称,与设计器中的名称一致,默认数据源的名称为"default"

返回值:数据库类型的数据源实体对象。

getXmlDataSource

用途:根据数据源名称,和xml定义名称,获取xml数据源信息。

语法:DataSourceEntity getXmlDataSource(java.lang.String dsName, java.lang.String xmlDefName)

指定者:接口 IDataSourceFactory 中的 getXmlDataSource

参数:dsName - 数据源名称,与设计器中一致

xmlDefName - 所选的xml定义名称,与设计器中一致

返回值:xml类型的数据源实体对象

getWsDataSource

用途:根据数据源名称,获取WebService数据源所需的WSDL路径。

语法:DataSourceEntity getWsDataSource(java.lang.String dsName)

指定者:接口 IDataSourceFactory 中的 getWsDataSource

参数:dsName - 数据源名称,与设计器中一致

返回值:WebService类型的数据源实体对象

使用操作

这个监听只用于web项目端:

1、将设计好的监听类加载到web项目上

一是将编译好的.class文件打成jar包,将jar包放到WEB-INF/lib目录下;

二是将. class文件放到WEB-INF/classes。

2、然后在WEB-INF\resources\congfig.xml里修改<dataSourceFactory>节点值为监听类的全路径

<!-- 用户自定义接口配置,包括工厂、事件等 -->
<userDef>
<!-- <reportFactory></reportFactory> --> <!-- 报表工厂,用于自定义报表加载和计算等 --> <!-- <dataSourceFactory></dataSourceFactory>--> <!-- 自定义数据源工厂,用于通过自定义的方式获取报表数据源 --> <!-- <toolbarFactory></toolbarFactory> --> <!-- 工具条工厂,用于自定义html工具条 --> <!-- <toolbarButtonFactory></toolbarButtonFactory> --> <!-- 工具条按钮工厂,用于替换html工具条上的一些按钮 --> <!-- <printEventListener></printEventListener> --> <!-- 打印事件监听器 --> <!-- <fillinEventListener></fillinEventListener> --> <!-- 填报事件监听器 --> <!-- <exportEventListener></exportEventListener> --> <!-- 报表导出事件监听器 --> <!-- <reportLogHandler></reportLogHandler> --> <!-- 自定义报表日志输出处理器,在报表系统日志的基础上,增加其他日志记录方式 --> </userDef>
5、ToolbarButtonFactory
接口介绍

自定义工具条按钮工厂。用户可根据需要重载该工厂bios.report.api.factory.ToolbarButtonFactory的若干方法,替换html工具条上的按钮,或增加新的按钮。

字段信息

protected javax.servlet.http.HttpServletRequest request 当前的http请求

protected ReportMark reportMark 正在运行的报表标识,可从中获取报表名称、参数和变量等数据

protected ToolbarInfo toolbarInfo 包含了输出工具条html代码所需的各种相关信息(页码,参数等)

方法说明

init

用途:初始化方法,系统加载时会自动调用

语法:public final void init(javax.servlet.http.HttpServletRequest request, ReportMark rptMark, ToolbarInfo toolbarInfo)

replacePaginateArea

用途:自定义工具条中的翻页按钮区域。用户需要通过重载该方法来完成自定义功能。

语法:public java.lang.String replacePaginateArea()

返回值:翻页按钮区域的html代码,返回null时表示使用默认按钮

replaceExportExcelButton1

用途:自定义工具条中的导出整页Excel按钮。用户需要通过重载该方法来完成自定义功能。

语法:public java.lang.String replaceExportExcelButton1()

返回值:导出整页Excel按钮的html代码,返回null时表示使用默认按钮。

replaceExportExcelButton2

用途:自定义工具条中的导出分页Excel按钮。用户需要通过重载该方法来完成自定义功能

语法:public java.lang.String replaceExportExcelButton2()

返回值:导出分页Excel按钮的html代码,返回null时表示使用默认按钮

replaceExportPdfButton

用途:自定义工具条中的导出PDF按钮。用户需要通过重载该方法来完成自定义功能

语法:public java.lang.String replaceExportPdfButton()

返回值:导出PDF按钮的html代码,返回null时表示使用默认按钮

replaceExportWordButton

用途:自定义工具条中的导出Word按钮。用户需要通过重载该方法来完成自定义功能

语法:public java.lang.String replaceExportWordButton()

返回值:导出Word按钮的html代码,返回null时表示使用默认按钮

replaceExportCsvButton

用途:自定义工具条中的导出csv按钮。用户需要通过重载该方法来完成自定义功能

语法:public java.lang.String replaceExportCsvButton()

返回值:导出csv按钮的html代码,返回null时表示使用默认按钮

replacePrintButton

用途:自定义工具条中的打印按钮。用户需要通过重载该方法来完成自定义功能

语法:public java.lang.String replacePrintButton()

返回值:打印按钮的html代码,返回null时表示使用默认按钮

appendButtons

用途:添加一个或多个自定义按钮。用户需要通过重载该方法来完成自定义功能

语法:public java.lang.String appendButtons()

返回值:自定义按钮的html代码,返回null时不添加

使用操作

这个监听只用于web项目端:

1、将设计好的监听类加载到web项目上

一是将编译好的.class文件打成jar包,将jar包放到WEB-INF/lib目录下;

二是将. class文件放到WEB-INF/classes。

2、然后在WEB-INF\resources\congfig.xml里修改<toolbarButtonFactory>节点值为监听类的全路径

<!-- 用户自定义接口配置,包括工厂、事件等 -->
<userDef>
<!-- <reportFactory></reportFactory> --> <!-- 报表工厂,用于自定义报表加载和计算等 --> <!-- <dataSourceFactory></dataSourceFactory>--> <!-- 自定义数据源工厂,用于通过自定义的方式获取报表数据源 --> <!-- <toolbarFactory></toolbarFactory> --> <!-- 工具条工厂,用于自定义html工具条 --> <!-- <toolbarButtonFactory></toolbarButtonFactory> --> <!-- 工具条按钮工厂,用于替换html工具条上的一些按钮 --> <!-- <printEventListener></printEventListener> --> <!-- 打印事件监听器 --> <!-- <fillinEventListener></fillinEventListener> --> <!-- 填报事件监听器 --> <!-- <exportEventListener></exportEventListener> --> <!-- 报表导出事件监听器 --> <!-- <reportLogHandler></reportLogHandler> --> <!-- 自定义报表日志输出处理器,在报表系统日志的基础上,增加其他日志记录方式 --> </userDef>
5、ReportLogHandler
接口介绍

自定义报表日志基类。用户可继承该类bios.report.api.factory.ReportLogHandler ,增加自定义报表日志输出。 在继承时,可以仅实现writeLog(int, String)方法来完成较简单的日志记录,也可以完整实现java.util.logging.Handler来完成更复杂的输入。

字段信息

public static final int LOG_LEVEL_DEBUG 日志信息的级别:调试

public static final int LOG_LEVEL_WARNING 日志信息的级别:警告

public static final intLOG_LEVEL_ERROR 日志信息的级别:异常

方法说明

publish

语法:public void publish(java.util.logging.LogRecord record)

指定者:类 java.util.logging.Handler 中的 publish

writeLog

用途:用户继承该类型时,实现这个方法即可自定义日志信息的输出。

语法:protected abstract void writeLog(int logLevel, java.lang.String logMessage)

参数:logLevel - 某条日志信息的级别,可能的值为:LOG_LEVEL_DEBUG,LOG_LEVEL_WARNING,LOG_LEVEL_ERROR

logMessage - 某条日志的具体内容,格式如下:

2013-01-01 12:12:12

信息: 报表[123]计算完成!

flush

语法:public void flush()

指定者:类 java.util.logging.Handler 中的flush

close

语法:public void close() throws java.lang.SecurityException

指定者:类 java.util.logging.Handler 中的 close

抛出:java.lang.SecurityException

使用操作

这个监听只用于web项目端:

1、将设计好的监听类加载到web项目上

一是将编译好的.class文件打成jar包,将jar包放到WEB-INF/lib目录下;

二是将. class文件放到WEB-INF/classes。

2、然后在WEB-INF\resources\congfig.xml里修改<reportLogHandler>节点值为监听类的全路径

<!-- 用户自定义接口配置,包括工厂、事件等 -->
<userDef>
<!-- <reportFactory></reportFactory> --> <!-- 报表工厂,用于自定义报表加载和计算等 --> <!-- <dataSourceFactory></dataSourceFactory>--> <!-- 自定义数据源工厂,用于通过自定义的方式获取报表数据源 --> <!-- <toolbarFactory></toolbarFactory> --> <!-- 工具条工厂,用于自定义html工具条 --> <!-- <toolbarButtonFactory></toolbarButtonFactory> --> <!-- 工具条按钮工厂,用于替换html工具条上的一些按钮 --> <!-- <printEventListener></printEventListener> --> <!-- 打印事件监听器 --> <!-- <fillinEventListener></fillinEventListener> --> <!-- 填报事件监听器 --> <!-- <exportEventListener></exportEventListener> --> <!-- 报表导出事件监听器 --> <!-- <reportLogHandler></reportLogHandler> --> <!-- 自定义报表日志输出处理器,在报表系统日志的基础上,增加其他日志记录方式 --> </userDef>