views:

509

answers:

2

A design question.

I have developed an online test engine web app earlier this year. I have used Java servlets and Freemarker templates and done it entirely following the MVC paradigm.

One big missing feature in the application is that it provides no reporting. The initial design of the application did not consider reporting as part of the core because of various constraints, not necessarily technical. Reporting services as needed now should enable users to get their reports online anytime as well as download them in predefined formats.

The application has grown into a stage where I would not like to put in more code into it and want to isolate the core modules and develop future needs around this core.

I would like to hear a few ideas as to how to go on developing this reporting service around the core app.

Also what reporting tools can I use? I have used Jasper in the past but heard BIRT is good too. Throw your suggestions.

+1  A: 

I would recommend Jasper because I've used it in the past and found it quite easy to configure and use. It is possible to integrate it into your application without too much trouble.

I have only heard good things about BIRT but never implemented it myself.

Vincent Ramdhanie
+3  A: 

While Jasper is a pretty good choice if you have fairly advanced requirements such as:

  • Supporting esoteric formats
  • Parent-child reports
  • Charts and graphs

But if you really only need to show tabular reports in popular formats such as HTML/PDF/XLS, then you can go a long way with just diplaytag, with a lot less effort than Jasper requires.

A simple tabular report takes about 20 lines of JSP code using displaytag, but the same report requires about 500 lines of XML using Jasper. I'd investigate whether displaytag can meet your requirements before committing to a 'heavyweight reporting solution such as BIRT/Jasper.

Don