Objective
This page contains snippets and blocks of code that are useful for editing iReport XML templates.
Difficulty: EXPERT
Page Contents
Assumptions
You have full admin access to ParadigmEMS
You are a competent user of ParadigmEMS
You have already downloaded Jasper iReport v3.0
Implications
Warning
Use the following as a checklist before uploading a modified iReport template into Paradigm
1. Never change the report file name
2. Only full admin users can edit reports
3. Compile before uploading a changed document
4. Make sure all elements are NOT bordered in red as that suggests the element is not positioned correctly
5. Do not move elements or fields out of their default bands
Java Conditions
new Boolean($P{letterNumber}.equalsIgnoreCase("1st")||$P{letterNumber}.equalsIgnoreCase("2nd")) new Boolean ( ! $F{provider_code}.equals( "Morling" ) ) new Boolean( $V{amountDueTotal}.compareTo( new Double (0.00) ) > 0 ) new Boolean ( $V{PAGE_NUMBER}.toString() == "1" ) new Boolean ($F{chessn}!=null && !$P{unitEnrolmentEndDate}.equals("")) new Boolean ( $F{course_level}.equals("VET")) new Boolean ( $F{enrolment_status_id}.equals( "ENROLMENT_COMPLETED" ) )
Dates
new SimpleDateFormat("dd MMMM yyyy").format( new Date()) new java.util.Date(2017, 1, 1) "Teaching Period: " + new SimpleDateFormat("dd MMMM yyyy").format( $F{current_semester_name} ) new SimpleDateFormat("EEEEE, dd MMMMM yyyy").parse($P{todaysDate}) new SimpleDateFormat("dd/MM/yyyy").format($P{report_date}) "Admitted to the "+$F{course_name}+" on "+new SimpleDateFormat("MMMMM dd, yyyy").format($F{course_enrolment_start_date}) to include st, nd, rd, th in date, do it in SQL, and pass string field to ireport instead of date field: to_char(epe.grad_date, 'DDth FMMonth YYYY') within ireport: new SimpleDateFormat("ddth MMMM yyyy").format(new Date())
Casting
"You currently owe: $" + new DecimalFormat("###0.00").format($V{amountDueTotal}).toString() $V{PAGE_NUMBER}.toString() "Total credit points required: " + new DecimalFormat("0").format($F{credit_points_required}).toString() ( $V{gpa_total}==null ? new Double (0) : $V{gpa_total} )
Static Field Formatting
Inline Casting of Fields
"Accumulated grade point average: " + ( $V{gpa_total}==null ? "0.00" : new DecimalFormat("0.00").format($V{gpa_total}).toString() )
Uppercase
Example: $V{studentFormalName}.toUpperCase()
Text Field Formatting
Be Advised
Select the Text field in target, right click and go Properties. In the Font tab of the field's Properties window, set the "is styled text" to true, and in the Markup drop down, select the "HTML" option. "Is styled text" is now deprecated but still functions.
Bold
<style isBold=\"true\" pdfFontName=\"Helvetica-Bold\"> This becomes bold </style>
Underline
<style isUnderline=\"true\" >Underline me! </style>
Italic
<style isItalic=\"true\" pdfFontName=\"Helvetica-Oblique\"> I'm leaning to one side </style>
Colour
<style forecolor=\"#0000ff\"> Colour me surprised </style>
Dot-points
+"•"
Hyperlink
The hyperlinkTarget attribute behaves in the same way as the target attribute in HTML. Note that only textFields, images, and charts can be hyperlinked in this way.
To make a textField a hyperlink to an external URL, you need to add the attribute hyperlinkType="Reference" to the element, and add a <hyperlinkReferenceExpression> tag within it. The reference expression is where you put the URL. For example:
<textField hyperlinkType="Reference" hyperlinkTarget="Blank"> <reportElement x="5" y="5" width="200" height="15"/> <textElement/> <textFieldExpression class="java.lang.String"><![CDATA["Click Here!"]]></textFieldExpression> <hyperlinkReferenceExpression><![CDATA["http://www.google.com"]]></hyperlinkReferenceExpression> </textField>Escaping
Escaping Double Quote
"Thank you for your application for enrolment at Group Colleges Australia (\"GCA\") Pty Ltd trading as Universal Business School Sydney (UBSS)."
Escaping Special Characters
Replace "&" with "&"
"<style isBold=\"true\" pdfFontName=\"Helvetica-Bold\">" +$F{edu_other_unit_id}.trim() + "</style> (" + $F{unit_name}.replaceAll("&","&") + ")"
MSWord Entities
Replacing fancy quotes and long dash
REGEXP_REPLACE(REGEXP_REPLACE(ce.content, '&[lr]dquo;', '"', 'g'), '–', '-', 'g') as content,
Sample Dynamic Where Clauses
( $P{studentPartyId}==null || $P{studentPartyId}.equals("") ? "" : "\n AND p.student_number = '" + $P{studentPartyId}+"'" ) + ( $P{studentNumber}==null || $P{studentNumber}.equals("") ? "" : "\n AND p.student_number = '" + $P{studentNumber}+"'" ) + ( $P{eduProgramEnrolmentId}==null || $P{eduProgramEnrolmentId}.equals("") ? "" : "\n AND epe.edu_program_enrolment_id = '"+$P{eduProgramEnrolmentId}+"'" ) + ( $P{courseProviderId}==null || $P{courseProviderId}.equals("") ? "" : "\n AND epe.home_institution_party_id IN " + $P{courseProviderId} ) + ( $P{courseIdList}==null || $P{courseIdList}.equals("") ? "" : "\n AND epe.edu_program_id IN " + $P{courseIdList} ) + ( $P{courseEnrolmentStatusList}==null || $P{courseEnrolmentStatusList}.equals("") ? "" : "\n AND epe.enrolment_status_id IN " + $P{courseEnrolmentStatusList} ) + ( $P{graduationDateFrom} == null || $P{graduationDateFrom}.equals("") ? "" : "\n AND epe.grad_date >='"+$P{graduationDateFrom}+"'" ) + ( $P{graduationDateTo} == null || $P{graduationDateTo}.equals("") ? "" : "\n AND epe.grad_date <= '"+$P{graduationDateTo}+"'" ) + ((($P{studentPartyId}==null || $P{studentPartyId}.equals(""))&& ($P{studentNumber}==null || $P{studentNumber}.equals(""))&& ($P{eduProgramEnrolmentId}==null || $P{eduProgramEnrolmentId}.equals(""))&& ($P{courseProviderId}==null || $P{courseProviderId}.equals(""))&& ($P{courseIdList}==null || $P{courseIdList}.equals(""))&& ($P{courseEnrolmentStatusList}==null || $P{courseEnrolmentStatusList}.equals(""))&& ($P{graduationDateFrom}==null || $P{graduationDateFrom}.equals(""))&& ($P{graduationDateTo}==null || $P{graduationDateTo}.equals("")) ) ? " AND epe.edu_program_enrolment_id='No Parameters'":"")
Sample Address Blocks
Provider Address: ($V{issuerName}!=null ? $V{issuerName} + "\n" : "" )+ "Student Accounts\n" + ($F{billing_property_name} != null ? $F{billing_property_name} + "\n" : "") + ($F{billing_postal_subaddress} != null ? $F{billing_postal_subaddress} + "\n" : ($F{billing_street_subaddress} != null ? $F{billing_street_subaddress} + "/" : "") + ($F{billing_street_number} != null ? $F{billing_street_number} + " " : "") + ($F{billing_street_name} != null ? $F{billing_street_name} + "\n" : "")) + ($F{billing_city} != null ? $F{billing_city} + " " : "") + ($F{billing_state_name} != null ? $F{billing_state_name} + " " : "") + ($F{billing_postal_code} != null ? $F{billing_postal_code} + "\n" : "") + ($F{billing_country_name} != null && !$F{billing_country_name}.equals("AUS") && !$F{billing_country_name}.equals("AUST") && !$F{billing_country_name}.equals("AUSTRALIA") && !$F{billing_country_name}.equals("Australia")? $F{billing_country_name} : "") +"\nPhone: " + ($F{billing_fixed_phone_number}!=null ? $F{billing_fixed_phone_number} : ($F{billing_other_phone_number}!=null ? $F{billing_other_phone_number} : ($F{billing_mobile_phone_number}!=null ? $F{billing_mobile_phone_number} : "" ))) Residential Address: $F{first_name}+" "+$F{last_name}+"\n"+ ($F{residential_property_name} != null ? $F{residential_property_name} + "\n" : "") + ($F{residential_postal_subaddress} != null ? $F{residential_postal_subaddress} + "\n" : ($F{residential_street_subaddress} != null && !$F{residential_street_subaddress}.equals("") ? $F{residential_street_subaddress}.replaceAll("\\\\'", "'") + "/" : "") + ($F{residential_street_number} != null && !$F{residential_street_number}.equals("") ? $F{residential_street_number}.replaceAll("\\\\'", "'") + " " : "") + ($F{residential_street_name} != null && !$F{residential_street_name}.equals("") ? $F{residential_street_name}.replaceAll("\\\\'", "'") + '\n' : "")) + ($F{residential_city} != null && !$F{residential_city}.equals("") ? $F{residential_city}.replaceAll("\\\\'", "'") + ", \t" : "") + ($F{residential_state_abbreviation}!= null && !$F{residential_state_abbreviation}.equals("") ? $F{residential_state_abbreviation}.replaceAll("\\\\'", "'") + " ": "") + ($F{residential_postal_code}!= null && !$F{residential_postal_code}.equals("") ? $F{residential_postal_code}.replaceAll("\\\\'", "'") + " ": "") + ($F{residential_country_geo_id} != null && !$F{residential_country_geo_id}.equals("") && !$F{residential_country_geo_id}.equals("AUSTRALIA") && !$F{residential_country_geo_id}.equals("AUS") ? "\n" + $F{residential_country_geo_id}.replaceAll("\\\\'", "'") : "") Billing Address: $F{first_name}+" "+$F{last_name}+"\n"+ ($F{billing_property_name} != null ? $F{billing_property_name} + "\n" : "") + ($F{billing_postal_subaddress} != null ? $F{billing_postal_subaddress} + "\n" : ($F{billing_street_subaddress} != null && !$F{billing_street_subaddress}.equals("") ? $F{billing_street_subaddress}.replaceAll("\\\\'", "'") + "/" : "") + ($F{billing_street_number} != null && !$F{billing_street_number}.equals("") ? $F{billing_street_number}.replaceAll("\\\\'", "'") + " " : "") + ($F{billing_street_name} != null && !$F{billing_street_name}.equals("") ? $F{billing_street_name}.replaceAll("\\\\'", "'") + '\n' : "")) + ($F{billing_city} != null && !$F{billing_city}.equals("") ? $F{billing_city}.replaceAll("\\\\'", "'") + ", \t" : "") + ($F{billing_state_abbreviation}!= null && !$F{billing_state_abbreviation}.equals("") ? $F{billing_state_abbreviation}.replaceAll("\\\\'", "'") + " ": "") + ($F{billing_postal_code}!= null && !$F{billing_postal_code}.equals("") ? $F{billing_postal_code}.replaceAll("\\\\'", "'") + " ": "") + ($F{billing_country_geo_id} != null && !$F{billing_country_geo_id}.equals("") && !$F{billing_country_geo_id}.equals("AUSTRALIA") && !$F{billing_country_geo_id}.equals("AUS") ? "\n" + $F{billing_country_geo_id}.replaceAll("\\\\'", "'") : "") ($F{billing_property_name} != null ? $F{billing_property_name} + "\n" : "") + ($F{billing_postal_subaddress} != null ? $F{billing_postal_subaddress} + "\n" : ($F{billing_street_subaddress} != null ? $F{billing_street_subaddress} + "/" : "") + ($F{billing_street_number} != null ? $F{billing_street_number} + " " : "") + ($F{billing_street_name} != null ? $F{billing_street_name} + "\n" : "")) + ($F{billing_city} != null ? $F{billing_city} + " " : "") + ($F{billing_state_province_geo_id} != null ? $F{billing_state_province_geo_id} + " " : ($F{billing_state_abbreviation} != null ? $F{billing_state_abbreviation} + " " : " ")) + ($F{billing_postal_code} != null ? $F{billing_postal_code} + "\n" : "") + ($F{billing_country_name} != null ? $F{billing_country_name} + "\n" : "") ($F{billing_address1} != null ? $F{billing_address1}.replaceAll("\\\\'", "'") + '\n' : "") + ($F{billing_address2} != null ? $F{billing_address2}.replaceAll("\\\\'", "'") + '\n' : "") + ($F{billing_city} != null ? $F{billing_city}.replaceAll("\\\\'", "'") + '\t' : "") + " " + ($F{billing_state} != null ? $F{billing_state_abbrev}.replaceAll("\\\\'", "'") + " " : ($F{billing_state}!=null ? $F{billing_state}.replaceAll("\\\\'", "'") + " " : "")) + ($F{billing_postal_code} != null ? $F{billing_postal_code}.replaceAll("\\\\'", "'") : "") + ($F{billing_country} != null && !$F{billing_country}.equals("AUSTRALIA") ? "\n" + $F{billing_country}.replaceAll("\\\\'", "'") : "") ($F{postal_address1} != null ? $F{postal_address1}.replaceAll("\\\\'", "'") + '\n' : "") + ($F{postal_address2} != null ? $F{postal_address2}.replaceAll("\\\\'", "'") + '\n' : "") + ($F{postal_city} != null ? $F{postal_city}.replaceAll("\\\\'", "'") + '\t' : "") + " " + ($F{postal_state} != null ? $F{postal_state_abbrev}.replaceAll("\\\\'", "'") + " " : ($F{postal_state}!=null ? $F{postal_state}.replaceAll("\\\\'", "'") + " " : "")) + ($F{postal_state_abbrev} != null ? $F{postal_state_abbrev}.replaceAll("\\\\'", "'") : "") + ($F{postal_country} != null && !$F{postal_country}.equals("AUSTRALIA") ? "\n" + $F{postal_country}.replaceAll("\\\\'", "'") : "") Provider ABN, CRICOS and TEQSA provider code: ($F{provider_abn} != null ? "ABN: " + $F{provider_abn}.replaceAll("\\\\'", "'") + "\n" : "") + ($F{provider_hedest_provider_code} != null ? "TEQSA Prov " + $F{provider_hedest_provider_code}.replaceAll("\\\\'", "'")+ "\n" : "") + ($F{provider_cricos_code} != null ? "CRICOS Code: " + $F{provider_cricos_code}.replaceAll("\\\\'", "'") + "\n" : "")
Selecting postal address
SELECT p.student_number, p.personal_title, p.first_name, p.middle_name, p.last_name, p.suffix, TRIM(COALESCE(ecd.property_name,'') || ' ' || COALESCE(ecd.street_subaddress,'')) AS postal_address1, TRIM(COALESCE(ecd.street_number,'') || ' ' || COALESCE(ecd.street_name,'')) AS postal_address2, ecd.city, CASE WHEN ecd.state_province_geo_id IS NULL THEN ecd.state ELSE sg.geo_name END AS state, ecd.postal_code AS postal_state_code, CASE WHEN ecd.country_geo_id IS NULL THEN '' ELSE cg.geo_name END AS postal_country FROM person p JOIN edu_contact_details ecd ON ecd.party_id = p.party_id AND ecd.role_type_id = 'RESIDENTIAL' LEFT JOIN geo sg ON sg.geo_type_id = 'STATE' AND sg.geo_id = ecd.state_province_geo_id LEFT JOIN geo cg ON cg.geo_type_id = 'COUNTRY' AND cg.geo_id = ecd.country_geo_id WHERE TRUE
No Data message
<noData> <band height="150" isSplitAllowed="true" > <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement x="11" y="108" width="515" height="38" key="textField-23"/> <box></box> <textElement> <font/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$P{whereClauseDyn}]]></textFieldExpression> </textField> <staticText> <reportElement mode="Opaque" x="11" y="42" width="518" height="56" forecolor="#000000" backcolor="#FFFFFF" key="staticText-4"/> <box leftPadding="10" rightPadding="10"> <pen lineWidth="0.0" lineColor="#FFFFFF"/> <topPen lineWidth="0.75" lineStyle="Solid" lineColor="#CC0033"/> <leftPen lineWidth="0.75" lineStyle="Solid" lineColor="#CC0033"/> <bottomPen lineWidth="0.75" lineStyle="Solid" lineColor="#CC0033"/> <rightPen lineWidth="0.75" lineStyle="Solid" lineColor="#CC0033"/> </box> <textElement textAlignment="Left" verticalAlignment="Middle"> <font/> </textElement> <text><![CDATA[The system was unable to find any records that satisfied the report criteria. Please check that there is at least one course enrolment with the status of enrolled before attempting to run the report again. ]]></text> </staticText> <staticText> <reportElement mode="Opaque" x="11" y="12" width="518" height="30" forecolor="#FFFFFF" backcolor="#FF0033" key="staticText-5"/> <box leftPadding="10" rightPadding="10"> <pen lineWidth="0.0" lineColor="#FFFFFF"/> <topPen lineWidth="0.75" lineStyle="Solid" lineColor="#CC0033"/> <leftPen lineWidth="0.75" lineStyle="Solid" lineColor="#CC0033"/> <bottomPen lineWidth="0.75" lineStyle="Solid" lineColor="#CC0033"/> <rightPen lineWidth="0.75" lineStyle="Solid" lineColor="#CC0033"/> </box> <textElement textAlignment="Left" verticalAlignment="Middle"> <font pdfFontName="Helvetica-Bold" size="14" isBold="true"/> </textElement> <text><![CDATA[WARNING !]]></text> </staticText> </band> </noData>