Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Page Contents

Page Contents

Objective

This page contains snippets and blocks of code that are useful for editing iReport XML templates.

Difficulty:

Status
colourRed
titleExpert

Page Contents

Table of Contents
maxLevel1
excludePage 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

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

Code Block
languagejava
themeMidnight
linenumberstrue
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" ) )

...

Code Block
languagejava
themeMidnight
linenumberstrue
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})

Casting

Code Block
languagejava
themeMidnight
linenumberstrue
"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

Code Block
languagejava
themeMidnight
linenumberstrue
"Accumulated grade point average: " + ( $V{gpa_total}==null ? "0.00" : new DecimalFormat("0.00").format($V{gpa_total}).toString() )

Uppercase

Code Block
languagejava
themeMidnight
linenumberstrue
Example: $V{studentFormalName}.toUpperCase()

Text field formatting

Note
titleIMPORTANT

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

Code Block
languagejava
themeMidnight
linenumberstrue
<style isBold=\"true\" pdfFontName=\"Helvetica-Bold\"> This becomes bold </style>

Underline

Code Block
languagejava
themeMidnight
linenumberstrue
<style isUnderline=\"true\" >Underline me! </style>

Italic

Code Block
languagejava
themeMidnight
linenumberstrue
<style isItalic=\"true\" pdfFontName=\"Helvetica-Oblique\"> I'm leaning to one side </style>

Colour

Code Block
languagejava
themeMidnight
linenumberstrue
<style forecolor=\"#0000ff\"> Colour me surprised </style>

Dot-points

Code Block
languagejava
themeMidnight
linenumberstrue
+"•"

...

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:

Code Block
languagejava
themeMidnight
linenumberstrue
<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

Code Block
languagejava
themeMidnight
"Thank you for your application for enrolment at Group Colleges Australia (\"GCA\")  Pty Ltd trading as Universal Business School Sydney (UBSS)."

Escaping special characters

Code Block
languagejava
themeMidnight
titleReplace "&" with "&"
"<style isBold=\"true\" pdfFontName=\"Helvetica-Bold\">" +$F{edu_other_unit_id}.trim() + "</style> (" + $F{unit_name}.replaceAll("&","&amp;") + ")"

MSWord Entities

Code Block
languagesql
titleReplacing fancy quotes and long dash
REGEXP_REPLACE(REGEXP_REPLACE(ce.content, '&[lr]dquo;', '"', 'g'), '&ndash;', '-', 'g') as content,

Sample dynamic where clauses

Code Block
languagejava
themeMidnight
linenumberstrue
collapsetrue
( $P{eduProgramEnrolmentId}==null || $P{eduProgramEnrolmentId}.equals("") ? "" : " AND epe.edu_program_enrolment_id = '"+$P{eduProgramEnrolmentId}+"'" ) +
( $P{academicTermId}==null || $P{academicTermId}.equals("") ? "" : " AND tp.custom_time_period_id = '"+$P{academicTermId}+"'" ) +
( $P{courseId}==null || $P{courseId}.equals("") ? "" : " AND epe.edu_program_id = '"+$P{courseId}+"'" ) +
( $P{providerId}==null || $P{providerId}.equals("") ? "" : " AND epe.home_institution_party_id = '"+$P{providerId}+"'" ) +
( $P{studentNumber}==null || $P{studentNumber}.equals("") ? "" : " AND lsi.student_number = '"+$P{studentNumber}+"'" ) +
( $P{censusPeriodId}==null || $P{censusPeriodId}.equals("") ? "" : " AND esu.dest_census_date IN "+$P{censusPeriodId}) +
/*
( $P{censusDateFrom}==null || $P{censusDateFrom}.equals("") ? "" : " AND esu.dest_census_date >= '"+$P{censusDateFrom}+"'" ) +
( $P{censusDateTo}==null || $P{censusDateTo}.equals("") ? "" : " AND esu.dest_census_date <= '"+$P{censusDateTo}+"'" ) +
*/
( $P{unitEnrolmentStatus}==null || $P{unitEnrolmentStatus}.equals("") ? "" : " AND eue.enrolment_status_id IN "+$P{unitEnrolmentStatus} )
+((($P{eduProgramEnrolmentId}==null || $P{eduProgramEnrolmentId}.equals(""))&&
  ($P{academicTermId}==null || $P{academicTermId}.equals(""))&&
  ($P{courseId}==null || $P{courseId}.equals(""))&&
  ($P{providerId}==null || $P{providerId}.equals(""))&&
  ($P{studentNumber}==null || $P{studentNumber}.equals(""))&&
  ($P{censusDateFrom}==null || $P{censusDateFrom}.equals(""))&&
  ($P{censusDateTo}==null || $P{censusDateTo}.equals(""))&&
  ($P{censusPeriodId}==null || $P{censusPeriodId}.equals(""))&&
  ($P{unitEnrolmentStatus}==null || $P{unitEnrolmentStatus}.equals("")))?" AND epe.edu_program_enrolment_id='No Parameters'":"")

Sample address blocks

...

languagejava
themeMidnight
linenumberstrue
collapsetrue

...

Blank Page Unwanted As The Last Page of Your Document

Check whether the Summary Band was being used during testing. The band will likely have a height of zero, and it may have a small height but contain no fields.

Open the Report Properties dialog box and check inside the More tab whether you have a tick in the box for ‘Summary on a new page’. If you have a tick, remove it.

Click on the View option of the main menu and click Bands. The ‘Print When Expression’ may contain the legacy code similar to

new Boolean($P{authUsername}.equals("Silverband.Fulladmin"))

Removing this condition will prevent the Summary Band from appearing only for our Fulladmin user.

Java Conditions

Code Block
languagejava
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().equals("1" )
new Boolean( $V{PAGE_NUMBER}.intValue() == 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

Code Block
languagejava
new SimpleDateFormat("dd MMMM yyyy").format( new Date())

# Passing in a date string to be used in a date function
# year = integer for years since 1900
# month between 0 and 11 with 0 = Jan
# days between 1 and 31
# 1st Jan 2021 would be coded as follows:

new Date(121,0,1)


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

Code Block
languagejava
"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

Code Block
languagejava
"Accumulated grade point average: " + ( $V{gpa_total}==null ? "0.00" : new DecimalFormat("0.00").format($V{gpa_total}).toString() )

Uppercase

Code Block
languagejava
Example: $V{studentFormalName}.toUpperCase()

Text Field Formatting

Note

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

Code Block
languagejava
<style isBold=\"true\" pdfFontName=\"Helvetica-Bold\"> This becomes bold </style>

Underline

Code Block
languagejava
<style isUnderline=\"true\" >Underline me! </style>

Italic

Code Block
languagejava
<style isItalic=\"true\" pdfFontName=\"Helvetica-Oblique\"> I'm leaning to one side </style>

Custom Fonts

We are able to use custom fonts within our letter and report templates but only under certain conditions.

  • Our provider must supply us with the font files in .ttf file format, within a support request ticket related to using the custom fonts in its letter/report templates

  • Our provider must supply us with the license agreement that permits Silverband as a third party, to use the fonts on behalf of our provider, and to embed those fonts within our templates for the sole use of our provider and the documents that it produces from Paradigm

  • Our provider must supply us with the receipt that proves their purchase of the font files.

  1. In the directory where the iReport template files reside ie. ~/java/ofbiz/education/webapp/reportscreate a new directory called custom_fonts

  2. Paste the .ttf font files into the custom_fonts folder, along with the receipt and the license agreement. All of the related files should be kept together.

  3. Open the iReport template file that is to use the custom fonts.

  4. Open the Properties window for the text field (or many text fields) that is (are) to use the custom font, and choose the Font tab. The provider font license agreement usually does not permit Silverband to use single or multiple local copies of the font files across its hardware for editing purposes.

  5. The Font Name field relates only to what is visible during editing within iReport. Changing the font name has no consequence on the font that is printed in the PDF document.

  6. In the field PDF Font Name, paste the full pathname of the .ttf font file, eg. /opt/ems/java/ofbiz/education/webapp/reports/custom_fonts/very_special_font_file.ttf on legacy systems, or /srv/opt/ems/report_templates/custom_fonts/very_special_font_file.ttf on our more recently created systems.

  7. You must press enter to make the font file effective. It is not sufficient to tab out or tab to another field or click elsewhere on the properties window.

  8. Place a tick in the box for PDF Embedded.

  9. Change any other properties for the font as necessary. Save the file and test the results, preferably on the provider’s test site server.

Colour

Code Block
languagejava
<style forecolor=\"#0000ff\"> Colour me surprised </style>
<style forecolor=\"#0033FF\"> Colour me Hyperlink Blue </style>

Dot-points

Code Block
languagejava
+"•"

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:

Code Block
languagejava
<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

Code Block
languagejava
"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 "&"
Code Block
languagejava
"<style isBold=\"true\" pdfFontName=\"Helvetica-Bold\">" +$F{edu_other_unit_id}.trim() + "</style> (" + $F{unit_name}.replaceAll("&","&amp;") + ")"

MSWord Entities

Replacing fancy quotes and long dash
Code Block
languagesql
REGEXP_REPLACE(REGEXP_REPLACE(ce.content, '&[lr]dquo;', '"', 'g'), '&ndash;', '-', 'g') as content,


Sample Dynamic Where Clauses

Code Block
languagejava
( $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

Code Block
languagejava
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("\\\\'", "'") + ", " : "") + 
($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("\\\\'", "'") + ", " : "") + 
($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("\\\\'", "'") + "/" : "") +
($F{residential_street_number} != null && !$F{residential_street_number}.equals("") '\n' : "") +
($F{billing_address2} != null ? $F{residentialbilling_street_numberaddress2}.replaceAll("\\\\'", "'") + " " '\n' : "") +
($F{residentialbilling_street_namecity} != null && !$F{residential_street_name}.equals("") ? $F{residentialbilling_street_namecity}.replaceAll("\\\\'", "'") + '\nt' : "") + ($F{residential_city} != null && !$F{residential_city}.equals("")"  " +
($F{billing_state} != null ? $F{residentialbilling_state_cityabbrev}.replaceAll("\\\\'", "'") + ", \t" : "") +: 
($F{residentialbilling_state_abbreviation}!= null && !$F{residential_state_abbreviation}.equals("") ? $F{residentialbilling_state_abbreviation}.replaceAll("\\\\'", "'") + "   " : "")) +
($F{residentialbilling_postal_code}!= null && !$F{residential_postal_code}.equals("")!= null ? $F{residentialbilling_postal_code}.replaceAll("\\\\'", "'") + " ": "") +
($F{residentialbilling_country_geo_id} != null && !$F{residentialbilling_country_geo_id}.equals("AUSTRALIA") && !$F{residential_country_geo_id}.equals("AUSTRALIA") && !$F{residential_country_geo_id}.equals("AUS") ? "\n" + $F{residential_country_geo_id ? "\n" + $F{billing_country}.replaceAll("\\\\'", "'") : "")


($F{postal_address1} != null ? $F{postal_address1}.replaceAll("\\\\'", "'") + '\n' : "") +
($F{postal_address2} != Billingnull Address:? $F{firstpostal_name}+" "+$F{last_name}+"\n"address2}.replaceAll("\\\\'", "'") + '\n' : "") +
($F{billingpostal_street_subaddresscity} != null && !$F{billing_street_subaddress}.equals("") ? $F{billingpostal_street_subaddresscity}.replaceAll("\\\\'", "'") + '\t' : "/") :+ "  ") +
($F{billingpostal_street_numberstate} != null && !$F{billing_street_number}.equals("") ? $F{billingpostal_streetstate_numberabbrev}.replaceAll("\\\\'", "'") + " " : "") +: ($F{billingpostal_street_namestate} != null && !$F{billing_street_name}.equals("") ? $F{billingpostal_street_namestate}.replaceAll("\\\\'", "'") + '\n' "   " : "")) +
($F{billingpostal_state_cityabbrev} != null &&? !$F{billing_city}.equals("") ? $F{billing_citypostal_state_abbrev}.replaceAll("\\\\'", "'") + '", \t"'") : "") +

($F{billingpostal_state_abbreviationcountry} != null && !$F{billingpostal_state_abbreviationcountry}.equals("AUSTRALIA") ? "\n" + $F{billingpostal_state_abbreviationcountry}.replaceAll("\\\\'", "'") + " ": "")
+

Provider ABN, CRICOS and TEQSA provider code: 
($F{billingprovider_postal_codeabn} != null && !$F{billing_postal_code}.equals("") ?? "ABN: " + $F{billingprovider_postal_codeabn}.replaceAll("\\\\'", "'") + "\n" ": "") + 
($F{billingprovider_countryhedest_geoprovider_idcode} != null && !$F{billing_country_geo_id}.equals("") && !$F{billing_country_geo_id}.equals("AUSTRALIA") && !$F{billing_country_geo_id}.equals("AUS") ? "\n ? "TEQSA Prov " + $F{provider_hedest_provider_code}.replaceAll("\\\\'", "'")+ "\n" : "") + 
($F{provider_cricos_code} != null ? "CRICOS Code: " + $F{billingprovider_countrycricos_geo_idcode}.replaceAll("\\\\'", "'") + "\n" : "")

Selecting postal address

Code Block
languagesql

SELECT
    

...

p.student_number,
    p.personal_title,
    p.first_name,
    p.middle_name,
    p.last_name,
    p.suffix,
    p.single_name,
    p.nickname,
    p.printed_name,
    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

Code Block
		<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>