by May 4, 2006 0 comments



Jasper Reports is a popular open source reporting solution
in use. It is written completely in Java and can be integrated into any Java or
Java EE project. We know about its ability to create reports in multi-formats
and its ability to integrate with web pages. However, this product  is not
well documented. In this article, we look into Jasper Reports and associated
tools and their applicability to various scenarios.

Direct
Hit!
Applies to:
Java developers
USP:
Simplify report making process in Java using the Jasper toolkit
Links:
http://jasperreports.sourceforge.net/ 
Google keywords:
Open Source Reports

How it works
Jasper Reports uses XML to define its report files. The format used is
rather conventional and the definition files are saved with a JRXML extension.
This definition file contains all the information about the report such as
title, headers and footers, and of course, the report details. All this
information is characterized and defined within respective tags. After the
report has been defined, it needs to be compiled into a binary format to view
the report in an existing Java application. You can even integrate it with web
pages such as those from JSP or even JSF pages. To use it, you simply need to
download the package from http://jasperreports. sourceforge.net and make sure
you have the JARs in the DIST folder of the Jasper Reports package folder and
the path included in the CLASSPATH variable.

The Jasper Assistant plugin for Eclipse allows visual configuration of data source and designs the report from the ‘Jasper Assistant Perspective’

Sample report
The first step in using Jasper Reports is to write the report definition
file. You can use any text or WYSIWYG editor. We will design a simple report
that displays ‘Hello World’ in a PDF document. The report definition
invariably includes the following definitions.



 
   
     
       
       
     

   

 

 
           

For the sake of simplicity, we have omitted the and tags that define the header and footer respectively. All
the report data is displayed under the

tag, ie, after all formatting information (such as headers and
title) has been defined. The content of report is defined under the detail tag.
The tag used here displays static text in the report. The
tag defines a report section; all of the elements contain a
‘band’ element as its only child element. Next, we need to compile this into
a binary file. This can be achieved by calling the compileReport() method on the
‘net.sf.jasperreports.engine. JasperCompileManager’ class. Of many methods
available, in this example, we will use the one that takes a single String
parameter. The following code handles report display in the Java class.

// import the library


import net.sf.jasperreports.engine.*;





JasperReport jasRep;


JasperPrint jasPrnt;


Try {


      jasRep = JasperCompileManager.compileReport(


          “reports/demo.jrxml”);


      jasPrnt = JasperFillManager.fillReport(


          jasRep, new HashMap(),
new JREmptyDataSource());


      JasperExportManager.exportReportToPdfFile(


          jasPrnt, “reports/demo.pdf”);


} catch (JRException exp) {


      exp.printStackTrace();


}

Use any text editor to write the XML file that creates the report. Jasper then pulls required data from a data source and saves it

The first statement compiles the report into a binary
format. The binary skeletal framework of the report then needs some data,
(static “Hello World!” text in our case) which is provided by the fillReport()
method in the code. Lastly, we have exported the report to a PDF file using the
exportReportToPdfFile() as seen in the preceeding code snippet. For this example
to compile and run, you need the following string in your CLASSPATH:
jasperreports-1.2.1.jar; commons-beanutils-1.5.jar; commons-collections-2.1.jar;
commons-digester- 1.7.jar; commons-logging-1.0.2.jar; commons-logging-api-1.0.2.
jar; itext-1.3.1.jar.

The version numbers can be different depending on the
version of jasper reports being used. Also note that you need to import
‘poi-2.0-final-20040126.jar’ instead of ‘itext-1.3.x.jar’ if you intend
to export to an Excel file.

Jasper tools
The above example was a demonstration of Jasper

Reports, which in any case is more capable than what we made it to do. For more
advanced scenarios, you can use the GUI based Jasper Assistant, which helps you
visually build the report, saving your time and effort. Jasper Assistant can be
downloaded from www.jasperassistant.com

The Assistant is based on Eclipse’s plug-in architecture.
So all you need to do is download the package and extract it to the Eclipse
installation folder and start IDE. However, you need also plug-ins such as EMF
(Eclipse Modeling Framework) SDK and GEF (Graphical Editing Framework) SDK
installed in your Eclipse IDE before you can use the Jasper Assistant. The
plug-ins are available at Eclipse’s website for free.

Once all the plug-ins are installed, you can simply add a
report to your application. First, create a data source for your report through
the Data Sources section available in ‘Window>Preferences>Jasper
Assistant’. Switch to new perspective from Window>Open
Perspective>Other>Jasper Assistant and then choose the File>
New>Report menu to create new Report.

The New Report Wizard then guides you through the initial
steps of report creation, where it connects to the database over a data source
and lets you specify the query or select the fields that will be displayed in
the report. To design the report, you can drag the fields you need to show into
the design editor. Also, you can add bands such as title, page header and column
headers and also format them from the ‘Properties’ window in the Jasper
Assistant Perspective.

Tweaking app servers for Jasper reports
Jasper Reports can also be displayed from Web pages.

However, you need to make following changes in your app server for that. For
Sun’s application server, add the below line in the D:\Sun\ AppServer\domains\domain1\config\server.policy
file, assuming that ‘domain1’ is the currently used domain in the
application server.

grant{ permission
java.lang.RuntimePermission “createClassLoader”};

Similarly, for Tomcat, add the following line to the
startup script (startup.bat for Windows and startup.sh for Linux):

CATALINA_OPTS=”$CATALINA_OPTS
-Djava.awt.headless=true”

So, whenever you have to make complex reports, you know
which way you have to head.

Anadi Misra

No Comments so far

Jump into a conversation

No Comments Yet!

You can be the one to start a conversation.

<