Planet Jaspersoft

January 27, 2016

Hi Folks,

This post will give you the tip of setting Advanced properties to display the Category Axis (X-axis), Value Axis(Y-axis) in HighCharts of Jasper Design Studio.

Software Used for this example : 
1) Jasper Design Studio 6.2 Professional
2) Jasper Server 6.2 Professional
3) Foodmart database of PostgreSQL .

1) Click on Advanced properties of Chart and Click on Add to add below shown properties.
2) Properties : 
xAxis.lineColor = #008000 (check box disabled)
xAxis.lineWidth = new Integer(2) (check box enabled)
yAxis.lineColor = #FF0000 (check box disabled)
yAxis.line.Width= new Integer(1) (check box enabled)


3) Sample output in Server: 
Reference : 
http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/yaxis/linecolor/

JRXML
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.2.0.final using JasperReports Library version 6.2.0  -->
<!-- 2016-01-27T13:59:59 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Statcked Bar With LIne" pageWidth="800" pageHeight="842" columnWidth="760" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="5d0254fd-0a3b-4d5d-8e26-3c4b6c618d0f">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="foodmart"/>
    <property name="com.jaspersoft.studio.data.sql.tables" value=""/>
    <property name="ireport.jasperserver.url" value="http://localhost:8081/jasperserver-pro/"/>
    <property name="ireport.jasperserver.user" value="superuser"/>
    <property name="ireport.jasperserver.report.resource" value="/Explore/Reports/Bar_Chart_X_axis_and_Y_axis_Line_Color_files/main_jrxml"/>
    <property name="ireport.jasperserver.reportUnit" value="/Explore/Reports/Bar_Chart_X_axis_and_Y_axis_Line_Color"/>
    <property name="com.jaspersoft.studio.unit." value="pixel"/>
    <queryString>
        <![CDATA[SELECT occupation,member_card,SUM(num_cars_owned) cars,SUM(total_children) children
 FROM customer GROUP BY occupation ,member_card
order by occupation ,member_card]]>
    </queryString>
    <field name="occupation" class="java.lang.String"/>
    <field name="member_card" class="java.lang.String"/>
    <field name="cars" class="java.lang.Long"/>
    <field name="children" class="java.lang.Long"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <summary>
        <band height="350" splitType="Stretch">
            <property name="com.jaspersoft.studio.unit.height" value="pixel"/>
            <componentElement>
                <reportElement x="0" y="0" width="760" height="350" uuid="fb580735-8c78-4008-93aa-2bd2bc6ed227"/>
                <hc:chart xmlns:hc="http://jaspersoft.com/highcharts" xsi:schemaLocation="http://jaspersoft.com/highcharts http://jaspersoft.com/schema/highcharts.xsd" type="Column">
                    <hc:chartSetting name="default">
                        <hc:chartProperty name="chart.zoomType">
                            <hc:propertyExpression><![CDATA["xy"]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="colors">
                            <hc:propertyExpression><![CDATA[java.util.Arrays.asList("#7cb5ec","#434348","#90ed7d","#f7a35c","#008000","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1")]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.enabled">
                            <hc:propertyExpression><![CDATA[false]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.href">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.text">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="title.text">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="xAxis.lineColor" value="#008000"/>
                        <hc:chartProperty name="xAxis.lineWidth">
                            <hc:propertyExpression><![CDATA[new Integer(2)]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="yAxis.lineColor" value="#FF0000"/>
                        <hc:chartProperty name="yAxis.lineWidth">
                            <hc:propertyExpression><![CDATA[new Integer(2)]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="yAxis.title.text">
                            <hc:propertyExpression><![CDATA["Number Of Cars"]]></hc:propertyExpression>
                        </hc:chartProperty>
                    </hc:chartSetting>
                    <multiAxisData>
                        <multiAxisDataset/>
                        <dataAxis axis="Rows">
                            <axisLevel name="Level1">
                                <labelExpression><![CDATA["Level Label expression"]]></labelExpression>
                                <axisLevelBucket class="java.lang.String">
                                    <bucketExpression><![CDATA[$F{occupation}]]></bucketExpression>
                                </axisLevelBucket>
                            </axisLevel>
                        </dataAxis>
                        <dataAxis axis="Columns"/>
                        <multiAxisMeasure name="Measure1" class="java.lang.Integer" calculation="Sum">
                            <labelExpression><![CDATA["Number Of Cars : "]]></labelExpression>
                            <valueExpression><![CDATA[$F{cars}]]></valueExpression>
                        </multiAxisMeasure>
                    </multiAxisData>
                    <hc:series name="Measure1"/>
                </hc:chart>
            </componentElement>
        </band>
    </summary>
</jasperReport>
 

January 27, 2016

January 19, 2016

Hi Folks,

In my previous post, I wrote on how to work with StackedColumn..Line high chart in Jasper Studio 6.x. which you can find it  here 

This post is an extension of above example and gives you the tips for below points.

Example tested on :
1) Jasper Design Studio 6.2 & Server 6.2 - both are Professional editions.
2) foodmart database - PostgreSQL server. 

Problem Statement : 
How to set min and max values for Y1-axis and Y2-axis ? (Or)
How to tell Y2-axis to use the same values of Y1-axis ?  (Or)
How to tell both the axes to start with a common value ( a start point of zero) ?

You will find only the core part for this. 

1) Right Click on Chart (StackedColumn..Line)
2) Right bottom corner click on "Show Advanced Properties" 
3) Among the 3 tabs be in "Chart Properties" tab and inside it click "Context Specific" tab. 


4)  As shown in above image, click on "Add" button and below mentioned properties 
 Y1-Axis Properties (Default Axis for Dual Axis Chart)
# Name = yAxis
# Bydefault _jrAxisIndex attribute populates, and default value is 0
(If you have multiple axes you should give different default value say 1 or 2 or 3 for Y-axis2, Y-axis3, Y-axis4 repsectively).
 # This axis will take a mandatory property which would be used to identify the axis - later in the chart in some other place(Will discuss in next point)
   id="id0"
# Give properties like min, max, title.text and etc taking from HighCharts API. 
    High Charts API reference : http://api.highcharts.com/highcharts#yAxis
 
 

5) Repeat point-4 for second Y-axis (i.e., Y2-Axis) 
 The property linkedTo=0 will link axis values  properties from Y1-axis to Y2-Axis.

6) Go to each measure from configuration and click on modify to add advanced properties 

Measure 1: Store Sales
Contributor= SeriesProperty
Name=yAxis
Use constant Value =id0 (with out double quotes).

Do the same for remaining measures

Measure 2: Unit Sales
Contributor= SeriesProperty
Name=yAxis
Use constant Value =id0 (with out double quotes).

Measure 3:
Contributor= SeriesProperty
Name=yAxis
Use constant Value =id1 (with out double quotes).

 

Sample output (With the above explained properties). 

JRXML : 
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.2.0.final using JasperReports Library version 6.2.0  -->
<!-- 2016-01-19T18:18:11 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4_3" pageWidth="700" pageHeight="842" columnWidth="660" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="3a9c4e03-faeb-4a1e-b0b6-4eb2dcdd5af0">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="foodmart"/>
    <property name="com.jaspersoft.studio.data.sql.tables" value=""/>
    <property name="ireport.jasperserver.url" value="http://localhost:8081/jasperserver-pro/"/>
    <property name="ireport.jasperserver.user" value="superuser"/>
    <property name="ireport.jasperserver.reportUnit" value="/Explore/Stacked_Bar_with_Line_Sample"/>
    <property name="ireport.jasperserver.report.resource" value="/Explore/Stacked_Bar_with_Line_Sample_files/main_jrxml"/>
    <property name="com.jaspersoft.studio.unit." value="pixel"/>
    <queryString>
        <![CDATA[SELECT DISTINCT c.occupation,t.the_month,t.month_of_year,sum(sf7.store_sales) store_sales,sum(sf7.unit_sales) unit_sales FROM customer c
INNER JOIN sales_fact_1997 sf7 ON c.customer_id=sf7.customer_id
INNER JOIN time_by_day t ON t.time_id=sf7.time_id
WHERE t.the_year=2012
GROUP BY c.occupation,t.the_month,t.month_of_year
ORDER BY t.month_of_year]]>
    </queryString>
    <field name="occupation" class="java.lang.String"/>
    <field name="the_month" class="java.lang.String"/>
    <field name="month_of_year" class="java.lang.Integer"/>
    <field name="store_sales" class="java.math.BigDecimal"/>
    <field name="unit_sales" class="java.math.BigDecimal"/>
    <title>
        <band height="50"/>
    </title>
    <summary>
        <band height="449" splitType="Stretch">
            <componentElement>
                <reportElement x="0" y="0" width="660" height="449" uuid="6dd6cf77-5197-46b5-9691-8fd27d40b95d"/>
                <hc:chart xmlns:hc="http://jaspersoft.com/highcharts" xsi:schemaLocation="http://jaspersoft.com/highcharts http://jaspersoft.com/schema/highcharts.xsd" type="StackedColumnLine">
                    <hc:chartSetting name="default">
                        <hc:chartProperty name="chart.zoomType">
                            <hc:propertyExpression><![CDATA["xy"]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="colors">
                            <hc:propertyExpression><![CDATA[java.util.Arrays.asList("#7cb5ec","#434348","#FF0000","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1")]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.enabled">
                            <hc:propertyExpression><![CDATA[false]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.href">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.text">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="plotOptions.series.allowPointSelect">
                            <hc:propertyExpression><![CDATA[Boolean.TRUE]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="plotOptions.series.dashStyle">
                            <hc:propertyExpression><![CDATA["Dash"]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="title.text">
                            <hc:propertyExpression><![CDATA["Stacked Column and Line - Dual Axis Chart"]]></hc:propertyExpression>
                        </hc:chartProperty>
                    </hc:chartSetting>
                    <hc:chartSetting name="yAxis">
                        <hc:chartProperty name="_jrAxisIndex">
                            <hc:propertyExpression><![CDATA[1]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="id">
                            <hc:propertyExpression><![CDATA["id1"]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="linkedTo">
                            <hc:propertyExpression><![CDATA[0]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="min">
                            <hc:propertyExpression><![CDATA[0]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="title.text">
                            <hc:propertyExpression><![CDATA["Profit"]]></hc:propertyExpression>
                        </hc:chartProperty>
                    </hc:chartSetting>
                    <hc:chartSetting name="yAxis">
                        <hc:chartProperty name="_jrAxisIndex" value="0"/>
                        <hc:chartProperty name="id">
                            <hc:propertyExpression><![CDATA["id0"]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="min">
                            <hc:propertyExpression><![CDATA[0]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="title.text">
                            <hc:propertyExpression><![CDATA["Unit and Store Sales"]]></hc:propertyExpression>
                        </hc:chartProperty>
                    </hc:chartSetting>
                    <multiAxisData>
                        <multiAxisDataset/>
                        <dataAxis axis="Rows">
                            <axisLevel name="Month">
                                <labelExpression><![CDATA["Level Label expression"]]></labelExpression>
                                <axisLevelBucket order="None" class="java.lang.String">
                                    <bucketExpression><![CDATA[$F{the_month}]]></bucketExpression>
                                </axisLevelBucket>
                            </axisLevel>
                        </dataAxis>
                        <dataAxis axis="Columns"/>
                        <multiAxisMeasure name="Store Sales" class="java.lang.Integer" calculation="Nothing">
                            <labelExpression><![CDATA["Store Sales"]]></labelExpression>
                            <valueExpression><![CDATA[$F{store_sales}]]></valueExpression>
                        </multiAxisMeasure>
                        <multiAxisMeasure name="Unit Sales" class="java.lang.Integer" calculation="Nothing">
                            <labelExpression><![CDATA["Unit Sales"]]></labelExpression>
                            <valueExpression><![CDATA[$F{unit_sales}]]></valueExpression>
                        </multiAxisMeasure>
                        <multiAxisMeasure name="Profit" class="java.lang.Integer" calculation="Nothing">
                            <labelExpression><![CDATA["Profit"]]></labelExpression>
                            <valueExpression><![CDATA[$F{store_sales}.intValue() -$F{unit_sales}.intValue()]]></valueExpression>
                        </multiAxisMeasure>
                    </multiAxisData>
                    <hc:series name="Store Sales">
                        <hc:contributor name="SeriesProperty">
                            <hc:contributorProperty name="yAxis" valueType="Constant" value="id0"/>
                        </hc:contributor>
                    </hc:series>
                    <hc:series name="Unit Sales">
                        <hc:contributor name="SeriesProperty">
                            <hc:contributorProperty name="yAxis" valueType="Constant" value="id0"/>
                        </hc:contributor>
                    </hc:series>
                    <hc:series name="Profit">
                        <hc:contributor name="SeriesProperty">
                            <hc:contributorProperty name="yAxis" valueType="Constant" value="id1"/>
                        </hc:contributor>
                    </hc:series>
                </hc:chart>
            </componentElement>
        </band>
    </summary>
</jasperReport>
 

January 19, 2016

January 14, 2016

Hi Folks,

This tutorial will talk about how to work with StackedCoulumnLine or StackedColumn..SpLine

Software used for this example
1) Jasper Design Studio 6.2 Professional
2) Jasper Server 6.2 Professional
3) PostgreSQL foodmart database

Chart engine implementations vary from tool to tool to visualize data on graphs hence we have to build our result set from querying technologies to adapt it by the graph.


Core parts:

Query Format : 
In jasper your query format for dual axis (Stacked bar + Line) should take below query format. 
i.e., the chart will take 3 measures . In this example I have taken 2 measures and caluculated 3rd mesure as profit by using first 2 measures.

 Graph to pull on Designer
  Drag and drop the StackedColumnLine or StackedCo..Spline chart and give chart data properties as shown in below two images. 
 

Chart Properties to Set :

Sample output in the server : 
Publish it the server and view the output. Sample output will look as shown in below image. 
 JRXML : 

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.2.0.final using JasperReports Library version 6.2.0  -->
<!-- 2016-01-14T14:36:04 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4_3" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="3a9c4e03-faeb-4a1e-b0b6-4eb2dcdd5af0">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="foodmart"/>
    <property name="com.jaspersoft.studio.data.sql.tables" value=""/>
    <property name="ireport.jasperserver.url" value="http://localhost:8081/jasperserver-pro/"/>
    <property name="ireport.jasperserver.user" value="superuser"/>
    <property name="ireport.jasperserver.reportUnit" value="/Explore/Reports/Stacked_Bar_with_Line_Sample"/>
    <property name="ireport.jasperserver.report.resource" value="/Explore/Reports/Stacked_Bar_with_Line_Sample_files/main_jrxml"/>
    <queryString>
        <![CDATA[SELECT DISTINCT c.occupation,t.the_month,t.month_of_year,sum(sf7.store_sales) store_sales,sum(sf7.unit_sales) unit_sales FROM customer c
INNER JOIN sales_fact_1997 sf7 ON c.customer_id=sf7.customer_id
INNER JOIN time_by_day t ON t.time_id=sf7.time_id
WHERE t.the_year=2012
GROUP BY c.occupation,t.the_month,t.month_of_year
ORDER BY t.month_of_year]]>
    </queryString>
    <field name="occupation" class="java.lang.String"/>
    <field name="the_month" class="java.lang.String"/>
    <field name="month_of_year" class="java.lang.Integer"/>
    <field name="store_sales" class="java.math.BigDecimal"/>
    <field name="unit_sales" class="java.math.BigDecimal"/>
    <title>
        <band height="50"/>
    </title>
    <summary>
        <band height="314" splitType="Stretch">
            <componentElement>
                <reportElement x="0" y="0" width="555" height="314" uuid="6dd6cf77-5197-46b5-9691-8fd27d40b95d"/>
                <hc:chart xmlns:hc="http://jaspersoft.com/highcharts" xsi:schemaLocation="http://jaspersoft.com/highcharts http://jaspersoft.com/schema/highcharts.xsd" type="StackedColumnLine">
                    <hc:chartSetting name="default">
                        <hc:chartProperty name="chart.zoomType">
                            <hc:propertyExpression><![CDATA["xy"]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.enabled">
                            <hc:propertyExpression><![CDATA[false]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.href">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.text">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="title.text">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="yAxis.title.text">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                    </hc:chartSetting>
                    <multiAxisData>
                        <multiAxisDataset/>
                        <dataAxis axis="Rows">
                            <axisLevel name="Month">
                                <labelExpression><![CDATA["Level Label expression"]]></labelExpression>
                                <axisLevelBucket order="None" class="java.lang.String">
                                    <bucketExpression><![CDATA[$F{the_month}]]></bucketExpression>
                                </axisLevelBucket>
                            </axisLevel>
                        </dataAxis>
                        <dataAxis axis="Columns"/>
                        <multiAxisMeasure name="Store Sales" class="java.lang.Integer" calculation="Nothing">
                            <labelExpression><![CDATA["Store Sales"]]></labelExpression>
                            <valueExpression><![CDATA[$F{store_sales}]]></valueExpression>
                        </multiAxisMeasure>
                        <multiAxisMeasure name="Unit Sales" class="java.lang.Integer" calculation="Nothing">
                            <labelExpression><![CDATA["Unit Sales"]]></labelExpression>
                            <valueExpression><![CDATA[$F{unit_sales}]]></valueExpression>
                        </multiAxisMeasure>
                        <multiAxisMeasure name="Profit" class="java.lang.Integer" calculation="Nothing">
                            <labelExpression><![CDATA["Profit"]]></labelExpression>
                            <valueExpression><![CDATA[$F{store_sales}.intValue() -$F{unit_sales}.intValue()]]></valueExpression>
                        </multiAxisMeasure>
                    </multiAxisData>
                    <hc:series name="Store Sales"/>
                    <hc:series name="Unit Sales"/>
                    <hc:series name="Profit"/>
                </hc:chart>
            </componentElement>
        </band>
    </summary>
</jasperReport>
 

January 14, 2016

January 12, 2016

Hi Folks,
This tutorial talks about step by step procedure to write a custom Scriptlet in Jasper Design Studio

Environment : 
Jasper Design Studio 6.2 Professional ,
Eclipse Mars.1 Release (4.5.1)

Aim of the tutorial : Print "Hello..." information on summary band. 
1) Choose your Java Editor 
        (I have taken Eclipse for this tutorial user friendly for Eclipse
            - Netbeans is developer friendly for iReport Designer)

2) Create Java Project 
     File -> New -> Project -> Java Project -> Give Project Name as "Test"

3) Add Jasper Server jar file to Project Path
Right click on Project Name -> Build Path ->Configure Build Path -> Libraries -> Add External Jar Files -> Locate the jar file from below location -> Click on Apply -> OK
   Location of Jar File : 
      C:\Jaspersoft\jasperreports-server-6.2.0\apache-tomcat\webapps\jasperserver-pro\WEB-INF\lib
   Jar File Name : jasperreports-pro-6.0.0.jar

4)  Create a Package & a Class inside it with your business logic

Package name is : com.sadakar.jasper
Class Name is : Test4

package com.sadakar.jasper;
import net.sf.jasperreports.engine.JRDefaultScriptlet;
import net.sf.jasperreports.engine.JRScriptletException;

public class Test4 extends JRDefaultScriptlet{

    public String hello() throws JRScriptletException
    {
        return "Hello! I'm the report's scriptlet object.";
    }
}





NOTE :
 Scriplets can be written using  JRDefaultScriptlet  and  JRAbstractScriptlet
The current example is a user defined scriptlet hence it should import JRDefaultScriptlet
More information can be found at : http://jasperreports.sourceforge.net/sample.reference/scriptlet/

We can not run  the class as Java Application. To run it as a Java Application it requires main() method.

5) Make the Project as Jar File (Export the project as a Jar File)
Right click on the "Test" Project -> Export -> Java (JAR File). 
 I have given jar file name as "test"

6) Make use of Custom Java Code from the exported Jar File in Studio  - How ?  

a) Put the Jar in Studio Project Path 
   Right Click on "My Reports" Project -> Build Path -> Configure Build Path -> Libraries -> Add External Libraries ->("test" jar from your exported location from Eclipse) ->

b) Creating a sample JRXML to test the hello() method from the JAVA Code
     i) Create a JRXML
     ii) Remove unnecessary bands
     iii) Go to "Scriptlets" section from "Outline" window
     iv) Right Click on "Scriplets" and then  click on "Create Scriptlet"
     v) Give Name="Hello" and Class="com.sadakar.jasper.Test4"  (with out double quotes).
     vi) Observe that as quick as you create Scriptlet, Jasper Studio engine creates a parameter
           in  "Parameters" node. Here it will create "Hello_SCRIPTLET"
     vi) Now, call the hello() method anywhere in the report
           Drag a "Text Filed" to the summary and write this expression
                                            $P{Hello_SCRIPTLET}.hello()


 NOTE : If you don't use any data source to the report select No Data Type = "All sections No Detail" to the report in its properties

 7) Save , Compile and run the report. 




Download Examples : 
JRXML+JAR File + Complete Eclipse Project 

I hope this helps some one to get start with scriptlets in jasper

References : 
http://jasperreports.sourceforge.net/sample.reference/scriptlet/
http://blog.sacaluta.com/2007/07/jasperreports-scriptlet-example.html

January 12, 2016

December 15, 2015

Hi Folks,

 (Theory will update here later tomorrow or so, meanwhile use the JRXML to view the output)

Data bases used : 
1) MySQL , sakila db
2) PostgreSQL foodmart db.

Sample output



Copy paste this code in your JRXML source code and observe the "Dataset1" data source parameters and connections as well the main report query and its connection.

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.1.0.final using JasperReports Library version 6.1.0  -->
<!-- 2015-12-16T00:19:39 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="MyFirst Report" pageWidth="610" pageHeight="842" columnWidth="570" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="295ab2d1-1932-4c33-823a-b088e233383f">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Sakila - MySQL"/>
    <property name="com.jaspersoft.studio.unit." value="pixel"/>
    <property name="com.jaspersoft.studio.unit.pageHeight" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.pageWidth" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.topMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.bottomMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.leftMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.rightMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.columnWidth" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.columnSpacing" value="pixel"/>
    <style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table_CH" mode="Opaque" backcolor="#BFE1FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table 1_TH" mode="Opaque" backcolor="#F0F8FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table 1_CH" mode="Opaque" backcolor="#BFE1FF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="Table 1_TD" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
            <topPen lineWidth="0.5" lineColor="#000000"/>
            <leftPen lineWidth="0.5" lineColor="#000000"/>
            <bottomPen lineWidth="0.5" lineColor="#000000"/>
            <rightPen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <subDataset name="Dataset1" uuid="d0d375a4-ddad-4353-8013-29dd8f924ee6">
        <property name="com.jaspersoft.studio.data.defaultdataadapter" value="foodmart"/>
        <queryString>
            <![CDATA[select * from customer  limit 10]]>
        </queryString>
        <field name="customer_id" class="java.lang.Integer"/>
        <field name="account_num" class="java.lang.Long"/>
        <field name="lname" class="java.lang.String"/>
        <field name="fname" class="java.lang.String"/>
    </subDataset>
    <parameter name="Parameter1" class="java.sql.Connection">
        <defaultValueExpression><![CDATA[java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/foodmart","postgres","postgres")]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[select * from actor limit 5]]>
    </queryString>
    <field name="actor_id" class="java.lang.Integer">
        <fieldDescription><![CDATA[]]></fieldDescription>
    </field>
    <field name="first_name" class="java.lang.String">
        <fieldDescription><![CDATA[]]></fieldDescription>
    </field>
    <field name="last_name" class="java.lang.String">
        <fieldDescription><![CDATA[]]></fieldDescription>
    </field>
    <field name="last_update" class="java.sql.Timestamp">
        <fieldDescription><![CDATA[]]></fieldDescription>
    </field>
    <title>
        <band height="30">
            <textField>
                <reportElement mode="Opaque" x="0" y="0" width="555" height="30" forecolor="#FFFFFF" backcolor="#140AA6" uuid="b7e23fc2-6761-4e4c-9d81-3ed743736088"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Left" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <textFieldExpression><![CDATA["Sample Data from MySQL (actors Table from Sakila DB) - Usal Grid Data"]]></textFieldExpression>
            </textField>
        </band>
    </title>
    <columnHeader>
        <band height="30">
            <staticText>
                <reportElement x="0" y="0" width="141" height="30" uuid="3eb6afeb-84ce-43ec-89bb-12deef6ea8cc"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[Actor ID]]></text>
            </staticText>
            <staticText>
                <reportElement x="141" y="0" width="138" height="30" uuid="0447724f-01b9-467b-b63d-1cc3b32f21d9"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[First Name]]></text>
            </staticText>
            <staticText>
                <reportElement x="279" y="0" width="138" height="30" uuid="b6cb62b5-ca07-4059-b336-0d7bbc9c144d"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[Last Name]]></text>
            </staticText>
            <staticText>
                <reportElement x="417" y="0" width="138" height="30" uuid="f8e0ace8-5bda-4a21-8b6a-59a5ced2ab28"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[Last Update]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="30">
            <textField>
                <reportElement x="0" y="0" width="141" height="30" uuid="1cc25a45-7e39-45d5-ba5a-d0fd7002f754"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{actor_id}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="141" y="0" width="138" height="30" uuid="dac36d6a-dd6e-4733-b8a6-377fd5bceb81"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{first_name}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="279" y="0" width="138" height="30" uuid="02859075-ae5d-4c2e-8a83-09fe29abb34c"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{last_name}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="417" y="0" width="138" height="30" uuid="bffb90ed-fc35-41b4-a39b-fe28af23e307"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{last_update}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <summary>
        <band height="100" splitType="Stretch">
            <componentElement>
                <reportElement x="0" y="40" width="560" height="60" uuid="fdcac2e9-0944-42ed-bf44-7b73595775bf"/>
                <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
                    <datasetRun subDataset="Dataset1" uuid="70bb99c8-d50e-43df-a7da-9c4ad8b50ac8">
                        <datasetParameter name="REPORT_CONNECTION">
                            <datasetParameterExpression><![CDATA[java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/foodmart","postgres","postgres")]]></datasetParameterExpression>
                        </datasetParameter>
                    </datasetRun>
                    <jr:column width="130" uuid="b05aaed5-3d79-4bde-877e-c27574732176">
                        <jr:columnHeader style="Table 1_CH" height="30">
                            <staticText>
                                <reportElement x="0" y="0" width="130" height="30" uuid="b06296b3-25a3-4ab5-8e07-8bb87252e358"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle">
                                    <font size="12" isBold="true"/>
                                </textElement>
                                <text><![CDATA[Customer ID]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="Table 1_TD" height="30">
                            <textField>
                                <reportElement x="0" y="0" width="130" height="30" uuid="491cf206-6da6-4935-9583-1bcd01b054ed"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                                <textFieldExpression><![CDATA[$F{customer_id}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="130" uuid="0e829c3e-9ce9-413c-b7f7-5c422600915c">
                        <jr:columnHeader style="Table 1_CH" height="30">
                            <staticText>
                                <reportElement x="0" y="0" width="130" height="30" uuid="e562ec15-d83d-4d24-ad05-8f9089e00417"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle">
                                    <font size="12" isBold="true"/>
                                </textElement>
                                <text><![CDATA[Account Number]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="Table 1_TD" height="30">
                            <textField>
                                <reportElement x="0" y="0" width="130" height="30" uuid="9f092a95-c914-4cb3-833a-0533262218e8"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                                <textFieldExpression><![CDATA[$F{account_num}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="160" uuid="d6835cd4-c0c8-4572-9c1f-69757dae0058">
                        <jr:columnHeader style="Table 1_CH" height="30">
                            <staticText>
                                <reportElement x="0" y="0" width="160" height="30" uuid="9740787e-699e-4bf6-afdb-8a42a9be401f"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle">
                                    <font size="12" isBold="true"/>
                                </textElement>
                                <text><![CDATA[Last Name]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="Table 1_TD" height="30">
                            <textField>
                                <reportElement x="0" y="0" width="160" height="30" uuid="aa773812-1211-458d-9db9-d6a2158b15d5"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                                <textFieldExpression><![CDATA[$F{lname}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="140" uuid="66e70e1b-089b-4f37-abca-177c15501335">
                        <jr:columnHeader style="Table 1_CH" height="30">
                            <staticText>
                                <reportElement x="0" y="0" width="140" height="30" uuid="6ad992bd-f73d-4d76-a641-e2b5c020f178"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle">
                                    <font size="12" isBold="true"/>
                                </textElement>
                                <text><![CDATA[First Name]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="Table 1_TD" height="30">
                            <textField>
                                <reportElement x="0" y="0" width="140" height="30" uuid="490c9352-0017-47ba-a35d-03264e28682c"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                                <textFieldExpression><![CDATA[$F{fname}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                </jr:table>
            </componentElement>
            <textField>
                <reportElement mode="Opaque" x="0" y="15" width="560" height="25" forecolor="#FFFFFF" backcolor="#140AA6" uuid="e04d653c-7197-4ffe-8078-c70d101190b4">
                    <property name="com.jaspersoft.studio.unit.height" value="pixel"/>
                </reportElement>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Left" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <textFieldExpression><![CDATA["Sample Data from PostgreSQL(customers table from foodmart DB) - Table Component"]]></textFieldExpression>
            </textField>
        </band>
    </summary>
</jasperReport>


How to get the same output in the Jasper Server ? 
By creating Virtual Data source defined in Jasper Server and pointing out the report to use this data source.

NOTE : Virtual Data source concept is an enterprise feature in Jaspersoft BI. 

References : 
http://community.jaspersoft.com/wiki/multiple-datasources-ireport-lists-tables-and-subreports
http://community.jaspersoft.com/wiki/connecting-jasperreports-server-your-database



December 15, 2015

December 8, 2015


This post will give you the inputs on how to get the non rounded(exact values) after decimal points for Double or Big Decimal types in Jasper Reports/(Java).

There are situations in reporting to display the exact values after decimal point for some purpose.

For example : 
4.53455 should get printed as 4.53
0.234 should get printed as 0.23,
0.057 should get printed as 0.05 (but not 0.06 by rounding)
0.389 should get printed as 0.38 (but not 0.39 by rounding)

The above implementation in  JAVA is pretty easy but in jasper it would be a tricky as shown in below examples.

Examples : 
new BigDecimal(new Double(0.05592538471251264)).setScale(1, RoundingMode.DOWN)

new BigDecimal(new Double(1.9596988841721044)).setScale(1, RoundingMode.DOWN)

new BigDecimal(new Double(91.0)).setScale(1, RoundingMode.DOWN)

new BigDecimal(new Double(.0)).setScale(1, RoundingMode.DOWN)

Sample output : 
 
Sample JRXML :  ( Copy paste the below code in your source in professional studio)

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.0.1.final using JasperReports Library version 6.0.0  -->
<!-- 2015-12-08T13:29:09 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4_1" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="927e91d9-da47-46ff-b6a9-744c47f3dff0">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <title>
        <band height="298" splitType="Stretch">
            <textField>
                <reportElement mode="Opaque" x="153" y="72" width="180" height="40" backcolor="#BFF2CF" uuid="a39e7410-e811-4545-81b2-94d0239c43ee"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA[String.format("%.1f",0.05592538471251264)]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="153" y="122" width="180" height="30" backcolor="#EFDAF7" uuid="69394848-d852-4f9f-b3b3-f644e06608ed"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA[new BigDecimal(new Double(0.05592538471251264)).setScale(1, RoundingMode.DOWN)]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="-1" y="122" width="154" height="30" backcolor="#EFDAF7" uuid="4b65ff63-e767-43a4-806e-0b8548175946"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA["0.05592538471251264"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="150" y="160" width="183" height="30" backcolor="#EFDAF7" uuid="6595f244-af18-4c15-aa98-95494397055b"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA[new BigDecimal(new Double(1.9596988841721044)).setScale(1, RoundingMode.DOWN)]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="-1" y="160" width="151" height="30" backcolor="#EFDAF7" uuid="5088a6a2-d02c-4461-81e5-afeb3d0e667f"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA["1.9596988841721044"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="353" y="122" width="180" height="30" backcolor="#EFDAF7" uuid="7b137a50-3266-48e1-b6f6-5d96c706e7aa"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA["("+new BigDecimal(new Double(0.05592538471251264)).setScale(1, RoundingMode.DOWN) +"%"+")"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="352" y="161" width="183" height="30" backcolor="#EFDAF7" uuid="eb1c793d-be6b-4140-ab17-403e509b70a2"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA["("+new BigDecimal(new Double(1.9596988841721044)).setScale(1, RoundingMode.DOWN)+"%"+")"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="-1" y="203" width="154" height="30" backcolor="#EFDAF7" uuid="2be78c2f-121a-420f-840a-4053ca87699c"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA["91.0"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="355" y="204" width="183" height="30" backcolor="#EFDAF7" uuid="365e3fae-e19e-4f49-aa7a-020438455903"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA["("+new BigDecimal(new Double(91.0)).setScale(1, RoundingMode.DOWN)+"%"+")"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="153" y="203" width="183" height="30" backcolor="#EFDAF7" uuid="3ffc22a8-ce74-4780-a6ab-af43b9e1b10d"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA[new BigDecimal(new Double(91.0)).setScale(1, RoundingMode.DOWN)]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="152" y="248" width="183" height="30" backcolor="#EFDAF7" uuid="c7450588-2e81-44a8-bff9-c96a7fa645dd"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA[new BigDecimal(new Double(.0)).setScale(1, RoundingMode.DOWN)]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="354" y="249" width="183" height="30" backcolor="#EFDAF7" uuid="fb7c9922-230e-475c-afe1-1aa0b675097a"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA["("+new BigDecimal(new Double(.0)).setScale(1, RoundingMode.DOWN)+"%"+")"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="-1" y="248" width="153" height="30" backcolor="#EFDAF7" uuid="6d9ccc44-f198-499b-9385-c2d25bd2a46b"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA[".0"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="1" y="72" width="151" height="40" backcolor="#BFF2CF" uuid="a5f36874-8b7c-45cd-bd3b-f8cbe33c2418"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA["0.05592538471251264"+"\n"+"Using String format"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="353" y="72" width="180" height="40" backcolor="#BFF2CF" uuid="2f2688c8-b600-4acc-a069-7a22fe263ae8"/>
                <box rightPadding="10">
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12"/>
                </textElement>
                <textFieldExpression><![CDATA["("+String.format("%.1f",0.05592538471251264) +"%"+")"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement mode="Opaque" x="0" y="21" width="555" height="30" backcolor="#E3E1E3" uuid="c103067c-da2e-4091-b18c-357aebf5e113"/>
                <box>
                    <topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                    <rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <textFieldExpression><![CDATA["Display RoundingMode.DOWN values for Decimal Types in Jasper Reports"]]></textFieldExpression>
            </textField>
        </band>
    </title>
</jasperReport>


References : 
1) http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html
2) http://docs.oracle.com/javase/7/docs/api/java/math/RoundingMode.html

December 8, 2015

December 7, 2015

Hi Folks,

This post will teach you how to work with 100% horizontal stacked highcharts bar chart in Jasper reports and how to work with Advanced properties of it.

I hope this would help some one in saving their(s) time.

Software used to test this example : 
1) Jasper Design Studio 6.1
2) foodmart database of postgresql
3) Jasper Server 6.0.1 professional & Mozilla firefox web browser.

Sample output of the report : 
I hope you have already knew how to create a new report hence skipping some basic steps and concentrating in explaining core parts.
1) Sample Query Design
SELECT
    occupation,
    state_province,
    SUM(num_cars_owned) cars
FROM customer c
WHERE state_province IN('CA','WA','OR')
GROUP BY
    occupation ,
    state_province
ORDER BY
    occupation,
    state_province

2) Sample output of the query 

3) Drag and drop "StackedPercBar" chart from HTML-5 charts component from Palette section.

4)  Right click on it get the chart properties.
   In chart data section & under configuration tab give below.
Category : $F{occupation} (of java.lang.String type)
Series : $F{state_province} (of java.lang.String type)
Measures : $F{cars} (of java.lang.Integer type)

5) Come back to the chart properties and click on Advanced Properties and click on "Add" button to add below properties.

plotOptions.series.dataLabels.enabled = ture
(Tick the check box) - to enable the values
plotOptions.series.dataLabels.format =" {point.percentage:.0f} % "
(tick the check box) - to get the %'s
plotOptions.series.dataLabels.color = #FF0000
(do not check the tick box) - to get the colors for values

See below image for accuracy 


6) Save the report, publish it the server and have preview. Output should look as shown in first image to this post.

JRXML code : (copy paste the code to get the same copy in your JRXML source , note that it will only work in professional studio or iReport).

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.0.1.final using JasperReports Library version 6.0.0  -->
<!-- 2015-12-07T21:20:57 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4_1" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="f8b9b5a2-390b-4136-94c7-00c39ec1a61d">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="foodmart"/>
    <property name="ireport.jasperserver.url" value="http://localhost:8080/jasperserver-pro/"/>
    <property name="ireport.jasperserver.user" value="superuser"/>
    <property name="ireport.jasperserver.report.resource" value="/Explore/HTML5BarChart_files/main_jrxml"/>
    <property name="ireport.jasperserver.reportUnit" value="/Explore/HTML5BarChart"/>
    <queryString language="SQL">
        <![CDATA[SELECT
    occupation,
    state_province,
    SUM(num_cars_owned) cars
FROM customer c
WHERE state_province IN('CA','WA','OR')
GROUP BY
    occupation ,
    state_province
ORDER BY
    occupation,
    state_province
]]>
    </queryString>
    <field name="occupation" class="java.lang.String"/>
    <field name="cars" class="java.lang.Long"/>
    <field name="state_province" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <summary>
        <band height="340" splitType="Stretch">
            <componentElement>
                <reportElement x="0" y="0" width="555" height="340" uuid="b2a63a16-5851-438a-af78-98a11b27ddf3"/>
                <hc:chart xmlns:hc="http://jaspersoft.com/highcharts" xsi:schemaLocation="http://jaspersoft.com/highcharts http://jaspersoft.com/schema/highcharts.xsd" type="StackedPercentBar">
                    <hc:chartSetting name="default">
                        <hc:chartProperty name="chart.zoomType">
                            <hc:propertyExpression><![CDATA["xy"]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.enabled">
                            <hc:propertyExpression><![CDATA[false]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.href">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.text">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="legend.enabled">
                            <hc:propertyExpression><![CDATA[Boolean.FALSE]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="plotOptions.series.allowPointSelect">
                            <hc:propertyExpression><![CDATA[Boolean.TRUE]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="plotOptions.series.connectNulls">
                            <hc:propertyExpression><![CDATA[Boolean.TRUE]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="plotOptions.series.dataLabels.color" value="#FF0000"/>
                        <hc:chartProperty name="plotOptions.series.dataLabels.enabled">
                            <hc:propertyExpression><![CDATA[true]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="plotOptions.series.dataLabels.format">
                            <hc:propertyExpression><![CDATA[" {point.percentage:.0f} % "]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="plotOptions.series.selected">
                            <hc:propertyExpression><![CDATA[Boolean.TRUE]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="plotOptions.series.showCheckBox">
                            <hc:propertyExpression><![CDATA[Boolean.TRUE]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="title.text">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="yAxis.title.text">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                    </hc:chartSetting>
                    <multiAxisData>
                        <multiAxisDataset/>
                        <dataAxis axis="Rows">
                            <axisLevel name="Level1">
                                <labelExpression><![CDATA["Level Label expression"]]></labelExpression>
                                <axisLevelBucket class="java.lang.String">
                                    <bucketExpression><![CDATA[$F{occupation}]]></bucketExpression>
                                </axisLevelBucket>
                            </axisLevel>
                        </dataAxis>
                        <dataAxis axis="Columns">
                            <axisLevel name="state_province">
                                <labelExpression><![CDATA[]]></labelExpression>
                                <axisLevelBucket order="None" class="java.lang.String">
                                    <bucketExpression><![CDATA[$F{state_province}]]></bucketExpression>
                                </axisLevelBucket>
                            </axisLevel>
                        </dataAxis>
                        <multiAxisMeasure name="cars" class="java.lang.Integer" calculation="Nothing">
                            <labelExpression><![CDATA["Measure label expression"]]></labelExpression>
                            <valueExpression><![CDATA[$F{cars}]]></valueExpression>
                        </multiAxisMeasure>
                    </multiAxisData>
                    <hc:series name="cars"/>
                </hc:chart>
            </componentElement>
        </band>
    </summary>
</jasperReport>

Thank you for reading this post.

If you find it useful, please hit the share button to help the community.

Cheers.!
Sadakar Pochampalli


December 7, 2015

Hi folks,
Here is the small workout. Hope you may find it useful.

Requirement is subjected to this post. :-)

Steps : 
1) Right click on the bar chart ( Column vertical bar chart).
2) Click on "Show Advanced Properties"
3) Click on "Add" button to add below 3 properties.
plotOptions.series.dataLabels.enabled = true
NOTE :
# no double quotes for true & check tick mark of Use an expression
# This property enables the data values to show on bar(values would be outside of bar).

plotOptions.series.dataLabels.rotation= new Integer(90) 
NOTE:
# check the tick mark of Use an expression
# This property rotates the data values vertically on bar.

plotOptions.series.dataLabels.y= new Integer(-20) 
NOTE:
# check the tick mark of Use an expression
# This property is used to give the distance to the value vertically from the bar top. 

Sample output : 



How to in JRXML ?

  JRXML Code : 
(It works on foodmart database of Jasper postgresql & works with professional jasper studio only).

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.0.1.final using JasperReports Library version 6.0.0  -->
<!-- 2015-12-07T20:52:05 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="82e08b7f-0e4f-4aae-8514-6cdd45c368bf">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="foodmart - postgres"/>
    <property name="ireport.jasperserver.url" value="http://localhost:8080/jasperserver-pro/"/>
    <property name="ireport.jasperserver.user" value="superuser"/>
    <property name="ireport.jasperserver.report.resource" value="/Explore/HTML5BarChart2_files/main_jrxml"/>
    <property name="ireport.jasperserver.reportUnit" value="/Explore/HTML5BarChart2"/>
    <queryString language="SQL">
        <![CDATA[SELECT occupation,state_province, SUM(num_cars_owned) cars FROM customer c GROUP BY occupation ,state_province ORDER BY occupation ,state_province ]]>
    </queryString>
    <field name="occupation" class="java.lang.String"/>
    <field name="state_province" class="java.lang.String"/>
    <field name="cars" class="java.lang.Long"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <summary>
        <band height="343" splitType="Stretch">
            <componentElement>
                <reportElement x="0" y="0" width="555" height="343" uuid="a5884ec2-1cf0-447b-b1dc-ba58f5056eba"/>
                <hc:chart xmlns:hc="http://jaspersoft.com/highcharts" xsi:schemaLocation="http://jaspersoft.com/highcharts http://jaspersoft.com/schema/highcharts.xsd" type="Column">
                    <hc:chartSetting name="default">
                        <hc:chartProperty name="_showMeasureNameOnValueAxis">
                            <hc:propertyExpression><![CDATA[Boolean.TRUE]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="chart.zoomType">
                            <hc:propertyExpression><![CDATA["xy"]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.enabled">
                            <hc:propertyExpression><![CDATA[false]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.href">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="credits.text">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="plotOptions.series.dataLabels.enabled">
                            <hc:propertyExpression><![CDATA[true]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="plotOptions.series.dataLabels.rotation">
                            <hc:propertyExpression><![CDATA[new Integer(90)]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="plotOptions.series.dataLabels.y">
                            <hc:propertyExpression><![CDATA[new Integer(-20)]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="title.text">
                            <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression>
                        </hc:chartProperty>
                        <hc:chartProperty name="yAxis.title.text">
                            <hc:propertyExpression><![CDATA["Measure label expression"]]></hc:propertyExpression>
                        </hc:chartProperty>
                    </hc:chartSetting>
                    <multiAxisData>
                        <multiAxisDataset/>
                        <dataAxis axis="Rows">
                            <axisLevel name="Level1">
                                <labelExpression><![CDATA["Level Label expression"]]></labelExpression>
                                <axisLevelBucket class="java.lang.String">
                                    <bucketExpression><![CDATA[$F{occupation}]]></bucketExpression>
                                </axisLevelBucket>
                            </axisLevel>
                        </dataAxis>
                        <dataAxis axis="Columns"/>
                        <multiAxisMeasure name="Measure1" class="java.lang.Integer" calculation="Nothing">
                            <labelExpression><![CDATA["Measure label expression"]]></labelExpression>
                            <valueExpression><![CDATA[$F{cars}]]></valueExpression>
                        </multiAxisMeasure>
                    </multiAxisData>
                    <hc:series name="Measure1"/>
                </hc:chart>
            </componentElement>
        </band>
    </summary>
</jasperReport>


References : 
1) http://api.highcharts.com/highcharts#plotOptions.series.dataLabels 
2) http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/plotoptions/series-datalabels-align-left/ 
3) http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/plotoptions/series-datalabels-rotation/
4) http://community.jaspersoft.com/wiki/advanced-formatting-new-html5-charts

December 7, 2015

December 4, 2015

Hi,

Problem Statement : 
In some requirements, we need to print larger text value of a field in the reports & we do it dragging to the report console as usual but will stop with an error saying
java.lang.ArrayIndexOutOfBoundsException: 0 with out further error message. 

Solution : 
Its because  of the no compatability conversion understanding of SQL and Java to handle the spaces or tab spaces in the string value. 

We can overcome it at SQL level by using "replace" funciton. 

Lets say, the column name could be ProjectDescription in the SQL code. 
 & Lets assume one of the values for it is "This is a reporting project, this report is used to find the maximum of something and etc ..........up to some 3000 characters description". 

In SQL code use "replace" function to the field as shown below. 

Syntax : 
" replace([column_name], CHR(9))  " 
Example : 
replace(ProjectDescription,CHR(9))

 NOTE :
# This example is Oracle SQL specific, if you are working on other DBMS soft wares, find the similar replace function it and test. 

Similar issues can be found at below threads from community
1) http://community.jaspersoft.com/jasperreports-library/issues/4631
2) http://community.jaspersoft.com/questions/803333/tabs-text-mess-pdf-output
3) http://community.jaspersoft.com/questions/532690/using-tab-escape-sequence-text-field-expression

I hope this helps some one. !

Cheers..!
:-) :-) 
 

December 4, 2015

Hi Folks,
Here is a latest work around for displaying "All" when passing nothing from "Multi select parameter" in Jasper reports.

Concept :
Display the selected values of multi select parameter on the report.
Lets say if you select "USA","Mexico" from the multi select drop down, your report should display USA,Mexico
and if you select nothing in the drop down it should display All on the report instead of all the countries.


Solution :
Find the empty collection length, if the lenght is <=2 display "All" and if the lengh is > 2 display the selected values.
•    Create a Parameter as collection (coming from clarity)
            param_country (java.util.Collection)
•    Create another parameter which will calculate the length of multi select param
            param_country_length (java.lang.String)
        * Under default value expression, write below expression
                     $P{param_country}.toString().length()
•    Your Query for report should be as follows.

SELECT
        nvl(to_char(WM_CONCAT(replace(replace(Country_Field, '['), ']'))), 'All') cf
FROM customers
WHERE
    (
            ($P{param_country_length}) > 2 and $X{IN,lookup_code,param_inv_type}
            OR
            ($P{param_country_length}) < = 2
    )

  
    
* NOTE :

# "All" should not be a value from the dropdown.
# All should be handled from SQL code.
# Query used is Oracle SQL 11g (+) specific. Functions used in SQL code may not work in lesser versions.
# Tested the report using Jasper Design Studio 6.x Professional.
# On report to display the countries use filed instead of parameter name.
   i.e., $F{Country_Field} instead of $P{param_country}
# Do all this in a sub report and call it in main report because you can not handle it in main report.
# This may not work when you select "All" option available in the multi select drop down. ( Not tested).
# This is one of the ways, we have implemented in a report. I believe there could be other ways to solve the same.

Thanks,
Sadakar Pochampalli
Open Source BI specialist. 






  

December 4, 2015

Pages

Feedback