精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-12-28
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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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 可以创建一个帐户,然后可以用这个帐户登陆进行操作。 |
|
返回顶楼 | |
发表时间:2004-12-28
目前这个项目是我一个人在慢慢地开发,还需要1~2位熟悉webwork/hibernate的开发人员和1位熟悉html, css的页面美化人员。如果你对这个项目有兴趣,可以用站内短信联系我。
------ 已经有开发人员加入,还需要一位熟悉html, css,对于用户界面有经验的界面开发人员。(2004-12-30) |
|
返回顶楼 | |
发表时间:2004-12-28
最初的那个版本还能登录,可是下了最新版本后,创建用户后就无法登录了。
|
|
返回顶楼 | |
发表时间: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是不是一种好的模式还有待商榷。 还有几个问题明天再来吧 |
|
返回顶楼 | |
发表时间: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> |
|
返回顶楼 | |
发表时间:2004-12-29
wolfsquare 写道 最初的那个版本还能登录,可是下了最新版本后,创建用户后就无法登录了。
估计是你创建了同样login name的2个用户,这个检查还没有做, 你可以再创建一个其他login name的用户,然后用admin的功能删除那些同名用户。 |
|
返回顶楼 | |
发表时间: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模式: <property name="driverClassName"><value>org.hsqldb.jdbcDriver</value></property> <property name="url"><value>jdbc:hsqldb:mem:user_unit_test</value></property> 所以速度很快。 open/close session如你所说,就是为了模拟OpenSessionInView,要实现remove(Group group)这个功能,因为考虑到Lazy Load,所以只能选择OpenSessionInView或者在代码里面调用Hibernate.initialize,从代码的简洁上考虑,我选择了前者。 junitreport的task我已经commit 到CVS了,谢谢! |
|
返回顶楼 | |
发表时间: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"););; |
|
返回顶楼 | |
发表时间:2004-12-29
嗯,好主意,我会加上这2个method:
removeGroup(String name) removeUser(String name) 关于测试代码,根据unit test的隔离原则,是应该把Get/Store/Remove分开来写的,我很偷懒,这种Get By ID类型的方法通常都是不测试的,然后把Store/Remove写在一起,所以起了个名字叫testUserStoreRemove |
|
返回顶楼 | |