<?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() &lt; 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() &lt; 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() &lt; 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>