网易首页 > 网易号 > 正文 申请入驻

皕杰报表自定义扩展~自定义用户工厂

0
分享至

所谓自定义用户工厂就是皕杰报表API提供一个用户工厂接口,你可以写一个java类来实现一些自定义的功能。那么用这个接口能够实现哪些功能呢?

主要有六大类,一是读取完成扩展计算后的报表对象(即序列化brf文件),二是实现自定义html工具条输出,三是自定义报表来源(在皕杰报表中,服务器默认的是从report_home指定的路径来读取报表模板),四是数据源工厂适配器,为IDataSourceFactory接口中描述的方法提供了缺省实现,五是自定义工具条按钮工厂,六是自定义报表日志基类。

一、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里修改节点值为监听类的全路径

二、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里修改节点值为监听类的全路径

三、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里修改节点值为监听类的全路径

四、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里修改节点值为监听类的全路径

五、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里修改节点值为监听类的全路径

六、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里修改节点值为监听类的全路径

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
塞尔维亚或迎巨变,数万民众涌上首都街头,武契奇十年统治恐终结

塞尔维亚或迎巨变,数万民众涌上首都街头,武契奇十年统治恐终结

近史博览
2026-05-25 01:28:35
许家印认罪!2.4万亿窟窿,家族只拿走500亿,其余真金白银去哪了

许家印认罪!2.4万亿窟窿,家族只拿走500亿,其余真金白银去哪了

蜉蝣说
2026-04-23 09:41:11
俄指控乌无人机“袭击学校”  判断真假是非办法很简单

俄指控乌无人机“袭击学校” 判断真假是非办法很简单

刘耘博士
2026-05-24 09:38:41
44岁前国脚退役后突发颈动脉堵死险丧命,站都站不稳,努力康复

44岁前国脚退役后突发颈动脉堵死险丧命,站都站不稳,努力康复

米修体育
2026-05-25 01:12:35
硬汉!孙铭徽G4左脚打2针封闭上场,疼得龇牙咧嘴整个脚都乌青一片

硬汉!孙铭徽G4左脚打2针封闭上场,疼得龇牙咧嘴整个脚都乌青一片

818体育
2026-05-25 16:30:49
1950年,载沣以90万斤小米卖掉王府,儿子不解,他一句话让其闭嘴

1950年,载沣以90万斤小米卖掉王府,儿子不解,他一句话让其闭嘴

边城少爷
2026-05-18 12:40:14
严幼韵98岁确诊大肠癌,医生劝她手术,她叹了口气:还是安乐死吧

严幼韵98岁确诊大肠癌,医生劝她手术,她叹了口气:还是安乐死吧

兴趣知识
2026-05-20 00:27:29
历史不会重演,但会惊人相似:中国房地产极可能重走2015年老路

历史不会重演,但会惊人相似:中国房地产极可能重走2015年老路

童童聊娱乐啊
2026-05-25 14:25:48
快讯!俄罗斯这次恐怕是彻底被泽连斯基给激怒了!

快讯!俄罗斯这次恐怕是彻底被泽连斯基给激怒了!

故事终将光明磊落
2026-05-25 14:24:15
外媒:阵风战斗机在苏丹被土耳其无人机击落,将改写全球空战模式

外媒:阵风战斗机在苏丹被土耳其无人机击落,将改写全球空战模式

零度Military
2026-05-24 07:01:10
马办记者会现场直击:会计师曝年终奖金现金发放无入账记录

马办记者会现场直击:会计师曝年终奖金现金发放无入账记录

柏拉图的诉说1
2026-05-25 11:59:56
神舟二十三号名单炸出照妖镜:黎家盈还没上天,就刺痛了某些人?

神舟二十三号名单炸出照妖镜:黎家盈还没上天,就刺痛了某些人?

梁伫爱玩车
2026-05-25 15:05:30
有没有人敢爆自己的瓜?网友:确定玩这么大吗?

有没有人敢爆自己的瓜?网友:确定玩这么大吗?

夜深爱杂谈
2026-02-18 20:55:58
特朗普孙女曝:79岁祖父从中国飞回途中仍打电话关心她

特朗普孙女曝:79岁祖父从中国飞回途中仍打电话关心她

自愈小日子
2026-05-25 00:36:50
记者探访重庆永川山洪灾害现场:受灾核心区道路阻断,有村民一家1死2失联

记者探访重庆永川山洪灾害现场:受灾核心区道路阻断,有村民一家1死2失联

封面新闻
2026-05-25 15:08:04
记者:若詹姆斯离开,湖人已权衡东契奇欧文再度搭档的利弊

记者:若詹姆斯离开,湖人已权衡东契奇欧文再度搭档的利弊

懂球帝
2026-05-25 07:24:42
“宁愿死也不会向中国低头”——最硬气的铃木,如今怎么样了?

“宁愿死也不会向中国低头”——最硬气的铃木,如今怎么样了?

时评人李文君
2026-05-07 19:57:28
打人当天,容琳朝被严惩

打人当天,容琳朝被严惩

极目新闻
2026-05-25 10:46:13
彻底爆了!370亿资金狂拉,1.2万亿中芯国际触及20CM涨停!华为“韬定律”破局摩尔极限,半导体巨头集体狂欢!

彻底爆了!370亿资金狂拉,1.2万亿中芯国际触及20CM涨停!华为“韬定律”破局摩尔极限,半导体巨头集体狂欢!

雪球
2026-05-25 15:57:45
“无期刑犯”老到不能动,监狱会给他们养老吗?答案真令人心酸

“无期刑犯”老到不能动,监狱会给他们养老吗?答案真令人心酸

宋鶛搞笑配音
2026-05-24 18:41:47
2026-05-25 18:00:49
皕杰信息
皕杰信息
报表应用及使用技巧
120文章数 20关注度
往期回顾 全部

科技要闻

华为:没有先进光刻机也能造出高端芯片

头条要闻

牛弹琴:伊朗现在哭笑不得 美官员让伊别理特朗普推文

头条要闻

牛弹琴:伊朗现在哭笑不得 美官员让伊别理特朗普推文

体育要闻

如果不好好守门,他可能早就继承家业了

娱乐要闻

李晨郑恺跑男停宣:12年元老被边缘化

财经要闻

纸包火的秘密:前发审委员的冒险游戏

汽车要闻

启境GT7定档5月29日预售 提供三电机版本

态度原创

旅游
教育
房产
时尚
公开课

旅游要闻

山西文创亮相澳大利亚悉尼

教育要闻

河南警察学院:值得填报吗?热门专业就业现状及报考分析!#搜索千校视频计划

房产要闻

工抵房骗局!134套房款入私账!海南这个盘,坑惨买房人!

薄底鞋失宠!“这双鞋”突然爆火,夏天穿时髦又好看

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版