Parte 1Parte 2Parte 3Parte 4Parte 5

Olá a todos. Quem acompanha o blog sabe que no último post – há duas semanas atrás – eu pedi que vocês sugerissem o tema para o próximo tutorial. Dentre os temas que eu listei, o de criação de relatórios em Java foi o que ganhou. Este tutorial, como o de Flex e Java, vai ser dividido em algumas partes. Eu poderia escrever em apenas um post tudo sobre o tema, mas preferi dividir o tutorial em várias partes pequenas – menores que os tutoriais sobre Flex – para não ficar muito cansativo.

Nesta primeira parte (provavelmente a maior de todas), iremos aprender sobre o framework para criação relatórios que iremos utilizar, o JasperReports, entendendo seu funcionamento, aprendendo a obter e instalar o iReport, que é o editor de relatórios e preparar nosso ambiente de desenvolvimento. Irei novamente utilizar o NetBeans como IDE de desenvolvimento, mas você que usa o Eclipse ou qualquer outra IDE Java não vai ter dificuldades para seguir o tutorial.

Na segunda parte, iremos criar uma base de dados de teste para popularmos nossos relatórios e vamos aprender como criar, compilar e utilizar os relatórios criados em aplicações desktop. Na terceira parte, iremos aprender a criar subrelatórios. Na quarta, iremos utilizar fontes de dados – data sources – diferentes, permitindo então que possamos listar dados nos relatórios que não vem somente de consultas SQL. Por fim, na quinta e última parte, iremos aprender como utilizar nossos relatórios em uma página Web. Após todas essas partes, vocês terão a bagagem necessária para caminharem sozinhos 😉

Então, vamos começar!

Existem atualmente na indústria diferentes frameworks e engines para criação e processamento de relatórios. Dentre as soluções pagas, talvez o Crystal Reports seja a mais conhecida. O Crystal Reports é uma solução robusta e que pode ser utilizada com diversas linguagens de programação. Outra solução paga que é muito utilizada por quem trabalha com Delphi é o Quick Reports. Em Java, existem atualmente duas soluções que são mais utilizadas. O JasperReports, que é o framework gratuito mais popular e que iremos utilizar nos nossos tutoriais e o BIRT (Business Intelligence and Reporting Tools) que também é gratuito e é mais utilizado por quem trabalha com o Eclipse.

Como iremos utilizar o JasperReports, vale a pena então entendermos um pouco do seu funcionamento. Quando trabalhamos com ele, nós criamos os arquivos de código fonte dos nossos relatórios utilizando XML, sendo que esse arquivo fonte – de extensão .jrxml – passa por um processo de compilação para gerar gerar arquivos .jasper, que por sua vez são interpretados pela engine do JasperReports. Nós não iremos escrever esses arquivos .jrxml na mão, pois iremos construir nossos relatórios utilizando um editor WYSIWYG (What You See Is What You Get), o iReport. Atualmente, o iReport pode ser obtido em duas versões. Uma delas é standalone (criada usando a NetBeans Platform), não precisando de nenhum outro programa para ser utilizada, enquanto a outra é um plugin para o NetBeans. Iremos utilizar a versão em plugin.

Bem, já falei demais. Chega de blablablá, vamos começar a por a mão na massa, afinal essa é a melhor forma de aprender :D. Primeiro vamos baixar o iReport. Acesse então o endereço http://jasperforge.org/projects/ireport e procure o link de download. Na versão atual do site, para fazer o download, basta clicar no botão “Download iReport Now“. Ao clicar no botão, serão apresentadas as versões disponíveis. Nós vamos escolher a última: Plugin for NetBeans IDE 3.x. A versão atual do iReport é a 3.7.5. Note que a versão do iReport sempre vai ser a mesma do JasperReports.

Quando terminar de baixar, descompacte o arquivo “iReport-3.7.5-plugin.zip” (a versão pode variar dependendo de quando você baixar o pacote). Serão extraídos 4 arquivos com a extensão .nbm (NetBeans Module). Esses arquivos são os pacotes dos plugins que serão instalados no NetBeans. Com o arquivo descompactado, abra então o seu NetBeans. Estou usando a útlima versão, 6.9.1. Com o NetBeans aberto, vá no menu Tools (Ferramentas) e escolha Plugins. Ao abrir o gerenciador de plugins, vá na aba Downloaded (Baixados?). É nessa aba que você instala os arquivos .nbm. Clique em Add Plugins (Adicionar Plugins). Veja a Figura abaixo:

Figura 1

Gerenciador de Plugins

Ao clicar no botão Add Plugins, um diálogo será aberto. Neste diálogo, procure então pelos arquivos .nbm que foram descompactados a partir do pacote que fizemos download. Assim que os encontrar, selecione todos e clique Open (Abrir). Veja a Figura abaixo.

Figura 2

Escolhendo os pacotes

Ao fazer isso, a janela do gerenciador de plugins será exibida novamente, só que agora com os quatro pacotes sendo exibidos. Deixe os quatro pacotes marcados e clique em Install (Instalar). Veja a Figura abaixo.

Figura 3

Gerenciador de Plugins (instalação)

No primeiro passo do instalador, clique em Next (Próximo). Marque o checkbox para concordar com os termos da instalação e clique em Install. Aguarde o final da instalação. Quando a instalação terminar, provavelmente o NetBeans vai pedir para ser reiniciado. Reinicie a IDE. Quando o ambiente estiver aberto novamente, você vai perceber que na barra de ferramentas foi inserido um novo botão e um combobox. Ainda não iremos aprender para que eles servem, por enquanto entenda que eles fazem parte do plugin do iReport. Veja a Figura abaixo.

Figura 4

Barra de ferramentas alterada

Com o iReport instalado, vamos agora preparar a estrutura de uma aplicação que iremos usar nas próximas partes do tutorial. Inicie a criação de um novo projeto no NetBeans escolhendo um projeto do tipo Java Application (Aplicação Java). Veja a Figura abaixo.

Figura 5

Novo projeto

Clique em Next. Em seguida, dê o nome ao projeto, sugiro “TutorialRelatorios” (sem as aspas), escolha onde o projeto vai ser salvo e marque a opção Use Dedicated Folder for Storing Libraries (essa opção vai fazer com que todos os arquivos .jar utilizados fiquem contidos dentro do projeto, sob o diretório “lib”), configure as outras opções de acordo com a Figura abaixo e clique em Finish.

Figura 6

Configurando o novo projeto

Ao clicar em Finish, o projeto vai ser criado. A partir de agora já poríamos começar a criar nossos relatórios no iReport, mas ainda faltam algumas configurações para que possamos fazer esses relatórios executarem dentro de uma aplicação. Para isso, ainda temos que adicionar o JasperReports no nosso projeto, bem como todas as suas dependências, além de termos também que organizar a estrutura do projeto para guardar nossos relatórios.

Primeiro vamos tratar dos .jars. Ao instalar os plugins do pacote do iReport, uma biblioteca padrão com os .jars é criada, mas ela vem com alguns erros, então vamos criar a nossa biblioteca para não termos dores de cabeça depois. Para isso, expanda o nó raiz do projeto e procure pelo nó Libraries (Bibliotecas). Clique com o botão direito e escolha Add Library (Adicionar Biblioteca). Veja a Figura abaixo.

Figura 7

Nova biblioteca

Ao clicar em Add Library, o diálogo para a inserção de bibliotecas será exibido. Neste diálogo, clique no botão Create… (Criar). Veja a Figura abaixo.

Figura 8

Criando uma nova biblioteca

Ao clicar em Create, será exibido um novo diálogo, onde o nome e o tipo da nova biblioteca devem ser definidos. Em Library Name (Nome da Biblioteca), configure como “JasperReports-3.7.5”, lembrando de mudar o número da versão caso esteja utilizando uma versão mais nova. Em Library Type (Tipo da Biblioteca), deixe como Class Libraries (Bibliotecas de Classe). Por fim, clique no botão OK. Veja a Figura abaixo.

Figura 9

Criando uma nova biblioteca

Ao clicar em OK, será exibido o diálogo Customize Library (Personalizar Biblioteca?). É nele que indicaremos os .jars que fazem parte da nossa biblioteca. Quando instalamos o plugin do iReport no NetBeans é criada uma pasta chamada “ireport” dentro do diretório de instalação e é lá que estão os .jars que precisamos. Sabendo disso, clique então no botão Add JAR/Folder (Adicionar JAR/Diretório). Veja a Figura abaixo.

Figura 10

Adicionando os JARs

Com o diálogo aberto, procure pelo diretório onde a instalação do NetBeans foi feita. No meu caso, ele foi instalado em C:\Program Files (x86)\NetBeans 6.9.1\. Dentro deste diretório, procure pelo diretório chamado “ireport” e entre nele. O conteúdo do diretório é exibido na Figura abaixo, sendo que os diretórios que nos interessam são o diretório “libs” e o diretório “modules” destacados na Figura.

Figura 11

libs e modules

Primeiramente, acesse o diretório “libs”. Dentro dele, existe apenas um .jar (para a versão 3.7.5 do iReports). Selecione esse .jar (xalan.jar) e clique em Add JAR/Folder. Veja a Figura abaixo.

Figura 12

Adicionando xalan.jar

Ao clicar, o NetBeans vai perguntar se você deseja mesmo criar um diretório dentro do diretório “libs” (aquele que vai guardar nossas bibliotecas) com o nome de JasperReports-3.7.5 (o nome que demos para a biblioteca, lebram?). Responda Sim. Veja a Figura abaixo.

Figura 13

Alerta de criação de novo diretório

Ao aceitar a criação do novo diretório, a janela Customize Libraries voltará a aparecer, agora com o xalan.jar sendo mostrado na lista de .jars. Além da pasta “libs”, precisamos adicionar também os .jars que estão dentro da pasta “modules”. Então clique novamente no botão Add JAR/Folder da janela Customize Libraries e entre no diretório “modules”. Dentro dele existirão alguns .jars, mas não são eles que queremos. Note que além dos .jars, existe um diretório chamado “ext”. Entre nele. Neste diretório estão TODAS as dependências do JasperReports. Para facilitar as coisas, iremos selecionar TODOS os .jars. Em um projeto real, o mais sensato seria selecionar apenas os .jars que você tem certeza que vão ser utilizados. Entretanto, esta abordagem traz um problema. O Jasper utiliza nos bastidores muitos desses .jars, mesmo que a gente pense que não. Um exemplo é o spring.jar :(. E o pior! A cada versão, as dependências mudam (já tive vários problemas com isso). Minha recomendação é que você selecione TODOS os .jars, e depois, caso já utilize um deles (por exemplo o Hibernate) recomendo então que você atualize o .jar para a versão mais nova. Enfim, selecione TODOS e clique em Add JAR/Folder. Veja a Figura abaixo.

Figura 14

Jars do diretório modules/ext

Ao fazer isso, novamente a janela Customize Library vai ser exibida, mostrando que todos os .jars foram inseridos. Clique em OK. Ao clicar, o diálogo Add Library será exibido novamente, mas agora com a nova biblioteca criada. Selecione-a (já vai estar selecionada por padrão) e clique em Add Library. Veja a Figura abaixo.

Figura 15

Adicionando a biblioteca no projeto

Fazendo isso, o diálogo será fechado e você vai perceber que todos os .jars aparecerão dentro do projeto. Veja a Figura abaixo.

Figura 16

Projeto com a biblioteca adicionada

Ok, já temos a biblioteca configurada com todos os .jars do JasperReports. Agora vamos criar um diretório no nosso projeto para conter as definições dos nossos relatórios (arquivos .jrxml). Para isso, clique com o botão direito no nó raiz do projeto e escolha Properties (Propriedades). Veja a Figura abaixo.

Figura 17

Acessando as propriedades do projeto

Ao clicar em Properties, a janela de propriedades do projeto será exibida. Nesta janela, selecione o primeiro nó à esquerda (Source – Fonte) e do lado direito, na tabela Source Package Folders, clique em Add Folder… (Adicionar Diretório). Veja a Figura abaixo.

Figura 18

Propriedades do projeto

Ao clicar em Add Folder, um diálogo será exibido. Neste diálogo, clique no botão localizado no canto superior direito. Veja a Figura abaixo.

Figura 19

Botão para criar um novo diretório

Com isso, um novo diretório será criado. Dê o nome de “relatorios” (sem as aspas e sem acento agudo), selecione-o e clique em Open. Veja a Figura abaixo.

Figura 20

Diretório "relatorios" criado

Ao clicar em Open, o novo diretório será inserido na tabela Source Package Folders. Na primeira coluna é apresentado o caminho do diretório, enquanto na segunda coluna é apresentado o label que vai identificar esse diretório dentro do projeto. Clique duas vezes na célula da segunda coluna que corresponde ao label do diretório criado e dê o nome de “Relatórios”. Cuidado! Ao terminar de editar o nome, tecle <ENTER>. Veja a Figura abaixo.

Figura 21

Configurando o novo diretório

Ao fazer isso, o label será configurado (saindo da edição) e você agora deve clicar no botão OK das propriedades do projeto, aceitando assim as modificações que foram feitas. Veja a Figura abaixo.

Figura 22

Aceitando as configurações

Pronto, terminamos a configuração do projeto. Se tudo tiver dado certo, o novo diretório será exibido na estrutura do projeto, sendo que ele será identificado pelo label que foi configurado no passo anterior. Veja a Figura abaixo.

Figura 23

Estrutura do projeto atualizada

Com isso terminamos a primeira parte do tutorial. Aprendemos alguns conceitos sobre o JasperReports e como instalar o iReport. Aprendemos também a criar e a inserir uma nova biblioteca no projeto, sendo que essa biblioteca corresponde aos .jars necessários para nós utilizarmos o JasperReports no nosso programa (quando formos abrir o relatório a partir do programa). Além disso, aprendemos a criar um diretório dedicado aos nossos relatórios. Então é isso. Terminamos a primeira parte do tutorial. Com o cenário pronto, agora podemos começar a brincar com o iReport e criar nossos primeiros relatórios.

O projeto completo até o momento pode ser obtido neste link.

Fiquem ligados, a próxima parte vem ai 😉

Parte 1Parte 2Parte 3Parte 4Parte 5