Chapter 3: First 10 historical topics 4
Here you have the modified version of JR in jar and source code, a modified version of iReport
to design with barcode (download section). Under the “more docs” section there is an Howto
about iReport.
1. Modify AD
We want to use Jasper Reports so we are first going to design a report. Those who wants
to use other classes/jars can go to the next point of this topic. What kind of Jasper Report
can we test? I am choosing a Report with a parameter. Let’s design a Report that shows
the Orders a Business Partner have, where our parameter is the Bussines Partner ID. First
we create a view with the information we need:
create or replace view NN_BPartnerOrder_V
as
select C_BPartner_ID, Name, GrandTotal, DateOrdered
from C_Order join C_BPartner using (C_BPartner_ID);
Then create a Jasper Report on this view with your preferred tool, I used iReport. The
Report should look, more or less, as the file 001/JRBPartnerOrder.xml . You can use this
file directly if the dir. /tmp is accessible in your system. Barbecue needs a temporary dir.
in order to create and place the jpg of the barcode. You should modify it if /tmp is not
accessible on your system or you will se e the report without the barcode. Here you can find
the .jasper too, in fact you need the xml or the jasper file for the next step.
2. The java part.
Usually you have some .java file that uses .jar, directly or indirectly (jars used by others
jars). Where are we going to put the jars? We have 2 options:
• Don’t want to unjar anything. This is the case of oracle.jar used by Compiere. These
jars are then included in the classpath everywhere, when c ompiling and when running
Server or Client or WebStart application. If you want to add a jar of this type you
have to modify some build.xml, some .jnlp, some .sh
• The s ec ond possibility is to include the classes you want to use in a jar already present
in the build/run script classpaths. If you look at the creation of CTools.jar the
build.xml logic compile some code and unjar some jars in the same build directory
then jar everything together.
The build/run scripts need to include only CTools.jar to use new classes created
compiling java code and classes simply expanded in the build directory before packing
CTools.jar
We are going to use the ladder method: our compiled classes will be packe d together
with the expanded version of jasperreports-0.5.2.jar and every jar used by Jasper Re-
ports or by java code. This will result in a NNCompiereJR.jar and build/run scripts
will be modified to let Compiere use this new jar. You can find this work in the
NNCompiereJR module on the CVS.
The final step of this point is to generate the NNCompiereJR.jar: download the module
go to the NNCompiereJR dir. and type ant (ant 1.6.1 is required). At the end the jar
will be ready.
Note: if you want to upgrade/downgrade Jasper Reports or any other jar just update
the lib dir. and the new jar present here will be used during jar creation and packed
together in the final jar.
3. Modify build/run scripts.
• utils_dev/build.xml
I added my dir here so NNJasperReport get compiled when I compile Compiere. I add
this line: <ant inheritAll="false" dir="NNCompiereJR"> and similar information
in the cle an section.
• client/build.xml
Here we have to add the unjar of one jar more before to create CClient.jar .
The line I added is: <unjar src="..\NNCompiereJR\dist\NNCompiereJR.jar"
dest="${build.dir}" />