论坛首页 Java企业应用论坛

JavaEye Reporting Tool介绍

浏览 25615 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-12-28  
JavaEye Reporting Tool (JERT)

JERT是一个开放源代码的,基于web的,数据库报表工具,它能够让你不需要编程而能创建各种灵活的报表。(当然你需要了解一定的SQL知识,)

Why Yet Another Reporting Tool?

我们需要一个轻量级的报表工具,能够快速地创建报表,并且将这些报表通过web进行信息共享,在开始JERT项目之前,试用了几个开源的工具:JasperReports, JFreeReport, Datavision, ART, openreports。前3个reporting tool能够完全满足我们的用户需求,但是他们太过于重量级,需要用户了解xml, report designer等知识。而ART过于简陋,不支持动态参数的sql生成,而且代码是基于servlet直接output write,比较难扩展。openreports是最接近需求的一个工具,但是它的报表来源是基于JFreeReport,还是需要用户了解其他的相关知识。所以最终决定是重新开发一个轻量级别的,容易扩展,容易集成的报表工具:JERT。

在下一个release版本计划完成的功能列表

1. 管理员:
    设置数据源 - 图1
    维护用户帐户和权限(用户帐户可以方便地和现有系统集成)
2. 报表编写人员 (管理员)
    编写产生报表所需的sql语句 - 图2
    设置可供输入的动态参数 - 图3
3. 普通用户
    通过web界面选择相应的报表,查看数据 - 图4
    输出报表结果到excel
   
其他列入计划的功能:
1. 定时运行的报表
2. 用户定制定时发送某些报表到其email地址
2. 支持chart
   发表时间:2004-12-28  
目前没有release版本,需要从CVS check out:
CVS Server: cvs.iteye.com
Repository: /cvsroot/quake
CVS username: anonymous
CVS password: anonymous
Module name: jert

执行ant war以后,在dist目录下面会多出jert.war,将其发布到任意的servlet container下面。

访问 http://localhost:8080/jert/setup/index.action 可以创建一个帐户,然后可以用这个帐户登陆进行操作。
0 请登录后投票
   发表时间:2004-12-28  
目前这个项目是我一个人在慢慢地开发,还需要1~2位熟悉webwork/hibernate的开发人员和1位熟悉html, css的页面美化人员。如果你对这个项目有兴趣,可以用站内短信联系我。


------
已经有开发人员加入,还需要一位熟悉html, css,对于用户界面有经验的界面开发人员。(2004-12-30)
0 请登录后投票
   发表时间:2004-12-28  
最初的那个版本还能登录,可是下了最新版本后,创建用户后就无法登录了。
0 请登录后投票
   发表时间:2004-12-28  
很久没有看到这么干净漂亮的代码了
test case也跑的很快呀,我在公司的100来个test方法要将近20分钟,偶们用oracle
你再加一个junitreport ant task就更好了

不过有点疑问:
在com.javaeye.user.test.HibernateTest中
setUp,tearDown分别调用了openSession和closeSession,
这样做是为了模拟OpenSessionInView吧?
但我觉得这样不是太好,你的很多代码比如remove(Group group)就只能在这种模式下工作了,OpenSessionInView是不是一种好的模式还有待商榷。
还有几个问题明天再来吧
0 请登录后投票
   发表时间:2004-12-28  
<target name="junitreport" depends="junit" description="Run tests and create JUnit report">
		<junitreport todir="${test.dir}">
			<fileset dir="${test.dir}/report">
				<include name="TEST-*.xml"/>
			</fileset>
			<report format="frames" todir="${test.dir}/htmlreport"/>
		</junitreport>
	</target>
0 请登录后投票
   发表时间:2004-12-29  
wolfsquare 写道
最初的那个版本还能登录,可是下了最新版本后,创建用户后就无法登录了。

估计是你创建了同样login name的2个用户,这个检查还没有做,

你可以再创建一个其他login name的用户,然后用admin的功能删除那些同名用户。
0 请登录后投票
   发表时间:2004-12-29  
CafeBabe 写道
很久没有看到这么干净漂亮的代码了
test case也跑的很快呀,我在公司的100来个test方法要将近20分钟,偶们用oracle
你再加一个junitreport ant task就更好了

不过有点疑问:
在com.javaeye.user.test.HibernateTest中
setUp,tearDown分别调用了openSession和closeSession,
这样做是为了模拟OpenSessionInView吧?
但我觉得这样不是太好,你的很多代码比如remove(Group group)就只能在这种模式下工作了,OpenSessionInView是不是一种好的模式还有待商榷。
还有几个问题明天再来吧

因为我在测试代码里面用的是hsql的memory instance模式:
&lt;property name="driverClassName"&gt;&lt;value&gt;org.hsqldb.jdbcDriver&lt;/value&gt;&lt;/property&gt;
&lt;property name="url"&gt;&lt;value&gt;jdbc:hsqldb:mem:user_unit_test&lt;/value&gt;&lt;/property&gt;

所以速度很快。

open/close session如你所说,就是为了模拟OpenSessionInView,要实现remove(Group group)这个功能,因为考虑到Lazy Load,所以只能选择OpenSessionInView或者在代码里面调用Hibernate.initialize,从代码的简洁上考虑,我选择了前者。

junitreport的task我已经commit 到CVS了,谢谢!
0 请登录后投票
   发表时间:2004-12-29  
姑且不管OpenSessionInView,现在如果用话要删除一个Group,那必须
Group stored = manager.getGroup("name");
manager.remove(group);
这样好像不够简洁吧?不如
manager.removeGroup(groupId);
or
manager.removeGroup(groupName);

还有,你的test中,初始数据的插入以及操作结果的校验都是用的被测代码来做的,这样似乎不妥
比如下面,你要先用
manager.store(user);插入初始数据
最后用manager.getUser("name")来校验,
但这两个方法都是待测试的代码呀
        User user = manager.newUser();;
        user.setName("name");;
        user.setEmail("email");;
        user.setFullName("fullName");;
        manager.store(user);;

        User stored = manager.getUser("name");;
        assertEquals(user, stored);;
        assertEquals("name", stored.getName(););;
        assertEquals("email", stored.getEmail(););;
        assertEquals("fullName", stored.getFullName(););;

        manager.remove(user);;
        assertNull(manager.getUser("name"););;
0 请登录后投票
   发表时间:2004-12-29  
嗯,好主意,我会加上这2个method:
removeGroup(String name)
removeUser(String name)

关于测试代码,根据unit test的隔离原则,是应该把Get/Store/Remove分开来写的,我很偷懒,这种Get By ID类型的方法通常都是不测试的,然后把Store/Remove写在一起,所以起了个名字叫testUserStoreRemove
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics