<?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"/> <label x="0" y="0" width="100%" height="50" fontname="Arial" color="white" vertical-alignment="middle" alignment="center" fontsize="18" fontstyle="bold">OLAP Data from Mondrian in JFreeReport</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> </group --> <group name="DepartmentGroup"> <fields> <field>REGION</field> <field>DEPARTMENT</field> </fields> <groupheader fontname="Arial" fontsize="9" 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="20%" y="10" width="20%" height="14" alignment="center" fontsize="11" >Central</label> <label x="40%" y="10" width="20%" height="14" alignment="center" fontsize="11" >Eastern</label> <label x="60%" y="10" width="20%" height="14" alignment="center" fontsize="11" >Southern</label> <label x="80%" y="10" width="20%" height="14" alignment="center" fontsize="11" >Western</label> <label x="20%" y="25" width="10%" height="14" alignment="right">Actual</label> <label x="30%" y="25" width="10%" height="14" alignment="right">Budget</label> <label x="40%" y="25" width="10%" height="14" alignment="right">Actual</label> <label x="50%" y="25" width="10%" height="14" alignment="right">Budget</label> <label x="60%" y="25" width="10%" height="14" alignment="right">Actual</label> <label x="70%" y="25" width="10%" height="14" alignment="right">Budget</label> <label x="80%" y="25" width="10%" height="14" alignment="right">Actual</label> <label x="90%" y="25" width="10%" height="14" alignment="right">Budget</label> </groupheader> </group> </groups> <!-- This is what is called 'detail' in JasperReports --> <items fontname="Arial" fontsize="9" height="12"> <string-field x="0%" y="0" width="20%" height="12" fieldname="Department"/> <!-- string-field x="179" y="0" width="60" height="12" fieldname="Header 2"/ --> <number-field x="20%" y="0" width="10%" height="12" fieldname="Central/Actual/Measures" format="$#,##0" alignment="right" /> <number-field x="30%" y="0" width="10%" height="12" fieldname="Central/Budget/Measures" format="$#,##0" alignment="right" /> <number-field x="40%" y="0" width="10%" height="12" fieldname="Eastern/Actual/Measures" format="$#,##0" alignment="right" /> <number-field x="50%" y="0" width="10%" height="12" fieldname="Eastern/Budget/Measures" format="$#,##0" alignment="right" /> <number-field x="60%" y="0" width="10%" height="12" fieldname="Southern/Actual/Measures" format="$#,##0" alignment="right" /> <number-field x="70%" y="0" width="10%" height="12" fieldname="Southern/Budget/Measures" format="$#,##0" alignment="right" /> <number-field x="80%" y="0" width="10%" height="12" fieldname="Western/Actual/Measures" format="$#,##0" alignment="right" /> <number-field x="90%" y="0" width="10%" height="12" fieldname="Western/Budget/Measures" 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> </functions> </report>