<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Roberto Furutani &#187; jasperreports</title>
	<atom:link href="http://www.furutani.com.br/tag/jasperreports/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.furutani.com.br</link>
	<description>O site de um computólogo curioso!</description>
	<lastBuildDate>Sat, 04 Sep 2010 13:41:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>Relatório Dinâmico com JasperDesign</title>
		<link>http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/</link>
		<comments>http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 01:47:25 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=635</guid>
		<description><![CDATA[Olá Que tal fazer um relatório sem iReport? e sem ter de fazer o JRXML? e ser montada de dinamicamente? Pois isso é possível usando algumas classes do JasperReports como a JasperDesign, JRDesignBand, JRDesignStaticText, JRDesignField e JRDesignExpression. Não é muito complicado fazer isso não como você podem ver no exemplo que fiz, o mais díficil [...]]]></description>
			<content:encoded><![CDATA[<p>Olá</p>
<p>Que tal fazer um relatório sem iReport? e sem ter de fazer o JRXML? e ser montada de dinamicamente?</p>
<p>Pois isso é possível usando algumas classes do JasperReports como a <strong>JasperDesign, JRDesignBand, JRDesignStaticText, JRDesignField e JRDesignExpression. </strong>Não é muito complicado fazer isso não como você podem ver no exemplo que fiz, o mais díficil mesmo é posicionar os elementos na página. Precisa usar muito a imaginação.<strong><br />
</strong></p>
<p>Basicamente é feito tudo pela classe abaixo.</p>
<pre class="brush: java">package br.com.furutani.reldin;

import java.awt.Color;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.design.JRDesignBand;
import net.sf.jasperreports.engine.design.JRDesignExpression;
import net.sf.jasperreports.engine.design.JRDesignField;
import net.sf.jasperreports.engine.design.JRDesignStaticText;
import net.sf.jasperreports.engine.design.JRDesignTextField;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.type.HorizontalAlignEnum;

public class ReportDesigner {

public JasperDesign getDesign() throws JRException {

// Cria um novo relatório
JasperDesign jasperDesign = new JasperDesign();

// PAGE
configPage(jasperDesign);

// FIELD

JRDesignField field = null;
addField(&quot;referencia&quot;, String.class, jasperDesign);
addField(&quot;consumo&quot;, Integer.class, jasperDesign);

// TITLE

JRDesignBand jrDesignband = null;
JRDesignStaticText staticText = null;
configTitle(jasperDesign);

// PAGE HEADER

jrDesignband = new JRDesignBand();
jrDesignband.setHeight(15);
jasperDesign.setPageHeader(jrDesignband);

// COLUMN HEADER

jrDesignband = new JRDesignBand();
jrDesignband.setHeight(25);
jasperDesign.setColumnHeader(jrDesignband);

//Dados da referencia
staticText = new JRDesignStaticText();
staticText.setX(0);
staticText.setY(5);
staticText.setWidth(150);
staticText.setHeight(15);
staticText.setHorizontalAlignment(HorizontalAlignEnum.LEFT);
staticText.setText(&quot;Referência - Mês/Ano&quot;);
staticText.setBold(true);
jrDesignband.addElement(staticText);

//Dados do consumo
staticText = new JRDesignStaticText();
staticText.setX(150);
staticText.setY(5);
staticText.setWidth(100);
staticText.setHeight(15);
staticText.setHorizontalAlignment(HorizontalAlignEnum.RIGHT);
staticText.setText(&quot;Consumo - kWh&quot;);
staticText.setBold(true);
jrDesignband.addElement(staticText);

// DETAIL
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(20);

//Dados da referencia
JRDesignTextField textField = new JRDesignTextField();
textField.setBlankWhenNull(false);
textField.setX(0);
textField.setY(5);
textField.setWidth(150);
textField.setHeight(15);
// Adiciona a expressao no campo
JRDesignExpression expression = new JRDesignExpression();
expression.setValueClass(java.lang.String.class);
expression.setText(&quot;$F{referencia}&quot;);
textField.setExpression(expression);
jrDesignband.addElement(textField);

//Dados do consumo
textField = new JRDesignTextField();
textField.setBlankWhenNull(false);
textField.setX(200);
textField.setY(5);
textField.setWidth(50);
textField.setHeight(15);
textField.setHorizontalAlignment(HorizontalAlignEnum.RIGHT);
//Adiciona a expressao no campo
expression = new JRDesignExpression();
expression.setValueClass(java.lang.Integer.class);
expression.setText(&quot;$F{consumo}&quot;);
textField.setExpression(expression);
jrDesignband.addElement(textField);

jasperDesign.setDetail(jrDesignband);

// COLUMN FOOTER (Escondido)
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(0);
jasperDesign.setColumnFooter(jrDesignband);

// PAGE FOOTER (Escondido)
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(0);
jasperDesign.setPageFooter(jrDesignband);

// NO DATA (No JasperViewer não mostra, na web mostraria)
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(20);
staticText = new JRDesignStaticText();
staticText.setX(10);
staticText.setY(5);
staticText.setWidth(64);
staticText.setHeight(15);
staticText.setText(&quot;Sem registros para compor o relatório!&quot;);
staticText.setHorizontalAlignment(HorizontalAlignEnum.CENTER);
jrDesignband.addElement(staticText);
jasperDesign.setNoData(jrDesignband);

// SUMMARY (Escondido)
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(0);
jasperDesign.setSummary(jrDesignband);

return jasperDesign;
}

/**
* Ajusta os parametros do titulo
* @param jasperDesign
*/
private void configTitle(JasperDesign jasperDesign) {
JRDesignBand band = new JRDesignBand();
band.setHeight(50);
JRDesignStaticText staticText = new JRDesignStaticText();
staticText.setX(10);
staticText.setY(10);
staticText.setWidth(450);
staticText.setHeight(40);
staticText.setFontName(&quot;Tahoma&quot;);
staticText.setForecolor(Color.BLUE);
staticText.setHorizontalAlignment(HorizontalAlignEnum.CENTER);
staticText.setFontSize(24);
staticText.setPdfFontName(&quot;Helvetica-Bold&quot;);
staticText.setBold(true);
staticText.setText(&quot;Histórico de Consumo&quot;);

band.addElement(staticText);

jasperDesign.setTitle(band);
}

/**
* Adiciona campos ao relatorio
* @param name
* @param clazz
* @param jasperDesign
* @throws JRException
*/
private void addField(String name, Class clazz, JasperDesign jasperDesign)
throws JRException
{
JRDesignField field = new JRDesignField();

field.setName(name);
field.setValueClass(clazz);
jasperDesign.addField(field);
}

/**
* Configura a pagina
* @param jasperDesign
*/
private void configPage(JasperDesign jasperDesign) {
jasperDesign.setPageWidth(500);
jasperDesign.setPageHeight(1000);
jasperDesign.setColumnCount(1);
jasperDesign.setColumnWidth(450);
jasperDesign.setColumnSpacing(0);
jasperDesign.setLeftMargin(10);
jasperDesign.setRightMargin(10);
jasperDesign.setBottomMargin(5);
jasperDesign.setTopMargin(5);
jasperDesign.setName(&quot;RelatorioDeConsumo&quot;);

}
}</pre>
<p>O exemplo foi feito no Eclipse Galileo. Não foi usado nada de web apesar de ser facilmente adaptado para rodar em ambiente web.</p>
<p>Adicione as bibliotecas no classpath do projeto que estão dentro de &lt;DIR_INSTALL&gt;\iReport-3.7.2\ireport\modules\ext para compilar os fontes:</p>
<p style="padding-left: 30px;">ant-1.7.1.jar<br />
antlr-2.7.6.jar<br />
asm-attrs.jar<br />
asm.jar<br />
barbecue-1.5-beta1.jar<br />
barcode4j-2.0.jar<br />
batik-anim.jar<br />
batik-awt-util.jar<br />
batik-bridge.jar<br />
batik-css.jar<br />
batik-dom.jar<br />
batik-ext.jar<br />
batik-gvt.jar<br />
batik-parser.jar<br />
batik-script.jar<br />
batik-svg-dom.jar<br />
batik-svggen.jar<br />
batik-util.jar<br />
batik-xml.jar<br />
bcel-5.2.jar<br />
bsh-2.0b4.jar<br />
castor-1.2.jar<br />
cglib-2.1.jar<br />
cincom-jr-xmla.jar<br />
commons-beanutils-1.8.2.jar<br />
commons-collections-3.2.1.jar<br />
commons-dbcp-1.2.2.jar<br />
commons-digester-1.7.jar<br />
commons-javaflow-20060411.jar<br />
commons-logging-1.1.jar<br />
commons-math-1.0.jar<br />
commons-pool-1.3.jar<br />
commons-vfs-1.0.jar<br />
dom4j-1.6.jar<br />
ehcache-1.1.jar<br />
eigenbase-properties-1.1.0.10924.jar<br />
eigenbase-resgen-1.3.0.11873.jar<br />
eigenbase-xom-1.3.0.11999.jar<br />
ejb3-persistence.jar<br />
groovy-all-1.5.5.jar<br />
hibernate-annotations.jar<br />
hibernate-commons-annotations.jar<br />
hibernate3.jar<br />
hsqldb-1.8.0-10.jar<br />
iText-2.1.7.jar<br />
iTextAsian.jar<br />
jakarta-bcel-20050813.jar<br />
jasperreports-3.7.2.jar<br />
jasperreports-chart-themes-3.6.2.jar<br />
jasperreports-extensions-3.5.3.jar<br />
jasperreports-fonts-3.7.2.jar<br />
javacup.jar<br />
javassist-3.4.GA.jar<br />
jaxen-1.1.1.jar<br />
jcommon-1.0.15.jar<br />
jdt-compiler-3.1.1.jar<br />
jfreechart-1.0.12.jar<br />
jpa.jar<br />
js_activation-1.1.jar<br />
js_axis-1.4patched.jar<br />
js_commons-codec-1.3.jar<br />
js_commons-discovery-0.2.jar<br />
js_commons-httpclient-3.1.jar<br />
js_jasperserver-common-ws-3.5.0.jar<br />
js_jaxrpc.jar<br />
js_mail-1.4.jar<br />
js_saaj-api-1.3.jar<br />
js_wsdl4j-1.5.1.jar<br />
jta.jar<br />
jxl-2.6.jar<br />
log4j-1.2.15.jar<br />
mondrian-3.1.1.12687-Jaspersoft.jar<br />
olap4j-0.9.7.145.jar<br />
png-encoder-1.5.jar<br />
poi-3.5-FINAL-20090928.jar<br />
rex-20080421.jar<br />
rhino-1.7R1.jar<br />
saaj-api-1.3.jar<br />
slf4j-api.jar<br />
slf4j-log4j12.jar<br />
spring.jar<br />
sqleonardo-2007.03.jar<br />
swingx-2007_10_07.jar<br />
xml-apis-ext.jar<br />
xml-apis.jar</p>
<p>O projeto do Eclipse com os fontes está disponível no link abaixo:<br />
<a href="http://www.furutani.com.br/a/JasperDinamico.zip" title="Baixado: 109 vezes. Tamanho: 9.37 KB">JasperDinamico</a> </p>
<p>O resultado será esse:</p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2010/06/jasper-design-.jpg"><img class="aligncenter size-medium wp-image-640" title="jasper-design---" src="http://www.furutani.com.br/wp-content/uploads/2010/06/jasper-design--300x298.jpg" alt="" width="300" height="298" /></a></p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>NullPointerException ou FileNotFoundException ao executar relatórios com Jasper Reports</title>
		<link>http://www.furutani.com.br/2010/02/nullpointerexception-ou-filenotfoundexception-ao-executar-relatorios-com-jasper-reports/</link>
		<comments>http://www.furutani.com.br/2010/02/nullpointerexception-ou-filenotfoundexception-ao-executar-relatorios-com-jasper-reports/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 18:35:03 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=617</guid>
		<description><![CDATA[Olá! Muitas pessoas tem dificuldade em utilizar os relatórios feitos no iReport em suas aplicações, especialmente as webs, por não saberem onde colocar os arquivos .jasper em sua aplicação para que o Servlet ou o ManagedBean consiga lê-los. Então é bem comum ver  erros como esses: net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException java.lang.NullPointerException at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185) Recomendo colocar os arquivos [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Muitas pessoas tem dificuldade em utilizar os relatórios feitos no <a href="http://jasperreports.sourceforge.net/">iReport </a>em suas aplicações, especialmente as webs, por não saberem onde colocar os arquivos <strong>.jasper</strong> em sua aplicação para que o <strong>Servlet </strong>ou o <strong>ManagedBean </strong>consiga lê-los. Então é bem comum ver  erros como esses:</p>
<pre class="brush: java">net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException</pre>
<pre class="brush: java">java.lang.NullPointerException
at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
</pre>
<p>Recomendo colocar os arquivos jasper e/ou jrxml juntos as classes Java e <span style="text-decoration: underline;"><strong>não</strong></span> nos diretórios abaixo de <strong>Páginas Web </strong>no Netbeans ou <strong>Web Content</strong> no Eclipse, pois eles podem fica expostos. Não é desejado que os usuários possam baixa os arquivos jasper e/ou jrxml e ficarem fuçando neles.</p>
<p>A figura abaixo mostra o local correto para copiar o arquivo jasper e/ou jrxml no Netbeans. No Eclipse a lógica é a mesma, no lugar de Pacotes de código fontes coloque em Java Resorces: src.</p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2010/02/img-jasper.png"><img class="aligncenter size-medium wp-image-616" title="Netbeans" src="http://www.furutani.com.br/wp-content/uploads/2010/02/img-jasper-300x225.png" alt="" width="300" height="225" /></a>Note que o arquivo jasper e/ou jrxml está no mesmo pacote do GerarRelatorioServlet.java e para obter o <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStream.html">InputStream</a> no Servlet eufaço assim getResourceAsStream(&#8220;Rel_Precipitacoes.jasper&#8221;).</p>
<p>Para ser mais organizado é possível colocar em outro pacote, nesse caso é preciso ajustar o caminho ao jasper com relação ao local do GerarRelatorioServlet.java. No exemplo abaixo o jasper ficou no pacote br.com.furutani.relatorios logo obtemos o <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStream.html">InputStream</a> passando esse caminho &#8220;../relatorios/Rel_Precipitacoes.jasper&#8221; no GerarRelatorioServlet.</p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2010/02/img-jasper-01.png"><img class="aligncenter size-medium wp-image-620" title="Jasper Netbeans" src="http://www.furutani.com.br/wp-content/uploads/2010/02/img-jasper-01-300x225.png" alt="" width="300" height="225" /></a></p>
<p>O projeto do netbeans com os fontes e bibliotecas do JasperReports podem ser baixados no link:  <a href="http://www.furutani.com.br/a/Jasper.war" title="Baixado: 470 vezes. Tamanho: 32.61 MB">Projeto Jasper</a> Projeto Jasper Netbeans 6.8</p>
<p>Espero ter ajudado.</p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/02/nullpointerexception-ou-filenotfoundexception-ao-executar-relatorios-com-jasper-reports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JasperReports em Flash</title>
		<link>http://www.furutani.com.br/2010/02/jasperreports-em-flash/</link>
		<comments>http://www.furutani.com.br/2010/02/jasperreports-em-flash/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 02:14:04 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[adobe flex 3]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=604</guid>
		<description><![CDATA[Olá! Faz muito tempo que não publico nada no blog, mas ele não está abandonado.  Neste post vou deixar mais uma dica sobre JasperReports e Flas, na verdade é só um exemplo de que é possivel usar o mesmo .jasper para criar relatórios em PDF e em Flash também. Neste exemplo eu usei um outro [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Faz muito tempo que não publico nada no blog, mas ele não está abandonado.  <img src='http://www.furutani.com.br/wp-includes/images/smilies/icon_redface.gif' alt=':oops:' class='wp-smiley' /> </p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2010/02/jasper-flash.jpg"><img class="alignleft size-full wp-image-605" title="jasper-flash" src="http://www.furutani.com.br/wp-content/uploads/2010/02/jasper-flash.jpg" alt="" width="228" height="81" /></a>Neste post vou deixar mais uma dica sobre JasperReports e Flas, na verdade é só um exemplo de que é possivel usar o mesmo .jasper para criar relatórios em PDF e em Flash também.</p>
<p>Neste exemplo eu usei um outro exemplo que acompanha o <a href="http://sourceforge.net/projects/jasperreports/files/archive/jasperreports-flash/JasperReports%20Flash%20Viewer%203.0.0/" target="_blank">JasperReports Flash Viewer 3.0.0</a>.</p>
<p>» <a href="http://www.furutani.com.br:4894/jasperreports-flash/servlets/show">Clique aqui</a> para ver o exemplo funcionando.</p>
<p>» Download dos fontes: <a href="http://www.furutani.com.br/a/reports.zip" title="Baixado: 322 vezes. Tamanho: 135.73 MB">Relatório em JasperReports e Flash</a> Exemplo de relatório em JasperReports e Flash</p>
<p>Outra opção para exibir relatórios em flash é utilizar o xViewer mostrado neste post <a href="http://www.furutani.com.br/2009/07/exibindo-relatorios-gerados-pelo-jasper-report-em-flex/">Exibindo relatórios gerados pelo Jasper Report em Flex</a>. O exemplo precisa do <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk" target="_blank">Adobe Flex</a> e do ant para compilar, mas voce pode importar os fontes para sua IDE favorita sem problemas é só adicionar os jars no classpath.</p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/02/jasperreports-em-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exibindo relatórios gerados pelo Jasper Report em Flex</title>
		<link>http://www.furutani.com.br/2009/07/exibindo-relatorios-gerados-pelo-jasper-report-em-flex/</link>
		<comments>http://www.furutani.com.br/2009/07/exibindo-relatorios-gerados-pelo-jasper-report-em-flex/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 03:24:35 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=495</guid>
		<description><![CDATA[Olá Este post é para deixar registrado um tutorial relacionado ao JasperReports feito por Roberto Lourenço de Oliveira Júnior da UFLA. De acordo com ele, o tutorial ensina como mostrar os relatórios em aplicativos feitos em Adobe Flex. Neste artigo, mostrarei como integrar os relatórios gerados pelo Jasper Report com uma aplicação Flex, utilizando para [...]]]></description>
			<content:encoded><![CDATA[<p>Olá</p>
<p>Este post é para deixar registrado um tutorial relacionado ao JasperReports feito por <span><span>Roberto Lourenço de Oliveira Júnior da UFLA.<br />
De acordo com ele, o tutorial ensina como mostrar os relatórios em aplicativos feitos em Adobe Flex.<br />
</span></span></p>
<blockquote><p>Neste artigo, mostrarei como integrar os relatórios gerados pelo Jasper Report com uma aplicação Flex,<br />
utilizando para isso o xViewer, que nada mais é que um Flex Viewer para Jasper Report.</p></blockquote>
<a href="http://www.furutani.com.br/a/JasperReportFlex.pdf" title="Baixado: 2459 vezes. Tamanho: 155.8 KB">JasperReportFlex.pdf</a> 
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/07/exibindo-relatorios-gerados-pelo-jasper-report-em-flex/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Introdução a relatórios crosstab com iReport/JasperReports</title>
		<link>http://www.furutani.com.br/2009/07/introducao-a-relatorios-crosstab-com-ireportjasperreports/</link>
		<comments>http://www.furutani.com.br/2009/07/introducao-a-relatorios-crosstab-com-ireportjasperreports/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 03:06:20 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[crosstab]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=492</guid>
		<description><![CDATA[Olá! Escrevi mais um tutorial sobre iReport, dessa vez explorei os relatórios crosstab ou relatórios de tabela cruzada. Introdução a relatórios Crosstab com iReport/JasperReports No exemplo foi usado uma fonte de dados ODBC, mas nada impede usar uma Collection de beans para alimentar o relatório. Espero ter ajudado. Abaixo mais links sobre como fazer relatórios [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Escrevi mais um tutorial sobre iReport, dessa vez explorei os relatórios crosstab ou relatórios de tabela cruzada.</p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2009/07/crosstab.jpg"><img class="aligncenter size-full wp-image-493" title="relatório crosstab" src="http://www.furutani.com.br/wp-content/uploads/2009/07/crosstab.jpg" alt="relatório crosstab" width="636" height="271" /></a></p>
<p><a title="Download" href="http://www.furutani.com.br/a/tutorial_crosstab.pdf">Introdução a relatórios Crosstab com iReport/JasperReports</a></p>
<p>No exemplo foi usado uma fonte de dados ODBC, mas nada impede usar uma <a href="http://www.furutani.com.br/2009/02/usando-o-jrbeancollectiondatasource">Collection de beans</a> para alimentar o relatório.</p>
<p>Espero ter ajudado.  <img src='http://www.furutani.com.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<p>Abaixo mais links sobre como fazer relatórios em Java com iReport.</p>
<ul>
<li><a href="http://www.furutani.com.br/2009/02/usando-o-jrbeancollectiondatasource/">http://www.furutani.com.br/2009/02/usando-o-jrbeancollectiondatasource/</a></li>
<li><a href="http://www.furutani.com.br/2009/02/tutorial-de-jasperreports-usando-arraylist-de-vo/">http://www.furutani.com.br/2009/02/tutorial-de-jasperreports-usando-arraylist-de-vo/</a></li>
<li><a href="http://www.furutani.com.br/2009/07/gerando-relatorios-com-jasperreports-e-ireports-no-netbeans/">http://www.furutani.com.br/2009/07/gerando-relatorios-com-jasperreports-e-ireports-no-netbeans/</a></li>
</ul>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/07/introducao-a-relatorios-crosstab-com-ireportjasperreports/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dicas de iReport</title>
		<link>http://www.furutani.com.br/2009/07/dicas-de-ireport/</link>
		<comments>http://www.furutani.com.br/2009/07/dicas-de-ireport/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 20:56:08 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=486</guid>
		<description><![CDATA[Olá! Abaixo seis dicas para iReport/JasperReport. Espero que seja úteis para alguém. Não exibir null Para que o campo texto no relatório não fique exibindo null basta marcar a opção Branco quando nulo na propriedade dos campos texto do seu relatório. Alterar as propriedades do PDF No menu opções &#62; opções de export é possível [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: small;">Olá!</span></p>
<p><span style="font-size: small;">Abaixo seis dicas para iReport/JasperReport. Espero que seja úteis para alguém.  <img src='http://www.furutani.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
</span></p>
<ol>
<li><span style="font-size: small;"><strong>Não exibir null</strong><br />
Para que o campo texto no relatório não fique exibindo <strong>null</strong> basta marcar a opção <strong>Branco quando nulo</strong> na propriedade dos campos texto do seu relatório.<br />
</span></li>
<li><span style="font-size: small;"><strong>Alterar as propriedades do PDF</strong><br />
No menu <strong>opções &gt; opções de export</strong> é possível alterar várias informações que vão embutidas no PDF, como o<strong> título, autor, assunto, palavras-chave e aplicativo</strong>, no Adobe Reader pressione<strong> Ctrl + D</strong> para ver as propriedades do documento.<br />
</span></li>
<li><span style="font-size: small;"><strong>Colocar senha no PDF<br />
</strong>Para colocar senha no relatório é muito fácil, no menu <strong>opções &gt; opções de export</strong> selecione <strong>Is Encripted</strong> e preencha no campo <strong>using default(User password) </strong>e <strong>Owner password</strong> com a senha para abrir o PDF<strong>.<br />
</strong></span></li>
<li><span style="font-size: small;"><strong>Expressões<br />
</strong>O iReport permite criar expressões bastante sofisticadas, são blocos de código java que são executadas dentro do relatório para mais diversos fins. Geralmente usados determinar se mostra ou não um campo, fazer um cálculo para ser exibido ou simplismente concaternar strings.<br />
Exemplo: Para dar um substring é só usar </span>$P{parametro}.substring( 0, 2 );<br />
Para concatenar com um espaço no meio use $P{parametro} + &#8221; &#8221; + $P{parametro}<br />
Para saber se o parâmetro ou campo é diferente de null, $P{parametro} != null.<br />
Dentro dessas expressões é possível usar os parâmetros, variáveis e os campos.</li>
<li><span style="font-size: small;"><strong>Internacionalização<br />
</strong>É fácil fazer relatório internacionalizáveis no iReport. No menu editar, clique em propriedades do relatório, na aba i18n informe no campo nome da base do pacote do recurso o prefixo dos arquivos properties com as mensagens. Por exemplo se você tem os arquivos Mensagem_pt_BR.properties, Mensagem_en_US.properties e Mensagem.properties informe nesse campo apenas <span style="text-decoration: underline;"><strong>Mensagem</strong></span><br />
Se os arquivos estiverem dentro de pacotes você deve informar o caminho completo, exemplo br.com.furutani.resources.Mensagem<br />
Existe a opção de informar o </span>arquivo de resource bundle via paramêtros, desse forma é mais dinâmica pois você pode montar o resource bundle com uma tabela de banco de dados por exemplo, para isso basta que no HashMap de parâmetros coloque a chave <strong>REPORT_RESOURCE_BUNDLE</strong> e no valor um objeto do tipo java.util.ResourceBundle.<br />
Para mostrar um texto do resource bundle no relatório, adicione um campo texto e coloque na propriedade expressão <span style="color: #008000;">$R{chave}</span>. Exemplo: <strong><span style="color: #008000;">$R{msg.hoje}</span></strong></li>
<li><strong>Protegendo o documento PDF</strong><br />
É possível desabilitar o botão Imprimir, o Ctrl+C no documento, permitir adicionar comentários e etc. <span style="font-size: small;">no menu <strong>opções &gt; opções de export</strong> selecione a propriedade <strong>Is Encripted </strong>e no campo <strong>Permissions </strong>informe 16 para permitir copiar, 2052 para permitir imprimir, 512 para permitir leitores de telas, 0 (zero) para bloquear tudo. Para permitir copiar e imprimir informe </span>2068.<br />
Esses números são baseados nas constantes <strong>ALLOW_*</strong> encontradas na classe <a href="http://1t3xt.info/api/com/lowagie/text/pdf/PdfWriter.html">com.lowagie.text.pdf.PdfWriter</a> para saber o número a informar nesse campo com um conjunto de permissões uso o operador |</p>
<pre>Exemplo:  System.out.println(PdfWriter.AllowCopy | PdfWriter.AllowPrinting);</pre>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/07/dicas-de-ireport/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Gerando Relatórios Com JasperReports e iReports no Netbeans</title>
		<link>http://www.furutani.com.br/2009/07/gerando-relatorios-com-jasperreports-e-ireports-no-netbeans/</link>
		<comments>http://www.furutani.com.br/2009/07/gerando-relatorios-com-jasperreports-e-ireports-no-netbeans/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 14:06:52 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=475</guid>
		<description><![CDATA[Olá! Abaixo uma dica de tutorial sobre JasperReports feito pelo Flávio Araújo. Hoje trago um tutorial que acabei de elaborar sobre o JasperReports e iReports – plugins para geração de relatórios em Java. Neste tutorial, a IDE usada foi o NetBeans. Tutorial: Gerando Relatórios Com JasperReports e iReports no Netbeans View more presentations from flaviowd.]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Abaixo uma dica de tutorial sobre JasperReports feito pelo <a href="http://flaviowd.wordpress.com/">Flávio Araújo</a>.</p>
<blockquote><p><a href="http://flaviowd.wordpress.com/2009/04/26/tutorial-gerando-relatorios-com-jasperreports-e-ireports-no-netbeans/">Hoje trago um tutorial que acabei de elaborar sobre o JasperReports e iReports – plugins para geração de relatórios em Java.</a></p>
<p><a href="http://flaviowd.wordpress.com/2009/04/26/tutorial-gerando-relatorios-com-jasperreports-e-ireports-no-netbeans/">Neste tutorial, a IDE usada foi o NetBeans.</a></p></blockquote>
<p><img style="visibility: hidden; width: 0px; height: 0px;" src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNDY1NDM*Nzk1MDAmcHQ9MTI*NjU*MzUzNTE*MCZwPTEwMTkxJmQ9c3NfZW1iZWQmZz*yJnQ9Jm89OTBlOWY1YTQyM2IzNDA2NmE3MDc2YTliMTM2YTE5ZmEmb2Y9MA==.gif" border="0" alt="" width="0" height="0" /></p>
<div id="__ss_1344906" style="width: 425px; text-align: center;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Tutorial: Gerando Relatórios Com JasperReports e iReports no Netbeans" href="http://www.slideshare.net/flaviowd/tutorial-gerando-relatrios-com-jasperreports-e-ireports-no-netbeans">Tutorial: Gerando Relatórios Com JasperReports e iReports no Netbeans</a><object style="margin:0px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=gerandorelatorioscomjasperreports-090426173843-phpapp01&amp;stripped_title=tutorial-gerando-relatrios-com-jasperreports-e-ireports-no-netbeans" /><param name="allowfullscreen" value="true" /><embed style="margin:0px" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=gerandorelatorioscomjasperreports-090426173843-phpapp01&amp;stripped_title=tutorial-gerando-relatrios-com-jasperreports-e-ireports-no-netbeans" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/flaviowd">flaviowd</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/07/gerando-relatorios-com-jasperreports-e-ireports-no-netbeans/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>IReport e out of memory</title>
		<link>http://www.furutani.com.br/2009/06/ireport-e-out-of-memory/</link>
		<comments>http://www.furutani.com.br/2009/06/ireport-e-out-of-memory/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 16:48:33 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=467</guid>
		<description><![CDATA[Olá! Recentemente tive um problema um tanto quanto estranho com iReport 3.0.0. Criei um relatório com tamanho A4 e desenhei todos os campos do VO/DTO/Bean e ao rodar com  o botão executar relatório ele compilava e exportava para PDF normalmente. Então peguei o .jasper e joguei na minha aplicação, ai começou o problema de OutOfMemory [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Recentemente tive um problema um tanto quanto estranho com <strong>iReport 3.0.0</strong>. Criei um relatório com <strong>tamanho A4</strong> e desenhei todos os campos do <strong>VO/DTO/Bean</strong> e ao rodar com  o botão executar relatório ele compilava e exportava para PDF normalmente. Então peguei o .jasper e joguei na minha aplicação, ai começou o problema de <strong>OutOfMemory &#8211; No Java heap space</strong>. A aplicação rodava normalmente até encontrar a linha <strong>JasperFillManager.fillReport()</strong>, ela  ficava parada por um bom tempo até dar o OutOfMemory sem maiores explicações.</p>
<p>Depois de algum tempo e algumas googladas descobri que se alterar o tamanho do relatório de A4 para algum tamanho maior e funciona normalmente. O que foi que eu fiz voltei para o tamanho A4 e tirei alguns elementos de cima da linha <strong>roxa</strong>. Veja abaixo como era e como ficou.</p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2009/06/ireport.PNG"><img class="aligncenter size-full wp-image-468" title="ireport" src="http://www.furutani.com.br/wp-content/uploads/2009/06/ireport.PNG" alt="ireport" width="366" height="284" /></a></p>
<p>A diferença é de apenas <strong>1 pixel</strong> mas o IReport não reclama que o elemento extrapolou a margem (isso vale pra margem esquerda e direita). O mais engraçado é que na margem direita ele deixa o elemento em vermelho, mas na esquerda não. Um outro ponto a ser observado é se o tamanho das bandas utilizadas não ultrapassa o tamanho do relatório (A4 nesse caso).</p>
<p>Para prevenir desse erro agora trabalho sempre mantendo um espaço sabidamente menor que o tamanho útil  do relatório.</p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/06/ireport-e-out-of-memory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usando o JRBeanCollectionDataSource</title>
		<link>http://www.furutani.com.br/2009/02/usando-o-jrbeancollectiondatasource/</link>
		<comments>http://www.furutani.com.br/2009/02/usando-o-jrbeancollectiondatasource/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 01:12:25 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=359</guid>
		<description><![CDATA[Usando o JRBeanCollectionDataSource Recebi v&#225;rios emails perguntando sobre o Jasper/iReport. Recentemente fui questionado com rela&#231;&#227;o ao JRBeanCollectionDataSource e o seu uso para gerar um relat&#243;rio utilizando beans. Mostrarei com um exemplo bem simples (sem sub-relat&#243;rios) como gerar um relat&#243;rio com o Jasper usando o JRBeanCollectionDataSource como fonte de dados, irei fazer um relat&#243;rio de livros. [...]]]></description>
			<content:encoded><![CDATA[<p>Usando o JRBeanCollectionDataSource</p>
<p>Recebi v&aacute;rios emails perguntando sobre o Jasper/iReport. Recentemente fui questionado com rela&ccedil;&atilde;o ao JRBeanCollectionDataSource e o seu uso para gerar um relat&oacute;rio utilizando beans.</p>
<p>Mostrarei com um exemplo bem simples (sem sub-relat&oacute;rios) como gerar um relat&oacute;rio com o <a href="http://jasperreports.sourceforge.net">Jasper</a> usando o JRBeanCollectionDataSource como fonte de dados, irei  fazer um relat&oacute;rio de livros. </p>
<p align="center"><img src="/tutoriais/imagens/figura1.jpg" width="500" height="478"></p>
<p>  OBS: <br />
  <em>Em um <a href="http://www.furutani.com.br/2009/02/tutorial-de-jasperreports-usando-arraylist-de-vo/">outro tutorial</a> eu tive o trabalho de criar um DataSource customizado, mas creio que &eacute; facilmente adaptado para usar somente o JRBeanCollectionDataSource, dispensando o DataSource customizado. </em></p>
<p><em> Na express&atilde;o para o sub-relat&oacute;rio teria que usar new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(${ListaDisciplinas})<br />
  O F&aacute;bio Miranda foi quem me questionou sobre esse uso do JRBeanCollectionDataSource, quando tiver mais tempo vou adaptar o tutorial com essas dicas. Me cobrem <img src='http://www.furutani.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </em></p>
<p>Foi utilizado o iReport 0.5.3, jdk1.5.0_03 e Windows XP</p>
<p>Primeiro vamos ao bean Livro</p>
<pre class="brush: java">package exemplo;
public class Livro {
   private String titulo;
   private String autor;
   private String isbn;
   private String editora;
   private String descricao;

public Livro(){}&lt;br&gt;
// todos getters e setters omitidos} </pre>
<div align="center">
<p align="left">O relat&oacute;rio &eacute; bem simples de ser desenhado, crie um novo relat&oacute;rio (menu File &gt; new document) e insira os <strong>static text</strong> para os textos fixos (&quot;Minha Biblioteca&quot;, &quot;Titulo&quot;, &quot;Autor&quot;, &quot;ISBN&quot;, &quot; Editora&quot; e &quot;Descricao&quot;) e 5<strong> text fields</strong> que ficar&atilde;o em frente aos static text &quot;Titulo&quot;, &quot;Autor&quot;, etc&#8230;.</p>
<p><img src="/tutoriais/imagens/figura2.jpg" width="500" height="382"></p>
<p align="left">Quando voc&ecirc; insere o text field o texto que aparece &eacute; <strong>$F{Field}</strong>, para mudar de um duplo clique sobre ele. Vai ser mostrado uma janela como essa:</p>
<p align="center">    <img src="/tutoriais/imagens/figura3.jpg" width="370" height="380"></p>
<p align="left">    Altere <strong>$F{Field}</strong> para <strong>$F{titulo} </strong>e fa&ccedil;a isso com os outros 4 campos. Note que o texto <strong>$F{titulo} </strong>vai continuar em azul, isso ocorre porque n&atilde;o foi declarado o field titulo. O pr&oacute;ximo passo &eacute; deixar <strong>$F{titulo} </strong>na cor verde. No menu View, selecione Report Fields. Na janela que ser&aacute; mostrada clique em New, preencha Field Name titulo, no Field Class Type selecione java.lang.String e no Field Description n&atilde;o coloque nada, clique em Ok. Repita a opera&ccedil;&atilde;o para autor, isbn, editora e descri&ccedil;&atilde;o, como mostra a figura abaixo.</p>
<p align="center"><img src="/tutoriais/imagens/figura4.jpg" width="379" height="166"> </p>
<p align="left">Uma rela&ccedil;&atilde;o importante a ser ressaltada &eacute; a dos atributos do bean &lt;&gt; Fields &lt;&gt; Text Fields, os nomes devem iguais como mostrado na figura abaixo. </p>
<p align="center"><img src="/tutoriais/imagens/figura5.jpg" width="332" height="465"> </p>
<p align="left">No iReport como no Java mai&uacute;scula e min&uacute;scula fazem toda a diferen&ccedil;a. </p>
<p>    Compile o relat&oacute;rio, menu Build &gt; Compile. Se aparecer algo parecido com isso no console o relat&oacute;rio est&aacute; sem nenhum erro. </p>
<div align="left">
<pre class="brush: java"> Compiling to file... .Livros.jasper -&gt; C:iReport-0.5.3Livros.java
  it.businesslogic.ireport.ReportClassLoader@1a73d30
  Compilation running time : 260</pre>
</p></div>
</p>
<p align="left">Um dos erros mais comuns é esse</p>
<div align="left">
<pre class="brush: java">
  Errors compiling .Livros.jasper!
  it.businesslogic.ireport.ReportClassLoader@e05ad6
  net.sf.jasperreports.engine.JRException:
  Report design not valid : 1. Field not found : Titulo
</pre>
<p>    Nesse caso o erro foi causado pelo &#8220;T&#8221; maiusculo, o certo é &#8220;t&#8221; min&uacute;sculo no TextField expression.
    </p>
<p></p>
<p>    Ou se o &quot;t&quot; est&aacute; min&uacute;sculo mas o erro continua, deve ser porque n&atilde;o foi declarado no Report Fields.<br />
    Agora iremos ver a classe que exibi o relat&oacute;rio. O diferencial est&aacute; em azul, ao inv&eacute;s de utilizarmos uma </p>
<p> Connection vamos usar o JRBeanCollectionDataSource.</p></div>
</div>
<pre class="brush: java">package exemplo;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;

public class Inicio {

	public void exibirRelatorio() {
		// Caminho do .jasper do relatorio
		String caminhoRelJasper = &quot;Livros.jasper&quot;;

		// Lista com beans
		List listaLivros = getLivros();

		// Stream com o .jasper
		InputStream relJasper = getClass()
				.getResourceAsStream(caminhoRelJasper);

		&lt;font color=&quot;#0000FF&quot;&gt;// O datasource
		JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(
				listaLivros);&lt;/font&gt;

		// Parametros do relatorios
		Map parametros = new HashMap();

		JasperPrint impressao = null;
		try {

			impressao = JasperFillManager.fillReport(relJasper, parametros, ds);
			JasperViewer viewer = new JasperViewer(impressao, true);
			viewer.setVisible(true);

		} catch (JRException e) {
			System.out.println(e.getMessage());
		}

	}

	public List getLivros() {
		List listaLivros = new ArrayList();
		Livro livro = new Livro();

		livro.setTitulo(&quot;Use a cabeça! Padrões de Projeto - Design Patterns&quot;);
		livro.setAutor(&quot;Freeman, Eric / Freeman, Elisabeth&quot;);
		livro.setIsbn(&quot;8576080869&quot;);
		livro.setEditora(&quot;Alta Books&quot;);
		livro
				.setDescricao(&quot;Como você sabe que não quer reinventar a roda (ou, &quot;
						+ &quot;pior, um pneu furado), &quot;
						+ &quot;então você busca padrões de projetos&quot;);
		listaLivros.add(livro);

		livro = new Livro();
		livro.setTitulo(&quot;Entendendo e Dominando o Linux&quot;);
		livro.setAutor(&quot;Morimoto, Carlos&quot;);
		livro.setIsbn(&quot;8589535339&quot;);
		livro.setEditora(&quot;Digerati&quot;);
		livro
				.setDescricao(&quot;Como o nome diz, este livro é uma obra destinada a &quot;
						+ &quot;todos aqueles que &quot;
						+ &quot;pretendem conhecer na prática e em detalhes os &quot;
						+ &quot;principais recursos oferecidos pelo Linux&quot;);
		listaLivros.add(livro);

		livro = new Livro();
		livro.setTitulo(&quot;Guia de Certificação em Java - Exame CX-310-035&quot;);
		livro.setAutor(&quot;Pereira, Rafael&quot;);
		livro.setIsbn(&quot;8573934263&quot;);
		livro.setEditora(&quot;Ciência Moderna&quot;);
		livro.setDescricao(&quot;Este Guia de Certificação em Java é um livro &quot;
				+ &quot;fundamental para preparar os&quot;
				+ &quot; candidatos ao exame de programador Java da Sun, &quot;
				+ &quot;a primeira e mais &quot;
				+ &quot;requisitada certificação desta tecnologia.&quot;);
		listaLivros.add(livro);

		return listaLivros;
	}

	public static void main(String[] args) {
		new Inicio().exibirRelatorio();
	}
}
</pre>
<p>&Eacute; isso que eu queria passar&#8230; em caso de d&uacute;vida me mande um email, assim vou poder melhorar esse tutorial. <br />
<a href="http://www.furutani.com.br/tutoriais/Fontes_Usando_o_JRBeanCollectionDataSource.rar">Donwload do c&oacute;digo fonte</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/02/usando-o-jrbeancollectiondatasource/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Tutorial de JasperReports usando ArrayList de VO</title>
		<link>http://www.furutani.com.br/2009/02/tutorial-de-jasperreports-usando-arraylist-de-vo/</link>
		<comments>http://www.furutani.com.br/2009/02/tutorial-de-jasperreports-usando-arraylist-de-vo/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 01:08:51 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=361</guid>
		<description><![CDATA[Olá Javeiros! Eu estava com uma dificuldade enorme para trabalhar com ArrayList de VOs (Value Objects ) com um atributo ArrayList para alimentar um relatório. O problema era o seguinte: montar um relatório através de um ArrayList de VOs de Aluno (ver listagem 1) que tem um ArrayList de VOs de Disciplina (ver listagem 2), [...]]]></description>
			<content:encoded><![CDATA[<p class="style2">Olá Javeiros!</p>
<p>Eu estava com uma dificuldade enorme para trabalhar com ArrayList de VOs (Value Objects ) com um atributo ArrayList para alimentar um relatório.<br />
O problema era o seguinte: montar um relatório através de um ArrayList de VOs de Aluno (ver listagem 1) que tem um ArrayList de VOs de Disciplina (ver listagem 2), sendo um aluno por página.</p>
<p>Listagem 1:</p>
<pre lang="java">package vo;
import java.io.Serializable;
import java.util.ArrayList;
/**
* @author RJFurutani
* @04/05/2005
*/
public class Aluno implements Serializable{
private String nome;
private String curso;
private ArrayList disciplinas;
/**
* @param nome
* @param curso
* @param disciplinas
*/
public Aluno(String nome, String curso, ArrayList
					disciplinas) {
super();
this.nome = nome;
this.curso = curso;
this.disciplinas = disciplinas;
}
/**
* @return Returns the curso.
*/
public String getCurso() {
return curso;
}
/**
* @param curso The curso to set.
*/
public void setCurso(String curso) {
this.curso = curso;
}
/**
* @return Returns the disciplinas.
*/
public ArrayList getDisciplinas() {
return disciplinas;
}
/**
* @param disciplinas The disciplinas to set.
*/
public void setDisciplinas(ArrayList
			disciplinas) {
this.disciplinas = disciplinas;
}
/**
* @return Returns the nome.
*/
public String getNome() {
return nome;
}
/**
* @param nome The nome to set.
*/
public void setNome(String nome) {
this.nome = nome;
}
}
</pre>
<p>Listagem 2</p>
<pre lang="java">	package vo;
import java.io.Serializable;
/**
* @author RJFurutani
* @04/05/2005
*/
public class Disciplina implements Serializable{

/**
* @param nome
* @param cargaHoraria
*/
public Disciplina(String nome,String cargaHoraria){
super();
this.nome = nome;
this.cargaHoraria = cargaHoraria;
}
/**
* @return Returns the cargaHoraria.
*/
public String getCargaHoraria() {
return cargaHoraria;
}
/**
* @param cargaHoraria The cargaHoraria to set.
*/
public void setCargaHoraria(String cargaHoraria){
this.cargaHoraria = cargaHoraria;
}
/**
* @return Returns the nome.
*/
public String getNome() {
return nome;
}
/**
* @param nome The nome to set.
*/
public void setNome(String nome) {
this.nome = nome;
}
private String nome;
private String cargaHoraria;
}</pre>
<p class="style2">Depois de um tempão pesquisando e perguntando no GUJ, JavaFree, na lista<br />
<strong>enterprise-list@soujava.dev.java.net </strong> e usando o Google achei esse video<a href=" http://ireport.sourceforge.net/swf/Subreport_viewlet_swf.htm"> http://ireport.sourceforge.net/swf/Subreport_viewlet_swf.htm</a> que me deu uma luz e vou tentar passar de forma mais objetiva a solução que eu encontrei.</p>
<p class="style2">Eu vou considerar que o leitor já tenha alguma experiência com o iReports e o JasperReports. Não vou entrar em muitos detalhes de design.</p>
<p>Primeiro vamos criar o relatório principal, nele vamos por os fields nome do aluno e o curso que ele faz e abaixo vai ficar o subrelatório.<br />
<img src="http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/fig1.jpg" alt="" /><br />
A ferramenta para adicionar o subrelatório está na barra de ferramentas:</p>
<p class="style2"><img src="http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/fig2.JPG" alt="" /></p>
<p>Clique no icone destacado e desenhe ele como na figura anterior.</p>
<p>Agora vamos criar o subrelatório, esse é bem mais simples.<br />
<img src="http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/fig3.jpg" alt="" /></p>
<p class="style2">no subrelatório os fields são esses:</p>
<p><img src="http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/fig4.jpg" alt="" /><br />
Não tem nada de mais.<br />
Agora vamos aos fields do relatório principal.</p>
<p><img src="http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/fig5.jpg" alt="" /><br />
O field nome e curso são para o próprio relatório principal, o field ListaDisciplinas é o que vai ser passado para o subrelatório, reparem que ele é do tipo Object.</p>
<p>E como parâmetro o relatório principal recebe o caminho do subrelatório <strong>compilado</strong> (.jasper).<br />
<img src="http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/fig6.jpg" alt="" /></p>
<p class="style2">Agora vamos nas propriedades do subrelatório que foi adicionado no relatório principal. Dê um duplo clique nele e vamos as configurações.</p>
<p><img src="http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/fig.jpg" alt="" /><br />
Na aba Subreport selecione Use datasource expression e digite $F{ListaDisciplinas} , esse nome deve ser igual ao informado no field.</p>
<p class="style2"><img src="http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/fig8.jpg" alt="" /></p>
<p>Clique na aba subreport (other) e configure conforme mostra a figura.<br />
<img src="http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/fig9.jpg" alt="" /></p>
<p>Como estamos trabalhando com VO o nome dos fields deve <strong>coincidir</strong> com o nome dos <strong>atributos</strong> das <strong>classes VO (Aluno e Disciplina) </strong>.<br />
<img src="http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/fig10.jpg" alt="" /></p>
<p>Com layout feito podemos ir para o desenvolvimento da classe DataSource. Eu vou chamar aqui de relatórioAlunosDataSource.<br />
É uma classe que implementa a interface JRDataSource, então devemos implementar obrigatoriamente dois métodos o next() e getFieldValue().<br />
O método next() retorna um boolean, true se houver mais Aluno na ArrayList ou false se não tiver mais.</p>
<pre lang="java"> valorAtual = itrAlunos.hasNext() ? itrAlunos.next() : null;
 irParaProximoAluno = (valorAtual != null);
 return irParaProximoAluno;</pre>
<p>O método getFieldValue() recebe um parâmetro JRField, através desse parâmetro nós podemos saber qual field o JasperReports está pedindo pra por no relatório.</p>
<pre lang="java">  Object valor = null;
  Aluno aluno = (Aluno) valorAtual;</pre>
<pre class="style3"> if ("nome".equals(campo.getName())) {
   valor = aluno.getNome();
 } else if ("ListaDisciplinas".equals(campo.getName())) {
   valor = new JRBeanCollectionDataSource(
   			aluno.getDisciplinas());
 } else if ("curso".equals(campo.getName())) {
   valor = aluno.getCurso();
 }</pre>
<p>Observer que quando é solicitado o field <span class="style3">ListaDisciplinas</span> nós devolvemos um <span class="style2">JRBeanCollectionDataSource instanciado com a ArrayList de Disciplina do Aluno. Lembra que na configuração dos fields do relatório principal nós colocamos ListaDisciplinas do tipo Object, foi justamente por esse motivo.</span></p>
<p>Chegou a hora de criar a classe principal</p>
<pre lang="java">package jasper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class Gerarelatório {
private static final String rel1 = "RelAlunos.jasper";

private static final String rel2 =
"jasper/RelAlunosDisciplinas.jasper";

public Gerarelatório() throws Exception {
// Lista dos alunos
ArrayList listaAlunos = GerarDadosFicticios.getListaAlunos();
// Cria o data source para o relatório
relatórioAlunosDataSource ds =
	new relatórioAlunosDataSource(
		listaAlunos);

// parâmetros do relatório
Map parâmetros = new HashMap();
parâmetros.put("pathSubRel",rel2);

JasperPrint impressao = JasperFillManager.fillReport(
getClass().getResourceAsStream(rel1), parâmetros, ds);
//exibe o relatório
JasperViewer viewer = new JasperViewer(impressao, true);
viewer.show();
}
public static void main(String[] args) throws Exception {
new Gerarelatório();
}
}</pre>
<p><span class="style2">Para criar dados ficticios usados para testar o relatório foi criado a classe GerarDadosFicticios</span></p>
<pre lang="java">package jasper;
import java.util.ArrayList;
import vo.Aluno;
import vo.Disciplina;

/**
* @author RJFurutani
* @04/05/2005
*/
public class GerarDadosFicticios {
public static ArrayList getListaAlunos() {

ArrayList listaAlunos = new ArrayList();
ArrayList disciplinas = null;

Disciplina disciplina1 = null;
Disciplina disciplina2 = null;
Disciplina disciplina3 = null;
Disciplina disciplina4 = null;
/*
* Aluno Roberto
*/
disciplina1 =
   new Disciplina("Banco de Dados I", "45Hs");
disciplina2 =
   new Disciplina("Equações Diferenciais I", "50Hs");
disciplina3 =
   new Disciplina("Algoritmos e Estrutura de Dados I",

"60Hs");
disciplinas = new ArrayList();
disciplinas.add(disciplina1);
disciplinas.add(disciplina2);
disciplinas.add(disciplina3);
Aluno roberto =
   new Aluno("Roberto Furutani", "Ciencia da Computacao",
disciplinas);
listaAlunos.add(roberto);
/*
* Aluna Fernanda
*/
disciplina1 = new Disciplina("Biologia", "45Hs");
disciplina2 = new Disciplina("Matematica Elementar II",
"30Hs");
disciplina3 = new Disciplina(
"Instrumentação Cirurgica", "70Hs");
disciplinas = new ArrayList();
disciplinas.add(disciplina1);
disciplinas.add(disciplina2);
disciplinas.add(disciplina3);
Aluno fernanda = new Aluno("Fernanda Fernandes",

"Enfermagem", disciplinas);
listaAlunos.add(fernanda);
/*
* Aluna Silvia
*/
disciplina1 = new Disciplina("Fisica", "45Hs");
disciplina4 = new Disciplina("Quimica", "45Hs");
disciplina2 = new Disciplina("Equações Diferenciais II",
"50Hs");
disciplina3 = new Disciplina(
"Inglês", "60Hs");
disciplinas = new ArrayList();
disciplinas.add(disciplina1);
disciplinas.add(disciplina2);
disciplinas.add(disciplina3);
disciplinas.add(disciplina4);

Aluno silvia = new Aluno("Silvia da Silva", "Matemática",
disciplinas);
listaAlunos.add(silvia);
/*
* Aluno André

*/
disciplina1 = new Disciplina("Banco de Dados II", "65Hs");
disciplina2 = new Disciplina("Calculo Numerico I",
"50Hs");
disciplina3 = new Disciplina(
"Eletronica I", "60Hs");
disciplinas = new ArrayList();
disciplinas.add(disciplina1);
disciplinas.add(disciplina2);
disciplinas.add(disciplina3);
Aluno andre =
   new Aluno("André Oliveira Lima", "Engenharia da Computacao",
disciplinas);
listaAlunos.add(andre);
return listaAlunos;
}}</pre>
<p><span class="style2">O relatório vai ficar assim:</span></p>
<p><span class="style2"><img src="http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/fig11.jpg" alt="" /> </span></p>
<p>É isso ai!!! Espero ter ajudado alguém com esse humilde tutorial.</p>
<p><strong>Referências:</strong></p>
<p><span class="style2"><a href="http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/Tutorial.zip">Download dos fontes</a><br />
GUJ &#8211; www.guj.com.br (<a href="http://www.guj.com.br/posts/list/23830.java">http://www.guj.com.br/posts/list/23830.java</a>)<br />
JavaFree &#8211; www.javafree.com.br<br />
Lista Enterprise &#8211; enterprise-list@soujava.dev.java.net<br />
Docs iReport &#8211; http://ireport.sourceforge.net/docs.html</span></p>
<p>Videos iReport &#8211; http://ireport.sourceforge.net/swf/<br />
Relatórios com Hibernate &#8211; http://www.hibernate.org/79.html</p>
<p>Tutorial Relatórios com JasperReports e iReports &#8211; www.furutani.com.br</p>
<p>Atualizado em 24/06/2009</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/02/tutorial-de-jasperreports-usando-arraylist-de-vo/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>
