Escolar Documentos
Profissional Documentos
Cultura Documentos
Desenvolvendo Relatorios Profissionais Com IReport para Netbeans IDE
Desenvolvendo Relatorios Profissionais Com IReport para Netbeans IDE
em
on
st
ra
Desenvolvendo Relatrios
Profissionais com iReport
para NetBeans IDE
em
on
st
ra
AGRADECIMENTOS
Primeiramente quero agradecer a minha famlia, pelo apoio e compreenso da minha ausncia.
Agradeo o apoio da Editora Cincia Moderna, em especial ao editor Paulo Andr P. Marques, pelo incentivo e crdito em mais este livro.
em
on
st
ra
PREFCIO
Nem bem havia feito um ano que meu primeiro livro sobre relatrios JasperReports usando iReport havia sido iniciado e, acompanhando o site oficial da ferramenta, recebo uma excelente notcia: o iReport ir rodar sobre o NetBeans IDE.
Na prtica, isso significa que voc, como desenvolvedor, poder criar, testar e
utilizar seus relatrios diretamente na IDE, sem a necessidade de abrir outro aplicativo. De fato, isso um grande salto para as ferramentas gratuitas, que anos atrs,
no tinham essa caracterstica.
Embora o iReport permanea com sua estrutura, praticamente inalterada, houveram mudanas visuais para que o mesmo se incorporasse ao NetBeans.
em
on
st
ra
INTRODUO AO DESENVOLVIMENTO DE
RELATRIOS COM IREPORT
Em 2001, nasceu o JasperReports, criado por Teodor Danciu, quando teve a tarefa de avaliar ferramentas de relatrios para um projeto que estava trabalhando.
As solues existentes eram muito caras para o oramento do projeto e, em uma
situao comum no mundo do desenvolvimento, ele decidiu escrever sua prpria
ferramenta de relatrios, que ao liber-la para a comunidade, ficou imensamente
popular em pouco tempo.
on
st
ra
em
Em 09 de outubro de 2002, o italiano Giulio Toffoli lanou, de forma independente, uma ferramenta para gerar relatrios visuais, chamando-a de iReport. Sua
caracterstica era de desenvolver relatrios gerando o formato XML no padro JasperReports. Isso tornou mais acessvel e intuitivo o uso dos relatrios escritos em
JasperReports.
Em 2005, com a popularidade do iReport, a JasperSoft (empresa mantenedora
do JasperReports) tornou esta ferramenta oficial na construo de relatrios para o
JasperReports.
Com seis anos de existncia, o iReport reescrito para trabalhar dentro do NetBeans IDE, aps o seu criador ter visto uma palestra no JavaOne 2007 a respeito
de um desenvolvedor que estava criando tal ferramenta para gerar relatrios JasperReports.
Este livro a mais que uma orientao, um guia que o ensinar a utilizar o iReport para NetBeans para construir relatrios JasperReports, criando desde os mais
simples relatrio at os mais sofisticados, utilizando desde uma linguagem SQL at
as mais sofisticadas linguagens orientadas a objetos como HQL do Hibernate e EJB
QL (Enterprise JavaBeans Query Language), passando por sub-relatrios, relatrios
com grficos, crosstab, passagem de parmetros e outros.
Tambm ser visto a exportao para diversos formatos suportados pelo JasperReports, como PDF, MS Excel, RTF, ODF, entre outros.
em
on
st
ra
Introduo
XI
tambm desejvel que o leitor esteja bem familiarizado tanto com o desenvolvimento desktop Java Swing, como em aplicaes Web envolvendo Servlets, JSP
e JavaServer Faces. O conhecimento de frameworks Java ORM, como o Hibernate
e TopLink, de EJB 3 e IoC, como o Spring, importante para um melhor aproveitamento dos exemplos.
ra
ANTES DE COMEAR
em
on
st
Em algumas partes deste livro, voc encontrar apenas o trecho do cdigo produzido, focado no assunto em questo, possuindo uma simbologia indicativa de
que o restante no est sendo mostrado. Este smbolo mostrado a seguir:
... Indica que acima ou abaixo contm mais cdigo, mas que no est sendo exibido, sendo necessrio recorrer ao exemplo completo, para visualiz-lo na ntegra,
que pode ser baixado gratuitamente no site do autor.
OS SOFTWARES REQUERIDOS
Os aplicativos criados nesse livro no exigem software proprietrio. Portanto ao
longo dos captulos voc no s aprender a us-los, como tambm onde encontrlos na Internet, caso precise de uma atualizao.
Esse livro no est focado especialmente em um sistema operacional, portanto
a sua escolha livre neste sentido.
XII
HARDWARE REQUERIDO
Uma boa configurao de hardware se faz necessrio para trabalhar com aplicaes escritas em Java. Um computador para rodar bem o iReport para NetBeans
deve ter as seguintes configuraes para uma confortvel utilizao, segundo o
autor:
Processador: Pentium 4 (similar) ou superior
Memria: 512 MB de RAM mnimo (recomendo 2 GB de RAM no uso do NetBeans IDE completo)
ra
HD: 100 MB de espao livre (1GB caso esteja utilizando o NetBeans IDE)
st
on
em
Introduo
XIII
st
ra
A seguir, voc tem uma sinopse de cada um dos captulos do livro, incluindo
tambm o apndice:
on
em
O iReport para NetBeans IDE um programa Open Source, capaz de criar visualmente os mais complexos relatrios para aplicaes Java no formato da biblioteca
JasperReports.
Atravs de uma interface grfica intuitiva, o desenvolvedor capaz de criar qualquer tipo de relatrio de forma simples e rpida. Mesmo sabendo que o iReport
desenvolve um formato XML usado pelo JasperReports, o que no difcil de manipular, h uma vantagem em usar esta ferramenta. Se o desenvolvedor um usurio iniciante no formato XML do JasperReports, o iReport supre suas necessidades
evitando que seja necessrio fazer modificaes no cdigo fonte. Caso seja experiente neste formato, o iReport minimiza o tempo na criao dos mais complexos
relatrios.
Neste captulo voc aprender onde obter, os requerimentos necessrios para
executar, como instalar e entender sobre algumas das mais importantes caractersticas do iReport.
XIV
ra
DESENVOLVIMENTO
em
on
st
Introduo
XV
Os relatrios mais utilizados em aplicaes, com toda certeza, so os dinmicos. Aqueles relatrios que transmitimos uma determinada informao e este nos
trazem determinados dados.
st
ra
on
em
Assim como criar um relatrio, muito fcil cham-lo por uma aplicao. Este
captulo utilizar uma aplicao desktop simples, com interface grfica Swing, criada no NetBeans IDE, apenas com o intuito de ensin-lo a chamar sua aplicao.
CAPTULO 7 - SUB-RELATRIOS
Os sub-relatrios so relatrios dentro de outros, tambm conhecidos como
relatrios do tipo mestre-detalhe.
A idia bsica para a criao de um relatrio mestre-detalhe ter duas entidades
relacionadas.
Estes relatrios, embora possam parecer complexos, so simples de desenvolver
em JasperReports.
XVI
O Hibernate hoje o mais popular projeto de gerenciamento de dados persistentes em Java e tambm o que possui uma gama de solues para problemas
comuns.
st
ra
Neste captulo voc aprender a desenvolver seus relatrios utilizando o Hibernate para acessar os dados, incluindo um exemplo com sub-relatrio.
on
em
Introduo
XVII
st
ra
em
on
XVIII
ra
Neste captulo ser apresentado como criar grficos em um relatrio JasperReports usando o iReport para NetBeans, alm de aprender a trabalhar com consultas
diferentes no mesmo relatrio, o que chamamos de Subdataset.
st
em
on
Aplicaes internacionalizadas so muito comuns no mundo do desenvolvimento. No seria diferente no caso dos relatrios. O JasperReports introduziu esta caracterstica na verso 0.6.2 e desde ento seu suporte foi acrescentado ao iReport,
facilitando mais ainda seu desenvolvimento.
Neste captulo ser criada uma aplicao Java desktop simples, pelo NetBeans,
para ser usada com um relatrio internacionalizado gerado pelo iReport.
CAPTULO 14 - CROSSTABS
Crosstabs (cross-tabulation), no JasperReports, so tabelas cruzadas, comuns no
desenvolvimento de relatrios com a utilizao de planilhas eletrnicas, tambm
conhecidas por tabelas dinmicas ou tabelas de referncias cruzada.
Diferente dos demais relatrios criados at o momento no livro, um relatrio
crosstab possui uma tabela contendo um nmero de linhas e colunas que no se
conhece em tempo de design.
Introduo
XIX
Graas ao iReport, voc pode contar com o uso de um assistente, tornando esta
tarefa no muito complicada.
Neste captulo voc aprender a criar crosstabs no iReport, modificar, formatar
e usar tambm subdatasets para relatrios mais complexos.
st
ra
on
CAPTULO 16 - SCRIPTLET
em
Neste captulo ser visto como escrever um simples scriptlet, qual a sua utilidade e como us-lo em seu relatrio.
XX
ra
Para Download, veja CDIGOS DOS EXEMPLOS CRIADOS NO LIVRO, alm dos
arquivos referentes aos exemplos contidos no livro, h tambm os seguintes apndices:
on
st
APNDICE B O MYSQL
em
SUMRIO
st
ra
em
on
XXII
em
on
st
ra
Sumrio
XXIII
em
on
st
ra
XXIV
em
on
st
ra
Sumrio
XXV
ra
on
st
em
XXVI
on
st
ra
em
Sumrio
XXVII
em
on
st
ra
1
D
em
on
st
ra
Captulo 1
O iReport para NetBeans IDE um programa Open Source, capaz de criar visualmente os mais complexos relatrios para aplicaes Java no formato da biblioteca
JasperReports.
Atravs de uma interface grfica intuitiva, o desenvolvedor capaz de criar qualquer tipo de relatrio de forma simples e rpida. Mesmo sabendo que o iReport
desenvolve um formato XML usado pelo JasperReports, o que no difcil de manipular, h uma vantagem em usar esta ferramenta. Se o desenvolvedor um usurio iniciante no formato XML do JasperReports, o iReport supre suas necessidades
evitando que seja necessrio fazer modificaes no cdigo fonte. Caso seja experiente neste formato, o iReport minimiza o tempo na criao dos mais complexos
relatrios.
st
ra
on
em
O iReport para NetBeans IDE, por ser uma ferramenta Java, precisa do Sun Java
2 SDK 1.5 instalado em sua mquina, ou superior. Perceba que no apenas a JVM
(Java Virtual Machine) que deve estar instalada. Isso porque, para compilar os arquivos jasper, necessria a instalao da distribuio do Java SE, sendo impossvel
somente com a JRE (Java Runtime Environment).
ra
st
on
em
A INSTALAO NO WINDOWS
Tendo em vista que o Windows no qual ser descrito est na verso XP ou superior, inicie o assistente com um duplo clique sobre o arquivo executvel, que como
tantos outros desta plataforma, basta avanar at concluir.
Para configurar qualquer varivel de ambiente em um sistema Windows na verso NT, voc deve entrar no Painel de Controle, Sistema e na guia Avanado clique no
boto Variveis de Ambiente.
Captulo 1
ra
em
java -version
on
st
Ao confirmar as caixas de dilogo, teste se o Java est funcionando na sua mquina em um prompt de comando, como mostrado a seguir:
EM WINDOWS VERSO 9X
Voc deve editar o arquivo autoexec.bat, encontrado em C:\autoexec.bat e adicionar as variveis como o exemplo a seguir:
set JAVA_HOME= C:\jdk1.6.0_06
A INSTALAO NO LINUX
No momento em que este livro est sendo escrito, a verso baixada para o sistema operacional Linux a jdk-6u6-linux-i586.bin.
Entre no terminal do seu Linux, aps baixar o arquivo, e mude para o usurio
Root ou administrativo do sistema e altere a permisso do arquivo para executvel,
assim voc poder instal-lo:
shell# chmod +x jdk-6u6-linux-i586.bin
Execute o arquivo:
shell# ./jdk-6u6-linux-i586.bin
st
ra
JAVA_HOME=/jdk1.6.0_06
JRE_HOME=/jdk1.6.0_06/jre
export JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/lib
export MANPATH=$MANPATH:$JAVA_HOME/man
on
em
Captulo 1
st
ra
Para baixar o iReport para NetBeans IDE, entre no endereo oficial http://www.
jasperforge.org/ireport ou http://ireport.sourceforge.net/. At o momento em que
este livro escrito a verso atual do iReport para NetBeans IDE est em 3.1.2. Esta
verso tem suporte completo ao JasperReports 3.1.2.
em
on
Editor WYSIWYG para criao de relatrios, possuindo ferramentas que incluem desenhos de retngulos, linhas, elipses, caixas de texto, rtulos, grficos, sub-relatrios, cdigos de barras e etc.;
Um editor para escrever as expresses incluindo destaques (highlights) nas
sintaxes;
ra
st
on
em
Captulo 1
INSTALANDO O IREPORT
Como h mais de uma forma de instalar o iReport para NetBeans, voc ver todas aqui. A primeira forma de instalao que ser mostrada no sistema operacional Windows com o assistente. A segunda forma ser sem o uso de assistente, neste
caso tanto no sistema operacional Windows como no Linux ser mostrada.
A ltima forma ser no NetBeans IDE, em forma de plug-in.
ra
st
1. Na primeira etapa voc tem a tela inicial do iReport nb-3.1.2. Clique no boto
Next para prosseguir.
on
em
4. A quarta etapa o local onde ser instalado o iReport. Por padro ele definido dentro do diretrio JasperSoft\iReport-nb-3.1.2 em Arquivos de programas do seu sistema operacional Windows. Caso precise mudar, clique no
boto Browse e selecione o novo local em que deseja instalar. Para prosseguir,
clique no boto Next.
5. No quinto passo voc define o local de acesso no menu Iniciar do Windows.
Caso concorde com a atual configurao, basta clicar no boto Install para
iniciar o processo de instalao. Caso deseje alterar o acesso, basta digitar no
local selecionado, em JasperSoft\iReport-nb-3.1.2.
6. Aps a instalao, a opo Run iReport nb-3.1.2 estar selecionada. Clicando
no boto Finish, abrir imediatamente o iReport para trabalhar. O instalador
tambm criar um atalho na rea de trabalho para acesso rpido ao programa,
atravs do arquivo iReport.exe.
10
Ateno: O instalador cria, alm do arquivo ireport.exe, um arquivo chamado ireport_w.exe, que inicializa o iReport para NetBeans com o prompt de comando.
st
shell# cd iReport-nb-3.1.2/
shell# chmod +x ireport
ra
em
on
shell# ./ireport
Captulo 1
11
st
ra
on
em
12
A verso do NetBeans utilizado est no arquivo platform.properties, expandindo iReport>Important Files, dando um duplo clique em NetBeans Platform Config.
A ltima linha, mais especificamente em nbplatform.active, antes de compilar, deve
ter o valor substitudo para default.
em
on
st
ra
Para compilar, clique com o direito do mouse sobre iReport, na janela Projects,
e selecione Build ZIP Distribution, no menu de contexto. No source do iReport,
surgir um arquivo zipado dentro do diretrio dist.
2
D
em
on
st
ra
Captulo 2
15
em
on
st
ra
Quando o iReport executa pela primeira vez ele carrega informaes de configuraes regionais de seu sistema operacional e cria um diretrio chamado de
.ireport no diretrio do usurio em home no Linux, em Document and Settings de
seu Windows XP ou AppData\Roaming no seu usurio em Windows Vista. Neste
diretrio voc encontra diversos arquivos.
16
O MySQL 5 ser o gerenciador de banco de dados usado neste livro para a execuo dos exemplos de relatrios. Apesar de ser o MySQL, os exemplos mostrados
podero ser feitos em Oracle, SQL Server, PostgreSQL e etc.
em
on
st
ra
O banco de dados chamado de relatorios ser usado em todos os captulos ao longo do livro, sendo as tabelas que o compe so apresentadas na Figura 2.2 a seguir.
Captulo 2
17
Observao: As tabelas foram baseadas no banco de dados de exemplo Northwind, encontrado no MS Office Access e no banco de dados MS SQL Server
, ambos da Microsoft (MS).
Ateno: O arquivo relatorios.sql contendo o banco de dados relatorios e suas tabelas devidamente populadas se encontra no site do autor, citado no incio deste
livro, em Cdigos dos exemplos criados no livro.
ra
O banco de dados a ser criado composto por cinco entidades, sendo quatro
delas principais para o cenrio proposto. Para o exemplo, voc vai criar o primeiro
relatrio usando apenas a tabela de produtos.
em
on
st
18
a. Na caixa de dilogo de Datasource selecione o item Database JDBC connection. Clique no boto Next para prosseguir.
b. Como o driver JDBC usado do MySQL, por padro, a segunda etapa das propriedades de conexo surgir com esta opo selecionada no campo JDBC Driver,
contendo com.mysql.jdbc.Driver. No h necessidade, neste caso, de se adicionar
a biblioteca JDBC na sua aplicao.
em
on
st
ra
d. Clique no boto Test para verificar se a conexo foi estabelecida com sucesso.
Caso aparea a mensagem Connection test successful!, significa que voc configurou tudo corretamente e que agora h uma comunicao com o banco de dados.
e. Salve as informaes de conexo com o banco de dados atravs do boto Save
da caixa de dilogo.
Captulo 2
19
em
on
st
ra
ra
20
st
on
em
5. Na quinta etapa, voc vai selecionar o layout que deseja utilizar em seu relatrio. Mantenha na opo Columnar layout e clique no boto Next.
6. Na ltima etapa, clique simplesmente no boto Finish para concluir o assistente.
Captulo 2
21
st
ra
on
em
Agora com a criao de um relatrio bsico, voc est preparado para configurar
o iReport para NetBeans em algumas de suas caractersticas.
V ao menu Tools e clique no item Options.
Na guia General:
Default unit Indica a unidade utilizada para o trabalho com os relatrios.
Podem ser: mm, cm, pixels e polegadas.
Limit the number of records Quando selecionado, voc pode definir o nmero
mximo de relatrios que podem ser exibidos, alterando em Max number of reports.
Report locale Define a localizao atual da sua mquina, exibindo de forma
correta certos padres numricos como nmeros, moedas e datas.
Report timezone Define a timezone da regio, pegando automaticamente a
configurao do sistema operacional.
22
st
ra
Na guia Viewers voc pode selecionar cada um dos programas que deseja utilizar como visualizadores quando compilar e exportar o relatrio em um determinado formato. Depois, para visualizar no formato desejado, dentro do programa
selecionado, voc seleciona no menu Preview.
on
Adicione um programa que deseja utilizar para cada tipo de arquivo, principalmente o PDF que ser muito utilizado ao longo do livro.
em
Por padro, o iReport utiliza o seu diretrio corrente do arquivo .jrxml, aberto
do seu relatrio, para guardar os arquivos compilados.
Se determinar outro programa como preview, ele exibir tanto internamente
como abrir o programa configurado para exibir o formato desejado.
Captulo 2
23
Ao avanar, voc define o nome do relatrio, s que desta vez deve manter a
extenso, como por exemplo: PrimeiroRelatorio.jrxml.
Na etapa de conexes siga os mesmos procedimentos feitos no passo nmero
2 da verso Standalone. Como extra, voc pode selecionar uma conexo ativa j
existente do NetBeans IDE, com a opo NetBeans Database JDBC connection.
ra
Diferente da verso Standalone, a verso plug-in armazena o arquivo ireport.properties no diretrio de configuraes do NetBeans IDE. Neste caso, ele costuma se encontrar no diretrio de usurio da sua mquina com o nome de .netbeans. O caminho
para o arquivo /.netbeans/dev/config/Preferences/com/jaspersoft/ireport.properties.
em
on
st
Como o tipo aceito pelo iReport UTF-8, o programa precisa criar arquivos
neste padro. Se isso no ocorrer, quando abrir um relatrio com a codificao
diferente de UTF-8, ver o erro mostrado na Figura 2.8.
24
Para corrigir este problema, basta alterar o atalho que inicializa o programa,
transmitindo o seguinte parmetro: -J-Dfile.encoding=UTF-8.
Voc pode resolver este problema simplesmente criando um arquivo .bat, no
diretrio bin da instalao do iReport, da seguinte forma:
ireport.exe -J-Dfile.encoding=UTF-8
Porm, pode ser que voc acredite que esta soluo seja muito ruim e quer algo
mais profissional. Neste caso, basta alterar o arquivo de configuraes chamado que o mesmo do NetBeans (netbeans.conf), porm, com outro nome.
ra
on
st
IREPORT PARA
NETBEANS EM INGLS
em
em
on
st
ra
DESENVOLVIMENTO
Captulo 3
27
A ESTRUTURA DO RELATRIO
ra
Um relatrio no JasperReports possui diversas sees, separadas por linhas horizontais ao qual so chamadas de Bands (bandas).
em
on
st
O comportamento de cada Band depende da funcionalidade para a qual est preparada. Quando o relatrio se junta aos dados para rodar a impresso, estas sees
so impressas na tela de diferentes maneiras, com diferentes tempos. Por exemplo,
o cabealho da pgina (pageHeader) repetido em todas as pginas, uma vez em
cada pgina, enquanto que os detalhes onde sero exibidos os dados (detail),
gerado em uma seqncia elaborada de acordo com os dados existentes (query ou
datasource), repetindo-se uma vez para cada registro, incorporando-se ao desenho
do relatrio.
As bands de um relatrio JasperReports dividido em dez sees pr-definidas
para que novos grupos possam ser adicionados.
Captulo 3
39
st
ra
Ignore pagination - ignora a paginao ao preencher o relatrio, impossibilitando a visualizao das demais pginas caso haja mais que uma. Quando
ativa, esta opo implica at mesmo na visualizao correta dos dados caso
haja mais de uma coluna.
em
on
Print order - a ordem de impresso determina como os dados impressos na pgina sero organizados em mais de uma coluna. O padro para a ordem de impresso Vertical. Com a ordem Vertical, primeiro os dados so impressos um embaixo do outro, passando para uma nova coluna somente quando a coluna est
totalmente preenchida no final da pgina. Na ordem Horizontal os dados so
preenchidos em linha. Os dados passam por todas as colunas, adicionando uma
nova linha somente quando a ltima coluna da pgina foi preenchida naquela
determinada linha. A Figura 3.5 a seguir ilustra as duas ordens de impresso.
em
on
st
ra
ASSISTENTES
Captulo 4
47
Para uma maior compreenso dos diversos elementos que compem um relatrio no JasperReports, atravs do iReport para NetBeans, importante a um desenvolvedor aprender a desenh-lo manualmente, isto , sem o uso de assistentes.
No captulo anterior foram apresentadas as bandas e as configuraes iniciais
de um relatrio em branco atravs de suas propriedades. Neste captulo voc ir
aprender a criar um relatrio manualmente, adicionando diversos elementos, configurando-os e trabalhando com banco de dados.
ra
Para iniciar, crie um novo relatrio. Na propriedade do relatrio (selecione report name na janela Report Inspector) d um nome para o seu relatrio. Os tamanhos predefinidos sero mantidos.
on
st
em
A JANELA PALETTE
O iReport para NetBeans na lateral direita a janela Palette. Esta janela contm
doze elementos que so muito usados na construo de um relatrio. Estes ditos
elementos so objetos grficos que podem compor um relatrio, como uma linha,
rtulo ou uma elipse.
A Figura 4.1 apresenta as principais ferramentas que podem ser usadas tanto
para a criao de elementos, como tambm para sua manipulao, em um relatrio
JasperReports.
6. Frame Cria quadros que podem conter outros elementos em seu interior,
com bordas ao seu redor.
st
ra
on
8. Subreport Cria um relatrio dentro de outro, o que chamamos de mestre-detalhe. Mais adiante haver um captulo abordando exclusivamente este assunto.
em
9. Crosstab Desenvolve o que chamamos em programas de planilhas eletrnicas de tabela dinmica (referncia cruzada), muito utilizado em relatrios
gerenciais (Business Intelligence). Mais adiante tambm haver um captulo
abordando exclusivamente este assunto.
48
10. Image Utilizado para exibir imagens em seu relatrio. Podem ser imagens
dinmicas (preenchidas por um banco de dados, por exemplo) ou estticas.
11. Round Rectangle Gera o elemento rectangle, porm, com a propriedade
Radius j pr-definida com um valor.
12. Text Field Utilizado para criar os campos dinmicos dos relatrios. neste
elemento que voc se conecta a um determinado campo do banco de dados
para exibir suas informaes, por exemplo.
Captulo 4
57
3. Increase Font Size Altera o tamanho da fonte do texto encontrado no elemento aumentando sempre em dois pontos (2pt).
ra
4. Decrease Font Size Altera o tamanho da fonte do texto encontrado no elemento diminuindo sempre em dois pontos (2pt).
5. Bold Aplica negrito ao texto encontrado no elemento.
st
on
em
10. Align Justify Alinha o texto s margens esquerda e direita da rea do elemento.
11. Align Center Alinha o texto ao centro em relao rea do elemento.
12. Align Right Alinha o texto direita em relao rea do elemento.
13. Align Top Alinha o texto na parte superior vertical em relao rea do
elemento.
14. Align Vertical Axis Alinha o texto no centro vertical em relao rea do
elemento.
15. Align Bottom Alinha o texto parte inferior vertical em relao rea do
elemento.
58
Antes de iniciar a criao do desenho, voc tem na Figura 4.10 como ser o
resultado final.
ra
Para criar a aparncia vista na Figura 4.10, os seguintes passos sero feitos:
on
st
1. Na janela Palette, clique na ferramenta Static Text e arraste um tamanho qualquer na band pageHeader.
em
O sub-elemento <textElement />, de <staticText />, determina as configuraes da fonte. Todas estas configuraes de fonte so feitas em <font />. Este
elemento, por sua vez, possui alguns atributos que determinam o comportamento
Captulo 4
65
st
ra
on
em
A exibio de cores de linhas alternadas, conhecido como efeito zebra, a melhor maneira de exibir um relatrio tabular como o criado. Ajuda na rpida identificao de linhas, alm do design agradvel.
Na janela Report Inspector, em Styles, clique com o direito do mouse e selecione no menu de contexto o item Add Style.
Com o estilo criado e selecionado, v at a janela Properties e digite Zebra em
Name.
Retornando a janela Report Inspector, clique com o direito do mouse sobre o estilo Zebra e selecione no menu de contexto o item Add Conditional Style. Selecione
o item que surgir (<No condition set>) e digite a expresso mostrada a seguir, em
Condition Expression:
new Boolean( $V{REPORT_COUNT}.intValue() % 2 == 0 )
68
st
ra
A ltima modificao que ser feita em seu relatrio manual da adio de imagens. Seu relatrio ficar similar a Figura 4.17 mostrada a seguir.
on
em
Para essa alterao, salve (Save As) com outro nome, por exemplo: RelatorioManualComImagem. Perceba que foi retirado o elemento Frame deste exemplo.
Porm, no seu, no ser necessrio, caso deseje.
Na caixa de dilogo Image Expression, coloque entre aspas o caminho para o diretrio onde se encontram as imagens que deseja exibir. Depois, concatene (em Java
o sinal de +) com o campo imagem do banco de dados, que j est com o nome
de cada produto armazenado. Por exemplo, no caso do livro, as imagens estaro em
um diretrio chamado de imagens, onde voc dever ter a seguinte expresso:
imagens/+$F{Imagem}
em
on
st
ra
DE PARMETROS
Tudo que uma pessoa pode imaginar, outras podem tornar real.
Jlio Verne
Captulo 5
81
Os relatrios mais utilizados em aplicaes, com toda certeza, so os dinmicos. Aqueles relatrios que transmitimos uma determinada informao e este nos
trazem determinados dados.
Neste captulo voc aprender a criar um relatrio mais complexo, utilizando
mais de uma entidade (tabela) no desenvolvimento, agrupando informaes e filtrando-as atravs de parmetros.
em
on
st
ra
GERANDO O RELATRIO
Para comear, pegue o relatrio zebrado feito no captulo anterior. Salve como
RelatorioAgrupado. Na janela Report Inspector, clique no primeiro item da rvore
de componentes e digite em Report name, na Properties, Relatorio_Agrupado.
Apague os itens existentes e mantenha apenas os elementos das bands pageHeader, columnHeader e pageFooter. Em detail mantenha apenas o Frame.
Em pageHeader altere o rtulo para Pedidos Efetuados. Quanto aos quatro rtulos encontrados na band columnHeader altere como mostra a Tabela 5.1 a seguir.
84
st
ra
on
em
Para completar a query, voc dever adicionar uma ordenao pelo cdigo do
pedido (PedidoID). Clique com o direito no campo PedidoID, no desenho da query
do primeiro quadro, e selecione no menu de contexto o item add to order-by. Confirme a caixa de dilogo logo aps.
94
st
ra
on
em
Caso queira completar com uma descrio para o parmetro criado, basta adicion-lo no campo Parameter Description como mostrado na Figura 5.11. Esta
descrio aparecer na caixa de dilogo que ser exibida quando chamar o relatrio
pelo iReport.
em
on
st
ra
APLICAO DESKTOP
Captulo 6
99
Assim como criar um relatrio, muito fcil cham-lo por uma aplicao. Este
captulo utilizar uma aplicao desktop simples, com interface grfica Swing, criada no NetBeans IDE, apenas com o intuito de ensin-lo a chamar sua aplicao.
em
on
st
ra
Para melhor compreender o exemplo deste captulo, voc tem a Figura 6.1 que
exibe a aparncia final do simples aplicativo Swing que ser criado. Observe que haver uma caixa de combinao e um boto. A caixa de combinao receber valores
da tabela de pedidos para que voc escolha qual pedido deseja visualizar.
7
D
em
on
st
ra
SUB-RELATRIOS
Captulo 7
115
em
on
st
ra
118
ra
Embora no seja nada obrigatrio, uma vez que o design do relatrio fica por
conta de cada desenvolvedor, vamos dar a voc um similar ao feito no Captulo 5,
mas com algumas mudanas.
st
on
A Figura 7.4 exibe como dever ficar o formato do relatrio principal. Estes elementos so listados a seguir, conforme mostrado na imagem:
em
Captulo 7
123
on
st
ra
Ajuste seu relatrio de modo a ficar com alinhamento dos valores exibidos. Como
o relatrio no sofreu mudanas ainda na query, voc pode execut-lo para visualizar
sua aparncia. A Figura 7.8 lhe dar uma viso melhor do que pode ser feito.
em
Para finalizar este sub-relatrio, por enquanto, voc vai alterar a query desenvolvida inicialmente para a gerao do assistente. Esta mudana possibilitar assim a
transmisso do nmero do pedido, referente ao relatrio mestre, ao sub-relatrio.
Clique com o direito do mouse sobre o primeiro item de Report Inspector e
selecione o item Edit Query. Adicione a clusula WHERE na sua query, como mostrado a seguir:
...
WHERE
PedidoID = $P{PAR_PEDIDOID}
131
Captulo 7
Figura 7.14 Resultado final com a adio do retorno da varivel para o relatrio mestre
ra
on
st
em
As bibliotecas encontradas no diretrio lib foram omitidas, uma vez que voc
j as conhece.
137
st
ra
Captulo 7
on
em
ra
Captulo 7
em
on
st
139
8
D
em
on
st
ra
Captulo 8
143
O HIBERNATE
em
on
st
ra
Hibernate um projeto audacioso que procura ter uma completa soluo para
o problema de gerenciamento de dados persistentes em Java. O Hibernate um
framework que se relaciona com o banco de dados, onde esse relacionamento conhecido como mapeamento objeto/relacional para Java, deixando o desenvolvedor
livre para se concentrar em problemas da lgica do negcio. Sua simplicidade em
configurao, d ao desenvolvedor algumas regras para que sejam seguidas como
padres de desenvolvimento ao escrever sua lgica de negcios e suas classes persistentes. De resto, o Hibernate se integra suavemente ao seu sistema se comunicando com o banco de dados como se fosse diretamente feito por sua aplicao.
Uma mudana de banco de dados, nesse caso, no se torna traumtica, alterando
apenas um ou outro detalhe nas configuraes do Hibernate.
Ateno: Este captulo, nem mesmo o livro, tem a inteno de ensinar o uso do
Hibernate. Alm de ser um assunto complexo, exigindo at mesmo um livro somente sobre ele, o foco do livro se baseia na criao de relatrios usando o iReport para NetBeans.
144
em
on
st
ra
2. Na caixa de dilogo New Database Connection altere para MySQL (Connector /J driver) em Name. Preencha os demais itens conforme as configuraes
feitas no seu banco de dados relatorios. Veja na Figura 8.1 como dever ficar
preenchida a caixa de dilogo. Confirme no boto OK;
Figura 8.1 Configuraes da conexo JDBC para o banco de dados relatorios no MySQL
Captulo 8
145
on
st
ra
3. Retornando a caixa de dilogo New Web Application, voc ter as opes Database Connection e Database Dialect configuradas com o dialeto do MySQL.
Confirme no boto Finish.
em
Figura 8.2 Configurao completa da conexo e dialeto usado pelo projeto com o Hibernate
Automaticamente o NetBeans IDE adicionar as bibliotecas do Hibernate necessrias para o desenvolvimento do relatrio e aplicao que o utilizar.
CRIANDO AS ENTIDADES
Para o exemplo proposto, voc ter um pacote em sua aplicao chamado de
br.com.integrator.model, que possuir as entidades Categoria e Produto.
Fora dos pacotes, voc possui os arquivos XML que mapeiam as entidades junto
ao arquivo que configura o Hibernate.
156
DESENVOLVENDO O RELATRIO
ra
on
st
em
from Produto
Caso voc no tenha experincia com o Hibernate, saiba que ele usa uma linguagem
prpria para selecionar dados, similar s clusulas SQL, s que simplificado. Quando
adicionada a query from Produto, o mesmo que dizer ao Hibernate em SQL:
SELECT * FROM produtos
Captulo 8
165
Duas taglibs so adicionadas nesta pgina, uma vez que se utiliza a JSTL. A URI
do primeiro cabealho chama as tags CORE e o segundo cabealho so as tags de
formatao.
A tag <c:forEach /> varre o List enviado pelo Servlet atravs de requestScope,
transmitido pelo Servlet criado, ao qual repassa pgina JSP.
<c:forEach var=lista items=${ requestScope. categoriasList }>
ra
Por fim, crie na pgina ndex.jsp, um link que chamar o Servlet ServletCategoria, contendo por entre as tags <body/>:
st
em
on
Adicione ao projeto a biblioteca JSTL, clicando com o direito do mouse em Libraries, na janela Projects, do NetBeans, selecionando o item Add Library no menu
de contexto.
Figura 8.11 Pgina que chamar o Servlet que far a gerao do relatrio
9
D
em
on
st
ra
Captulo 9
171
em
on
st
ra
At a verso J2EE 1.4, a plataforma Java no possua uma forma simples de mapear objetos em um banco de dados. Uma forma mais complexa podia ser utilizada,
exigindo um container EJB, utilizando EJB QL (que foi introduzida como parte da especificao EJB2.0). Com a introduo de JPA (Java Persistence API), definida na JSR220 (Enterprise JavaBeans, Version 3.0), houve uma padronizao no mapeamento
de objeto/relacional na plataforma Java. No EJB3, as sentenas so expressas atravs
da JPQL (Java Persistence Query Language). A JPQL uma extenso da EJB QL, como
j foi dito na introduo deste captulo.
Captulo 9
175
Retornando a caixa de dilogo New Entity Classes from Database, altere os nomes de Class Name para o singular, mantendo o padro de nomes de entidades.
on
st
ra
em
A entidade Categoria
A entidade Categoria, criada pelo NetBeans, j possui todas as anotaes necessrias para o reconhecimento no iReport. Para sua melhor compreenso, temos a
Listagem 9.1 mostrando como ela pode estar:
Captulo 9
183
on
st
ra
em
Esta conexo armazenada no arquivo ireport.properties do iReport para NetBeans (diretrio .ireport) e utiliza a classe it.businesslogic.ireport.connection.
EJBQLConnection.
DESENVOLVENDO O RELATRIO
Captulo 9
185
Nota: O livro no se aprofundar neste assunto, uma vez que est focado no desenvolvimento de relatrios JasperReports com o uso do iReport para NetBeans.
em
on
st
ra
De todos os objetos que surgiro, selecione class e produtos (na parte inferior,
em Field name) e tecle <DELETE>. Confirme logo aps.
Captulo 9
187
em
on
st
ra
A Figura 9.9 a seguir mostra o resultado final da query escrita no Report query.
190
em
on
st
ra
Retorna trs campos/colunas, que so nomeados pelo iReport para NetBeans como
COLUMN_x, onde x o nmero da coluna/objeto na ordem existente na instruo.
10
em
on
st
ra
FONTES DE DADOS
Captulo 10
199
on
st
ra
em
O iReport suporta o uso de XML como datasource desde a verso 0.4.0, graas
ao suporte do JasperReports.
Para a criao de um relatrio usando XML, voc tem o seguinte formato encontrado em um arquivo chamado produtos.xml, como mostrado na Listagem 10.1.
202
Expanda o n de produtos e, em produto, clique com o direito do mouse. Selecione Set record node (generate xPath), no menu de contexto (Figura 10.2). Observe que foi adicionada a expresso XPath:
em
on
st
ra
/produtos/produto
O que XPath?
O XPath (XML Path Language) uma linguagem de consulta usada para pesquisar
e recuperar informaes contidas nos ns de um documento XML. As consultas
do XPath so formadas como expresses e so usadas para se referir s vrias
partes de um documento XML. Esta linguagem exibe um documento XML como
uma rvore com tipos de ns diferentes. Suas expresses identificam esses ns
no documento XML com base no seu tipo, nome e valores, bem como a relao
de um n com outros ns do documento.
Para definir os campos, clique com o direito do mouse sobre cada elemento e
selecione, no menu de contexto, o item Add node as field (Figura 10.3).
206
st
ra
on
em
No Report query, voc possui a guia CSV Datasource. Basta clicar no boto Get
fields from datasource. Os campos aparecem na parte inferior. Como ocorre com o
arquivo XML, voc pode definir a mudana de um tipo pois o iReport registra todos
como java.lang.String.
11
D
em
on
st
ra
Captulo 11
221
ra
st
on
Crie um relatrio e, selecionando na janela Report Inspector, o nome do relatrio, v at a propriedade (janela Properties) Language e selecione o item Groovy.
em
Graas a esta pequena mudana, voc j valer do uso de Groovy em seu relatrio.
12
em
on
st
ra
SEUS RELATRIOS
Captulo 12
233
em
on
st
ra
O primeiro exemplo na gerao de relatrios com grficos um grfico no formato de pizza 3D (Pie 3D). A Figura 12.1 a seguir ilustra o resultado final.
Captulo 12
243
on
st
ra
Como o grfico de barras, voc ter como categorias os nomes dos clientes
e os valores o total encontrado das compras efetuadas por cada um no respectivo
perodo. Observe que Series expression o mesmo que Value axis label expression.
Confirme tudo e d um Preview.
em
244
GRFICOS DE LINHAS
em
on
st
ra
Por ltimo, o relatrio que ser criado utilizar um grfico de linhas para representar a demanda de vendas 4 de um determinado produto. A Figura 12.7 demonstra o resultado do relatrio final.
Baseado no livro Excel Avanado 2003/2007 Forecast Anlise de Previso de Demanda (veja bibliografia)
13
D
em
on
st
ra
INTERNACIONALIZANDO RELATRIOS
Captulo 13
251
Aplicaes internacionalizadas so muito comuns no mundo do desenvolvimento. No seria diferente no caso dos relatrios. O JasperReports introduziu esta caracterstica na verso 0.6.2 e desde ento seu suporte foi acrescentado ao iReport,
facilitando mais ainda seu desenvolvimento.
Neste captulo ser criada uma aplicao Java desktop simples, pelo NetBeans,
para ser usada com um relatrio internacionalizado gerado pelo iReport.
Para ilustrar o seu desenvolvimento crie um projeto Java no NetBeans IDE, onde
h tambm instalado o plugin do iReport.
ra
Em seu projeto, crie um pacote, se no o tiver feito ao criar a classe Main, clicando com o direito do mouse sobre Source Packages e selecionando no menu de
contexto o item New>Java Package. Se preferir seguir o exemplo do livro, digite
br.com.integrator no campo Package Name, da caixa de dilogo New Java Package.
em
on
st
14
D
em
on
st
ra
CROSSTABS
Captulo 14
259
st
ra
O design no necessitar da maioria das bands, uma vez que apenas a band
Summary ser usada neste primeiro exemplo.
em
Criando a query
on
Em seu relatrio, crie uma query contendo apenas o nome do cliente (clientes.
nome), o cdigo do pedido (pedidos.PedidoID) e a data do pedido (pedidos.dataPedido).
Sua query ser similar a mostrada a seguir:
SELECT
clientes.nome,
pedidos.dataPedido,
pedidos.PedidoID
FROM
clientes INNER JOIN pedidos
ON clientes.ClienteID = pedidos.ClienteID
262
Como a tabela criada tem uma rea exclusiva, tambm no poderia deixar de
possuir caractersticas prprias para sua manipulao.
1. Na janela Report Inspector possvel visualizar os parmetros, grupos, measures e demais itens que compem a crosstab gerada.
2. No Designer da crosstab, podemos alterar a largura, altura, formatao de
cada componente selecionando-o e modificando-o atravs da janela Properties.
3. Na janela Properties h um pequeno conjunto de propriedades prprias para
o elemento crosstab.
em
on
st
ra
Na parte superior haver os anos em que cada cliente efetuou sua compra e na lateral seus respectivos nomes. Os dados agrupados, contam o nmero de pedidos efetuados em cada ano. Ao final, voc possui o total de pedidos efetuados por cliente.
Figura 14.4 Relatrio Crosstab (agrupado por clientes e pedidos por ano)
Captulo 14
267
Na ltima linha, desta coluna, adicione na clula que resta a measure da janela
Report Inspector chamada de PedidoIDMeasure. Esta varivel ir contar o perodo
de todos os meses do ano e o adicionar no relatrio. Como os demais, formate.
st
ra
em
on
Captulo 14
269
em
on
st
ra
Vamos partir da hiptese que voc deseja visualizar um relatrio contendo as compras efetuadas por cada cliente, agrupados por produto, como mostra a Figura 14.11.
Crie um novo relatrio e mantenha apenas as bands: Title, Page Header, Detail
e Page Footer.
Os elementos que sero adicionados so: Static Texts e Text Fields. Apenas os
detalhes necessrios para criar o assunto deste tpico sero apresentados.
Aos demais, a Figura 14.12 mostra o resultado final do design do seu relatrio.
15
em
on
st
ra
DE RELATRIOS
Captulo 15
277
em
on
st
ra
16
D
em
on
st
ra
SCRIPTLET
Captulo 16
289
A CLASSE JRABSTRACTSCRIPTLET
ra
Para implementar um scriptlet em seus relatrios, primeiro voc deve criar uma
classe estendendo a classe JRAbstractScriptlet, de net.sf.jasperreports.engine. Esta
classe expe todos os mtodos abstratos que manipulam os eventos que ocorrem
durante a gerao de um relatrio e fornece estrutura de dados para acessar todas
as variveis, campos e parmetros presentes no relatrio.
on
st
O JasperReports fornece uma implementao bem simples atravs da classe JRDefaultScriptlet (veja a Listagem 16.1), estendendo a classe abstrata JRAbstractScriptlet.
em
package net.sf.jasperreports.engine;
/**
* @author Teodor Danciu (teodord@users.sourceforge.net)
* @version $Id: JRDefaultScriptlet.java,v 1.3 2004/06/01 20:28:22 teodord Exp $
*/
public class JRDefaultScriptlet extends JRAbstractScriptlet
{
public JRDefaultScriptlet() { }
public void beforeReportInit() throws JRScriptletException
{
}
public void afterReportInit() throws JRScriptletException
{
}
public void beforePageInit() throws JRScriptletException
{
}
public void afterPageInit() throws JRScriptletException
{
}
public void beforeColumnInit() throws JRScriptletException
{
296
DESENVOLVENDO O RELATRIO
Conforme o j visto no Captulo 10, podemos trabalhar diretamente com arquivos CSV, simplesmente informando o arquivo e sua estrutura para a leitura.
st
ra
on
em
Portanto, dentro do seu projeto no NetBeans IDE, no mesmo pacote criado, gere
um novo relatrio sem o uso de assistentes.
Para preparar o relatrio, inicialmente, voc ter que ler o Scriptlet e tambm
o arquivo CSV.
O arquivo CSV, chamado de pedidos.csv, se encontra nos arquivos que voc j
fez download, no diretrio arquivos/csv.
Crie uma conexo CSV, conforme ilustrado no Captulo 10, onde, na guia Separators, voc dever marcar Semicolon em Field separator (char) e, New line, em
Row separator.
Captulo 16
301
on
st
ra
Como dica, caso queira evitar valores repetidos no relatrio, como ocorre na coluna Produto, voc pode selecionar o Text Field, no Designer, e desmarcar a opo
Print Repeated Values.
em
17
D
em
on
st
ra
Captulo 17
305
ra
Na criao do relatrio base, que servir como template, voc deve estar atento
ao detalhe do nome do arquivo/relatrio. Este nome deve terminar com C de Columnar ou com T de Tabular. assim que o iReport diferenciar o template colunar ou
tabular na opo de layout do seu assistente de criao de relatrio.
on
st
em
st
ra
Captulo 17
em
on
309
APNDICE
em
on
st
ra