提供对用户自定义功能的调用。
皕杰API为用户提供了用户工厂接口,通过这个接口,用户可以实现自定义html工具条输出、读取完成扩展计算后的报表对象(即序列化brf文件)和自定义报表来源(在皕杰报表中,服务器默认的是从report_home指定的路径来读取报表模板)等。
自定工厂有以下几种接口
报表工厂。用户可实现该接口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>
工具条工厂。用户可实现该接口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>
数据源工厂,用户可通过实现该接口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>
数据源工厂适配器,为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>
自定义工具条按钮工厂。用户可根据需要重载该工厂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>
自定义报表日志基类。用户可继承该类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>