Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > 1cc8dacce7af1065bb5eaf628d47422f > files > 58

jasperreports-manual-4.0.2-6.mga4.noarch.rpm

<html xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jr="http://jasperreports.sourceforge.net/jasperreports">
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JasperReports 4.0.2 - Java 1.5 Sample</title>
<style type="text/css">
.title {
	font-family: Arial, Verdana, Helvetica, sans-serif;
	font-size: 28px;
	font-weight: normal;
}

.toc {
	font-family: Courier New, Courier, serif;
	font-size: 12px;
	font-weight: normal;
}

.name {
	font-family: Courier New, Courier, serif;
	font-size: 16px;
	font-weight: bold;
}

.label {
	font-family: Arial, Verdana, Helvetica, sans-serif;
	font-size: 12px;
	font-weight: bold;
	font-style: italic;
}

.description {
	font-family: Arial, Verdana, Helvetica, sans-serif;
	font-size: 12px;
	font-weight: normal;
}

.value {
	font-family: Courier New, Courier, serif;
	font-size: 12px;
	font-weight: normal;
}

.element {
	font-family: Courier New, Courier, serif;
	font-size: 12px;
	font-weight: normal;
}

.attribute {
	font-family: Courier New, Courier, serif;
	font-size: 12px;
	font-weight: bold;
}

.code {
	font-family: Courier New, Courier, serif;
	font-size: 12px;
	font-weight: normal;
}

.copy {
	font-decoration: none;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 8pt;
	font-style: normal;
	color: #000000;
}

.subtitle {
	font-family: inherit;
	font-size: inherit;
	font-style: inherit;
	font-weight: bold;
	text-decoration: none;
	color: inherit;
}

</style>
</head>
<body bgcolor="#FFFFFF">
<a name="top"></a>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td colspan="2" align="right"><span class="element"><a href="../../sample.reference.html">Sample Reference</a> - <a href="../../schema.reference.html">Schema Reference</a> - <a href="../../config.reference.html">Configuration Reference</a> - <a href="http://jasperreports.sourceforge.net/api/index.html">API (Javadoc)</a></span>
<br>
</td>
</tr>
<tr>
<td colspan="2">
<hr size="1">
</td>
</tr>
<tr valign="middle">
<td nowrap="true"><span class="title">JasperReports - Java 1.5 Sample (version 4.0.2)</span></td><td align="right"><img src="../../resources/jasperreports.png" border="0"></td>
</tr>
<tr>
<td colspan="2">
<hr size="1">
</td>
</tr>
</table>
<br>
<span class="description"><span class="description">Shows how Java 1.5 could be used inside report templates.</span></span>
<br>
<br>
<span class="element"><a href="http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%204.0.2/jasperreports-4.0.2-project.zip/download" target="_blank">Download All Sample Source Files</a></span>
<br>
<span class="element"><a href="http://jasperforge.org/scm/viewvc.php/tags/jr-4-0-2/jasperreports/demo/samples/java1.5/?root=jasperreports" target="_blank">Browse Sample Source Files on SVN</a></span>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td style="width: 20px;">
<br>
</td><td>
<br>
</td>
</tr>
<tr>
<td colspan="2"><span class="label">Main Features in This Sample</span></td>
</tr>
<tr>
<td>
<br>
</td><td><span class="element"><a href="#java1.5">Using Java 1.5 Syntax in Report Expressions (Java 1.5 Report Compiler)</a></span></td>
</tr>
<tr>
<td colspan="2">
<br>
</td>
</tr>
<tr>
<td colspan="2"><span class="label">Secondary Features</span></td>
</tr>
<tr>
<td></td><td><span class="element"><a href="../groovy/index.html#reportcompilers">Report Compilers</a></span></td>
</tr>
</table>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td><img src="../../resources/px.gif" border="0" width="20" height="1"></td><td><img src="../../resources/px.gif" border="0" width="20" height="1"></td><td><img src="../../resources/px.gif" border="0" width="20" height="1"></td><td><img src="../../resources/px.gif" border="0" width="20" height="1"></td><td width="80%">
<br>
</td><td width="20%">
<br>
</td>
</tr>
<tr>
<td colspan="6" align="right"><a name="java1.5"></a><a href="#top" class="toc">top</a></td>
</tr>
<tr>
<td colspan="6">
<hr size="1">
</td>
</tr>
<tr valign="top">
<td><img src="../../resources/jr-16x16.png" border="0"></td><td colspan="4"><span class="name">Using Java 1.5 Syntax in Report Expressions (Java 1.5 Report Compiler)</span></td><td align="right"><span class="copy">Documented by 
	<a href="mailto:shertage@users.sourceforge.net" class="copy">Sanda Zaharia</a></span></td>
</tr>
<tr>
<td colspan="6">
<br>
</td>
</tr>
<tr valign="top">
<td>
<br>
</td><td nowrap="true"><span class="label">Description / Goal</span></td><td>
<br>
</td><td colspan="3"><span class="description">
How to use Java 1.5 language specific features inside report expressions.
    </span></td>
</tr>
<tr valign="top">
<td>
<br>
</td><td colspan="1"><span class="label">Since</span></td><td>
<br>
</td><td colspan="3"><span class="description">1.1.1</span></td>
</tr>
<tr valign="top">
<td>
<br>
</td><td nowrap="true"><span class="label">Other Samples</span></td><td>
<br>
</td><td colspan="3">
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td><span class="element"><a href="../antcompile/index.html">/demo/samples/antcompile</a></span></td>
</tr>
<tr>
<td><span class="element"><a href="../beanshell/index.html">/demo/samples/beanshell</a></span></td>
</tr>
<tr>
<td><span class="element"><a href="../groovy/index.html">/demo/samples/groovy</a></span></td>
</tr>
<tr>
<td><span class="element"><a href="../javascript/index.html">/demo/samples/javascript</a></span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="6">
<br>
</td>
</tr>
<tr>
<td>
<br>
</td><td colspan="5"><span class="description">
<b>Java 1.5 Scripting Example</b>

<br>

<br>
The main purpose of this sample is to show how the Java 1.5 compiler implementation works. Useful information 
about various Java compiler implementations can be found <a href="../groovy/index.html#javaCompilers" target="_blank" class="element">here</a>.
<br>
This sample contains report expressions written using Java 1.5. The 
<span class="element"><a href="http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/design/JRJdtCompiler.html" target="_blank">JRJdtCompiler</a></span> default implementation is Java 1.5-compatible and   
is strongly recommended to use it when handling Java 1.5-related expressions. 
<br>

<br>
In order to use Java 1.5, the report <span class="code"><code>language</code></span> attribute can be either not set (because Java represents the default scripting language), 
or declared as follows: 
<br>

<br>

<span class="code"><code>language="java"</code></span>

<br>

<br>
In the sample's report template the <span class="code"><code>language</code></span> attribute is not set.
<br>
Next, one have to instruct the JDT compiler to observe Java 1.5 
code compatibility. In the /src/jasperreports.properties file the following properties are set:
<ul>

<li>
<span class="code"><code>org.eclipse.jdt.core.compiler.source=1.5</code></span>
</li>

<li>
<span class="code"><code>org.eclipse.jdt.core.compiler.compliance=1.5</code></span>
</li>

<li>
<span class="code"><code>org.eclipse.jdt.core.compiler.codegen.TargetPlatform=1.5</code></span>
</li>

</ul>
In the report template are included specific Java 1.5 expressions not compatible with Java 1.4 or earlier, requiring transparent 
autoboxing and unboxing, or enumerated types. An equivalent Java 1.4-compatible expression is also included, for comparison.
<br>
Having two integer numbers, 3 and 5, the report will output first their values, and then their calculated sum. The two numbers 
are declared as follows:
<br>

<br>

<span class="code"><code>
&nbsp;&nbsp;&lt;parameter name="A" class="java.lang.Integer"&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;defaultValueExpression&gt;&lt;![CDATA[3]]&gt;&lt;/defaultValueExpression&gt;
<br>
&nbsp;&nbsp;&lt;/parameter&gt;
<br>
&nbsp;&nbsp;&lt;parameter name="B" class="java.lang.Integer"&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;defaultValueExpression&gt;&lt;![CDATA[5]]&gt;&lt;/defaultValueExpression&gt;
<br>
&nbsp;&nbsp;&lt;/parameter&gt;
</code></span>

<br>

<br>
Both A and B values are declared of <span class="code"><code>java.lang.Integer</code></span> type. But their values are let as primitive <span class="code"><code>int</code></span> types, because 
Java 1.5 performs both autoboxing and unboxing mechanisms. When needed, primitive types are automatically converted into their wrapper class. 
The Java 1.5 syntax becomes a lot simplified. Equivalent Java 1.4 expressions would be:
<br> 

<br> 

<span class="code"><code>&nbsp;&nbsp;&nbsp;&nbsp;&lt;defaultValueExpression&gt;&lt;![CDATA[Integer.valueOf(3)]]&gt;&lt;/defaultValueExpression&gt;</code></span>

<br>

<span class="code"><code>&nbsp;&nbsp;&nbsp;&nbsp;&lt;defaultValueExpression&gt;&lt;![CDATA[Integer.valueOf(5)]]&gt;&lt;/defaultValueExpression&gt;</code></span>

<br>

<br>
The next two expressions in the report template read values from parameters declared above and store them in two text fields. 
These expressions can be evaluated using either Java 1.5 or Java 1.4:
<br>

<br>

<span class="code"><code>&nbsp;&nbsp;&lt;textFieldExpression class="java.lang.Integer"&gt;&lt;![CDATA[$P{A}]]&gt;&lt;/textFieldExpression&gt;</code></span>

<br>

<span class="code"><code>&nbsp;&nbsp;&lt;textFieldExpression class="java.lang.Integer"&gt;&lt;![CDATA[$P{B}]]&gt;&lt;/textFieldExpression&gt;</code></span>

<br>

<br>
Next, the A + B sum is calculated using a Java 1.4 expression:
<br>

<br>

<span class="code"><code>&nbsp;&nbsp;&lt;textFieldExpression class="java.lang.Integer"&gt;&lt;![CDATA[Integer.valueOf($P{A}.intValue() + $P{B}.intValue())]]&gt;&lt;/textFieldExpression&gt;</code></span>

<br>

<br>
A and B being <span class="code"><code>Integer</code></span>, their <span class="code"><code>intValue()</code></span> method is called in order to calculate the sum. 
After that, because the sum should be 
stored itself in an <span class="code"><code>Integer</code></span> value, an Integer object is made available for this purpose. The Java expression looks 
rather complicate and one has to take care to instantiate objects with their proper types in order to avoid class 
cast exceptions. 
<br>

<br>
Now, the same A + B sum is calculated using a Java 1.5 expression:
<br>

<br>

<span class="code"><code>&nbsp;&nbsp;&lt;textFieldExpression class="java.lang.Integer"&gt;&lt;![CDATA[$P{A} + $P{B}]]&gt;&lt;/textFieldExpression&gt;</code></span>

<br>

<br>
Object creation, autoboxing, unboxing and type conversion are transparent processes here, the user only 
has to write a simple addition operation between the two report 
parameters (however, the specific parameter syntax still has to be respected). 
<br>

<br>
Finally, depending on the <span class="code"><code>greeting</code></span> parameter's value, a greeting formula is shown. This parameter is an enumerated <span class="code"><code>Greeting</code></span> type 
(another specific Java 1.5 feature):
<br>

<br>

<span class="code"><code>&nbsp;&nbsp;&lt;parameter name="greeting" class="Greeting"&gt;</code></span>

<br>

<br>
The <span class="code"><code>Greeting</code></span> type is defined in the /src/Greeting.java file:
<br>

<br>
&nbsp;&nbsp;<span class="code"><code>public enum Greeting { bye, day }</code></span>

<br>

<br>
When the parameter's value is <span class="code"><code>Greeting.bye</code></span>, the output message will be 'Bye!'; 
when the parameter's value is <span class="code"><code>Greeting.day</code></span>, the message will be 'Have a nice day!':
<pre>
  &lt;staticText&gt;
	&lt;reportElement x="0" y="450" width="480" height="35"&gt;
      &lt;printWhenExpression&gt;$P{greeting} == Greeting.bye&lt;/printWhenExpression&gt;
	&lt;/reportElement&gt;
	&lt;textElement textAlignment="Center"&gt;
      &lt;font size="24"/&gt;
	&lt;/textElement&gt;
	&lt;text&gt;Bye!&lt;/text&gt;
  &lt;/staticText&gt;
  &lt;staticText&gt;
	&lt;reportElement x="0" y="450" width="480" height="35"&gt;
      &lt;printWhenExpression&gt;$P{greeting} == Greeting.day&lt;/printWhenExpression&gt;
	&lt;/reportElement&gt;
	&lt;textElement textAlignment="Center"&gt;
      &lt;font size="24"/&gt;
	&lt;/textElement&gt;
	&lt;text&gt;Have a nice day!&lt;/text&gt;
  &lt;/staticText&gt;</pre>

<b>Running the Sample</b>

<br>

<br>
Running the sample requires the <a href="http://ant.apache.org/" target="_blank" class="element">Apache Ant</a> library. Make sure that <span class="code"><code>ant</code></span> is already installed on your system (version 1.5 or later).
<br>
In a command prompt/terminal window set the current folder to <span class="code"><code>demo/samples/java1.5</code></span> within the JasperReports source project and run the <span class="code"><code>&gt; ant test view</code></span> command.
<br>
It will generate all supported document types containing the sample report in the <span class="code"><code>demo/samples/java1.5/build/reports</code></span> directory. 
<br>
Then the report will open in the JasperReports internal viewer.
    </span></td>
</tr>
<tr>
<td colspan="6">
<br>
</td>
</tr>
</table>
<br>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td>
<hr size="1">
</td>
</tr>
<tr>
<td align="center"><span class="copy">&copy; 2001-2010 Jaspersoft Corporation <a href="http://www.jaspersoft.com" target="_blank" class="copy">www.jaspersoft.com</a></span></td>
</tr>
</table>
</body>
</html>