Artigo Java Magazine 37 - Relatórios na Web Passo a Passo

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (2)  (0)

Artigo publicado pela Java Magazine 37.

Esse artigo faz parte da revista Java Magazine edição 37. Clique aqui para ler todos os artigos desta edição

 

 

 

Relatórios na Web Passo a Passo

Criando um relatório mestre-detalhe usando iReport e JasperReports

Aproveite as facilidades do iReport para criar relatórios baseados no JasperReports com todo o poder que o Java oferece e de uma maneira fácil e rápida

Neste artigo, vamos destacar pontos importantes e dicas na criação de relatórios, e desenvolver passo a passo um relatório mestre-detalhe usando o JasperReports e o iReport. Vamos criar também uma aplicação web que gera o relatório.

Funcionamento do JasperReports

O JasperReports é uma biblioteca para a geração de relatórios open source e escrita em Java. Com ela é possível enviar o relatório gerado diretamente para a tela ou impressora, armazenar esse conteúdo em disco em forma serializada, e transformá-lo em um documento nos formatos PDF, HTML, XLS, RTF, CSV, TXT ou XML. Relatórios criados com o JasperReports podem ser usados tanto em aplicações web quanto desktop. O JasperReports e o iReport já foram apresentados na Java Magazine, nas Edições 13 e 21.

O processo de desenvolvimento de um relatório (veja a Figura 1) começa com a codificação da definição do relatório em XML, usando tags e atributos (que estão definidos no arquivo jasperreports.dtd). Depois é criado um arquivo com a extensão .jrxml (o “template de relatório”), onde é descrita toda a estrutura do relatório: a posição de textos, imagens e formas geométricas; como recuperar os dados necessários, como fazer cálculos de totalização, e quais parâmetros devem ser passados, entre outras definições.

 

 

Figura 1. Processo de desenvolvimento de um relatório com JasperReports

 

Em seguida é preciso compilar o arquivo .jrxml. O resultado da compilação é um arquivo com extensão .jasper, que nada mais é que uma classe Java compilada, sendo representado por um objeto da classe JasperReport.

Após a compilação, precisamos de uma fonte de dados para produzir os dados a serem exibidos no relatório. A fonte de dados pode ser um datasource, ou uma conexão ao banco de dados e uma query SQL. Caso seja um datasource, a fonte de dados deve ser disponibilizada para o relatório na forma de uma classe que implemente a interface JRDataSource. Já existem algumas implementações prontas como as de coleções e arrays de JavaBeans (JRBeanArrayDataSource e JRBeanCollectionDataSource), ou a utilizando ResultSet (JRResultSetDataSource).

Tendo o objeto JasperReport e a fonte de dados, além de um objeto Map com alguns parâmetros, podemos fazer o preenchimento do relatório. O resultado é um objeto da classe JasperPrint, que pode ser serializado como um arquivo com a extensão .jrprint. O objeto JasperPrint é o relatório final em um formato proprietário do JasperReports. Ele pode ser visualizado diretamente com um aplicativo chamado JasperViewer que vem com o JasperReports, ou ser exportado para os formatos mencionados anteriormente.

O quadro “Glossário do JasperReports” apresenta conceitos fundamentais do JasperReports usados neste artigo.

Sobre o iReport

O iReport é uma ferramenta visual que usa o JasperReports internamente e facilita muito o trabalho do desenvolvedor na criação de relatórios, desde os mais simples até os mais complexos. No iReport é possível editar visualmente um arquivo de template de relatório (.jrxml), e gerar o arquivo .jasper, entre outras operações.

 Quando utilizamos uma conexão a um banco de dados ao invés de um datasource, o iReport permite que o relatório seja executado e exportado para diversos formatos. Já quando utilizamos um datasource, é necessário executar o relatório dentro de uma classe Java. Mais detalhes sobre o funcionamento do iReport e sua operação são apresentados nas seções a seguir.

Instalação

Tanto o JasperReports como o iReport estão disponíveis em arquivos ZIP contendo as classes, fontes, JARs etc. (veja no final os links para download), e podem ser instalados em qualquer plataforma com  suporte a Java. Basta descompactar o arquivo na pasta desejada; não é preciso nenhuma configuração especial. Há também instaladores nativos do iReport, para Windows e Mac OS X.

Para a criação de relatórios, pode-se baixar somente o iReport, pois este já vem com o JAR da biblioteca JasperReports e todas as outras que são necessárias para a compilação mais simples, além das bibliotecas específicas para geração de determinados formatos de arquivo. Já se você também baixar o JasperReports em separado, terá adicionalmente uma documentação básica da API, os arquivos-fonte da biblioteca e uma grande quantidade de projetos de demonstração.

Para iniciar o iReport, vá até o diretório raiz da ferramenta e execute o arquivo iReport.sh, caso esteja utilizando Linux; ou em Windows, execute iReport.bat ou iReport.exe.

No caso de usar um dos arquivos de script (.sh ou .bat), pode ser necessário editá-lo e acrescentar a linha “set classpath=.” no começo do arquivo, para evitar conflitos de classes que estão no classpath e erros na compilação do relatório.

Sobre o projeto de exemplo

Como exemplo, vamos criar um projeto baseado em quatro entidades principais: pedidos, itens de pedido, clientes e produtos. Nosso objetivo é gerar um relatório de pedidos com seus itens, sendo que um pedido tem um cliente e cada item tem um produto.

O projeto completo, com todas as classes necessárias, os templates de relatório .jrxml e o script para criação do banco de dados, está disponível no site da Java Magazine. Nas listagens apresentadas neste artigo, alguns trechos dos arquivos são omitidos para poupar espaço.

Para o exemplo, precisamos de um banco de dados que fornecerá os dados para o relatório; usamos o MySQL. Chamamos a base de dados de “ecommerce” e registramos um usuário e uma senha. O modelo de dados é mostrado na Figura 2 (o script completo para a criação da base está incluído no arquivo de download).

 

Figura 2. Modelo de dados do projeto de exemplo

 

A aplicação de exemplo será baseada na web. Vamos criar um servlet que obtém a conexão com o banco de dados, carrega os arquivos de relatório compilados .jasper, passa parâmetros e a fonte de dados exigidos pelo relatório, executa o relatório exportando para o formato PDF e finalmente manda o resultado para a tela do navegador web[1]. Utilizamos também um JSP muito simples, index.jsp, que contém somente um link que, ao ser clicado, executa o servlet.

Construindo o relatório principal de pedidos

Após iniciar o iReport, abra um novo relatório selecionando Arquivo|Novo documento, ou clicando no botão  da barra de ferramentas. Na janela que aparece, defina o nome do relatório como “RelatorioPedidos”, altere a codificação XML para ISO-8859-1 (na aba i18n) e clique em OK. A tela do iReport deverá ficar como na Figura 3. A Figura 4 apresenta as barras de ferramentas do iReport.

Agora vamos definir a conexão com o banco de dados. Execute Data|Conexões/Fonte de dados e clique em New, e faça Name=ecommerce, Server Address=localhost e Database=ecommerce. Depois clique em Wizard para atualizar os valores dos campos. Digite o seu username e password e clique em Test para verificar o funcionamento da conexão (veja a "

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?