<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE report PUBLIC "-//JFreeReport//DTD report definition//EN//simple/version 0.8.5" "http://jfreereport.sourceforge.net/report-085.dtd"> <!-- The report needs JFreeReport 0.8.6 or the message-field contents will look funny. --> <report name="Quadrant For Region" orientation="portrait" pageformat="LETTER" topmargin="36" leftmargin="36" bottommargin="36" rightmargin="36"> <!-- This is what is called 'title' in JasperReports --> <reportheader> <rectangle x="0" y="0" width="100%" height="50" color="#0000CC" fill="true" draw="false"/> <resource-label x="0" y="0" width="100%" height="50" fontname="Arial" color="white" vertical-alignment="middle" alignment="center" fontsize="18" fontstyle="bold">report_title</resource-label> <!-- Add a drawable field here for a chart --> </reportheader> <groups> <group name="RegionGroup"> <fields> <field>REGION</field> </fields> <groupheader fontname="Arial" fontsize="18" fontstyle="bold"> <string-field x="0" y="0" width="310" height="23" fieldname="REGION" color="#009999"/> </groupheader> <groupfooter fontname="Arial" fontsize="12" fontstyle="bold" pagebreak-after-print="true" > <rectangle x="0" y="0" width="100%" height="100%" color="#009999" draw="false" fill="true"/> <message-field x="0" y="0" width="246" height="15" color="white">$(REGION) Total</message-field> <number-field x="246" y="0" width="98" height="15" fieldname="RegionActual" format="$#,##0" alignment="right" /> <number-field x="344" y="0" width="98" height="15" fieldname="RegionBudget" format="$#,##0" alignment="right" /> <number-field name="Variance Region Field" x="442" y="0" width="98" height="15" fieldname="RegionVariance" format="$#,##0" alignment="right" /> </groupfooter> </group> <group name="DepartmentGroup"> <fields> <field>REGION</field> <field>DEPARTMENT</field> </fields> <groupheader fontname="Arial" fontsize="11" fontstyle="bold"> <rectangle x="0" y="0" width="100%" height="100%" color="#FF6600" draw="false" fill="true"/> <message-field x="0" y="4" width="100%" height="18" color="white" fontsize="12">Department: $(DEPARTMENT)</message-field> <label x="19" y="25" width="227" height="14">Position</label> <label x="246" y="25" width="98" height="14">Actual</label> <label x="344" y="25" width="98" height="14">Budget</label> <label x="442" y="25" width="98" height="14">Variance</label> </groupheader> <!-- By specifiying a band height that is greater than the used size, we enforce some empty space between the groups. --> <groupfooter fontname="Arial" fontsize="11" fontstyle="bold" height="24"> <rectangle x="19" y="0" width="100%" height="14" color="#66FF66" fill="true"/> <label x="19" y="0" width="227" height="14">Total</label> <number-field x="246" y="0" width="98" height="14" fieldname="DepartmentActual" format="$#,##0" alignment="right" /> <number-field x="344" y="0" width="98" height="14" fieldname="DepartmentBudget" format="$#,##0" alignment="right" /> <number-field name="Variance Department Field" x="442" y="0" width="98" height="14" fieldname="DepartmentVariance" format="$#,##0" alignment="right" /> </groupfooter> </group> </groups> <!-- This is what is called 'detail' in JasperReports --> <items fontname="Arial" fontsize="10"> <string-field x="19" y="0" width="227" height="12" fieldname="POSITIONTITLE"/> <number-field x="246" y="0" width="98" height="12" fieldname="ACTUAL" format="$#,##0" alignment="right" /> <number-field x="344" y="0" width="98" height="12" fieldname="BUDGET" format="$#,##0" alignment="right" /> <number-field name="Variance Field" x="442" y="0" width="98" height="12" fieldname="VARIANCE" format="$#,##0" alignment="right" /> </items> <functions> <!-- This makes sure, that we can access the parameter as if it was a column from the table --> <property-ref name="REGION"/> <expression class="org.jfree.report.modules.misc.beanshell.BSHExpression" name="isVarianceNegative"> <properties> <property name="expression"> Object getValue() { Object value = dataRow.get("VARIANCE"); if (value instanceof Number == false) { return Boolean.FALSE; } Number number = (Number) value; if (number.doubleValue() < 0) { return Boolean.TRUE; } return Boolean.FALSE; } </property> </properties> </expression> <expression class="org.jfree.report.function.ElementColorFunction" name="changeColor"> <properties> <property name="element">Variance Field</property> <property name="field">isVarianceNegative</property> <property name="colorTrue">red</property> <property name="colorFalse">black</property> </properties> </expression> <expression class="org.jfree.report.modules.misc.beanshell.BSHExpression" name="isDepartmentVarianceNegative"> <properties> <property name="expression"> Object getValue() { Object value = dataRow.get("DepartmentVariance"); if (value instanceof Number == false) { return Boolean.FALSE; } Number number = (Number) value; if (number.doubleValue() < 0) { return Boolean.TRUE; } return Boolean.FALSE; } </property> </properties> </expression> <expression class="org.jfree.report.function.ElementColorFunction" name="changeDepartmentColor"> <properties> <property name="element">Variance Department Field</property> <property name="field">isDepartmentVarianceNegative</property> <property name="colorTrue">red</property> <property name="colorFalse">black</property> </properties> </expression> <expression class="org.jfree.report.modules.misc.beanshell.BSHExpression" name="isRegionVarianceNegative"> <properties> <property name="expression"> Object getValue() { Object value = dataRow.get("RegionVariance"); if (value instanceof Number == false) { return Boolean.FALSE; } Number number = (Number) value; if (number.doubleValue() < 0) { return Boolean.TRUE; } return Boolean.FALSE; } </property> </properties> </expression> <expression class="org.jfree.report.function.ElementColorFunction" name="changeRegionColor"> <properties> <property name="element">Variance Region Field</property> <property name="field">isRegionVarianceNegative</property> <property name="colorTrue">red</property> <property name="colorFalse">black</property> </properties> </expression> <expression class="org.jfree.report.modules.misc.beanshell.BSHExpression" name="short_dep_name"> <properties> <property name="expression"> Object getValue() { Object value = dataRow.get("DEPARTMENT"); if (value == null) return null; if (value.equals("Executive Management")) return "Executive"; if (value.equals("Human Resource")) return "HR"; if (value.startsWith("Marketing")) return "Marketing"; if (value.equals("Product Development")) return "Dev"; if (value.equals("Professional Services")) return "Services"; return value; } </property> </properties> </expression> <expression class="org.jfree.report.function.ItemSumFunction" name="RegionActual"> <properties> <property name="field">ACTUAL</property> <property name="group">RegionGroup</property> </properties> </expression> <expression class="org.jfree.report.function.ItemSumFunction" name="RegionBudget"> <properties> <property name="field">BUDGET</property> <property name="group">RegionGroup</property> </properties> </expression> <expression class="org.jfree.report.function.ItemSumFunction" name="RegionVariance"> <properties> <property name="field">VARIANCE</property> <property name="group">RegionGroup</property> </properties> </expression> <expression class="org.jfree.report.function.ItemSumFunction" name="DepartmentActual"> <properties> <property name="field">ACTUAL</property> <property name="group">DepartmentGroup</property> </properties> </expression> <expression class="org.jfree.report.function.ItemSumFunction" name="DepartmentBudget"> <properties> <property name="field">BUDGET</property> <property name="group">DepartmentGroup</property> </properties> </expression> <expression class="org.jfree.report.function.ItemSumFunction" name="DepartmentVariance"> <properties> <property name="field">VARIANCE</property> <property name="group">DepartmentGroup</property> </properties> </expression> </functions> </report>