Thiago Hernandes de Souza © ! " $!%!&'()*+ !!"# $%&'%#()(%##*'+" , -' " ' .. " /!' "!0!' 1!2 '" 3-46' !' 838 . 9. : + : 9, !" ! . " " " 1" ." ; 46' " " ""' ! -" 1'"<1!;! !'"461-46 =. "+4"" 2 !!","!!>! !"#$%&' ! ,-./'0 1!!& ?@>! ')&%A % 8"46" B8") >! " 46 C DE@#F*G*HGA##G&A$$GH&&H &&I )$+ + ,-./0 1,1/234+5647864 #938:33487...3; <938:33487.=5. 7!$$>$+%+2 ???+$+%+243;8@ Dedicatória “Confia ao SENHOR as tuas obras, e teus pensamentos serão estabelecidos.” (Provérbios 16:3) Primeiramente ao Senhor Jesus Cristo, por fazer o intermédio junto a Deus trazendo na medida do possível, o conhecimento necessário para o desenvolvimento dessa obra. Também, ao meu avô materno (in memorian), popular Chiquinho (Francisco), meu avô paterno (in memorian), Leodoro e a minha avó materna (in memorian), Izaura, que não tiveram a oportunidade de contemplar esse trabalho. Não esquecendo de toda minha família e principalmente, da fonte inesgotável de alegria e paz transmitida por minha amada filha, Maria Eduarda. Agradecimentos “O vinho é escarnecedor, a bebida forte alvoroçadora; e todo aquele que neles errar nunca será sábio.” (Provérbios 20:1) Agradeço a Deus, pelos momentos em que me falou em silêncio: “Vai, faça! Continue o que começou”. Também, a força que sempre me alçou ao pensar em alguém como minha filha, Maria Eduarda (5 aninhos) que um dia entenderá esse trabalho. Não bastante, aos meus familiares (mãe, pai, irmã e avó paterna) e namorada, com quem sempre pude compartilhar um pouco do que está se passando em minha vida. Introdução Com o crescimento de frameworks1 e demais tecnologias para o cenário mundial voltado para o desenvolvimento Java, muitas informações em banco de dados ficaram a mercê de uma boa ferramenta de desenvolvimento, manipulação de dados e apresentações de estatísticas. Para isso, o surgimento das ferramentas iReport (projeto mantido pela JasperReports) e Pentaho Design concretizaram uma forte parceria de integração com aplicações Java, onde o objetivo se resume em abstrair dados abastecidos em banco de dados e formatá-los de forma a aparecer ao usuário final com uma estética profissional e agradável, além de possibilitar funcionalidades extras como impressão e exportação para outros formatos (PDF, XLS, DOC, ODT, etc). Toda projeção em ambos os relatórios das ferramentas são baseados em objetos e linhas de códigos, tais como XML, instruções SQL e funções disponíveis referente a cada tipo de componente. Sendo assim, de nada adianta ter informações se não tiver estatísticas e formas facilitadoras de entendimento pelo usuário final. 1 Consiste em uma abstração que une códigos comuns entre vários projetos de software possibilitando uma funcionalidade genérica. Sumário Capítulo 1 Preparando o Ambiente .............................................................................................. 1 1.1 JDK (Java Development Kit) ...................................................................... 1 1.2 JRE (Java Runtime Enviroment) ............................................................... 2 1.3 Variável de Ambiente JAVA_HOME .......................................................... 3 1.4 Netbeans ..................................................................................................... 6 1.5 WAMPSERVER ............................................................................................ 6 1.6 Toad for MySQL .......................................................................................... 7 1.7 PostgreSQL ................................................................................................. 8 1.8 PgAdmin ...................................................................................................... 9 1.9 iReport ......................................................................................................... 9 1.10 Pentaho Design ...................................................................................... 10 Capítulo 2 Java e Banco de Dados .............................................................................................. 13 2.1 Sistemas de Banco de Dados Relacionais .......................................... 13 2.1.1. Estruturas Relacionais .............................................................. 14 2.1.2. Integridade .................................................................................. 14 2.1.3. Primary Key – Chave Primária ................................................. 15 2.1.4. Foreign Key – Chave Estrangeira ............................................. 16 2.1.5. SQL (Structured Query Language) ........................................... 16 X Relatórios Profissionais para Aplicações Java... 2.1.6. Criando um Banco de Dados com o MySQL .......................... 17 2.1.6.1. Principais Tipos de Dados ............................................. 21 2.1.6.2. Tabelas ............................................................................. 22 2.1.6.3. Atributos .......................................................................... 34 2.1.7. Criando um Banco de Dados com o PostgreSQL .................. 36 2.1.7.1. Principais Tipos de Dados ............................................. 39 2.1.7.2. Tabelas ............................................................................. 39 2.1.7.3. Atributos ........................................................................... 51 2.1.8. JDBC (Java Database Connectivity API) .................................. 52 2.1.8.1. Conectores: MySQL e PostgreSQL ............................... 53 2.1.9. Java............................................................................................... 53 2.1.9.1. Conectando, Inserindo, Alterando, Excluindo e Retornando Consultas .................................................................. 54 2.1.9.1.1. Com o MySQL ........................................................ 54 2.1.9.1.2. Com o PostgreSQL ................................................ 76 Capítulo 3 iReport .......................................................................................................................... 91 3.1 Criando o Primeiro Arquivo de Relatório .............................................. 91 3.1.1. Entendendo a Estrutura do Relatório ..................................... 93 3.1.2. Conhecendo os Principais Componentes ............................... 95 3.1.3.Criando Conexão com Banco .................................................... 96 3.1.3.1. MySQL .............................................................................. 96 3.1.3.2. PostgreSQL ...................................................................... 98 3.1.4. Instruções SQL ............................................................................ 99 3.1.4.1. Definindo ...................................................................... 100 3.1.4.2. Parametrizando ........................................................... 103 3.1.5. Subrelatórios ............................................................................ 105 3.1.6. Código de Barras ..................................................................... 114 3.1.7. Gráficos ......................................................................................116 Sumário XI Capítulo 4 Pentaho ......................................................................................................................121 4.1 Criando o Primeiro Arquivo de Relatório ............................................121 4.1.1. Entendendo a Estrutura do Relatório .................................. 123 4.1.2. Conhecendo os Principais Componentes ............................. 124 4.1.3. Criando Conexão com o Banco .............................................. 124 4.1.3.1. MySQL ........................................................................... 125 4.1.3.2. PostgreSQL ....................................................................127 4.1.4. Instruções SQL ......................................................................... 128 4.1.4.1. Definindo ...................................................................... 129 4.1.4.2. Parametrizando ........................................................... 130 4.1.5. Subrelatórios ............................................................................ 132 4.1.6. Código de Barras ..................................................................... 136 4.1.7. Gráficos ...................................................................................... 137 Capítulo 5 Desenvolvendo Aplicações Java SE e EE para chamar Relatórios “.jasper” (iReport) .................................................................................................................... 143 5.1 Aplicação Java SE (desktop) sem Parâmetro .................................. 143 5.2 Parametrizando uma aplicação Java SE ........................................... 147 5.3 Aplicação web sem Parâmetro .......................................................... 149 5.4 Parametrizando uma aplicação Java EE .......................................... 154 5.5 Chamando um relatório parametrizado do iReport através de um arquivo XHTML .............................................................................................. 156 Capítulo 6 Desenvolvendo Aplicações Java SE e EE para chamar Relatórios “.prpt” (Pentaho) .................................................................................................................... 161 6.1 Aplicação Java SE (desktop) sem Parâmetro .................................... 161 XII Relatórios Profissionais para Aplicações Java... 6.2 Parametrizando uma aplicação Java SE ............................................166 6.3 Aplicação web sem parâmetro ............................................................168 6.4 Parametrizando uma aplicação Java EE ............................................ 172 6.5 Chamando um relatório parametrizado do Pentaho através de um arquivo XHTML ............................................................................................... 174 Capítulo 7 Praticando com Java ................................................................................................ 177 7.1 MySQL – inserir, alterar, excluir e retornar dados ............................ 177 7.1.1. Definindo as classes ................................................................ 178 7.1.2. Definindo os frames ................................................................. 182 7.2 PostgreSQL .............................................................................................. 194 Capítulo 1 Preparando o Ambiente 1.1 JDK (Java Development Kit) O JDK é o kit de desenvolvimento Java. Composto por diversas classes, bibliotecas e compilador. Através desse kit, que a criação de aplicações Java são possíveis. Para adquiri-lo acesse: http://www.oracle.com/technetwork/java/javase/ downloads/jdk-7u3-download-1501626.html Em seguida, aceite (Figura 1) as condições da licença da Oracle e escolha (Figura 2) o instalativo de acordo com a versão do Windows instalada na máquina para o desenvolvimento das aplicações Java. Figura 1 – Aceitar as condições de licença da Oracle Figura 2 – Escolher a versão do instalativo do Windows: 32 ou 64 bits 2 Relatórios Profissionais para Aplicações Java... 1.2 JRE (Java Runtime Enviroment) É o ambiente de execução Java. Tem a função de executar as aplicações da plataforma Java. É composto por bibliotecas e pela Máquina Virtual Java (JVM). A função da JVM é carregar e executar os aplicativos Java, fazendo em seguida, a conversão dos códigos escritos pela linguagem Java em bytecodes. Ou seja, graças a JVM, aplicações Java podem funcionar em qualquer plataforma de hardware (Windows ou UNIX). Para fazer download, acesse: http://www.oracle.com/technetwork/java/ javase/downloads/jre7-downloads-1637588.html É o mesmo procedimento do JDK. Deve-se aceitar (Figura 3) a licença da Oracle e escolher (Figura 4) a versão do sistema operacional. Figura 3 – Aceitar a licença da Oracle Figura 4 – Escolher a versão do sistema operacional Para instalar tanto o JDK, quanto o JRE são passos simples sem complicações. Os diretórios usuais de instalação do JDK e JRE são respectivamente: JDK - C:\Program Files\Java\jdk1.7.0_03 JRE - C:\Program Files\Java\jre7 Capítulo 1 - Preparando o Ambiente 3 1.3 Variável de Ambiente JAVA_HOME É essa variável de ambiente que mostra ao sistema operacional onde está instalado o kit de desenvolvimento do Java. Através dela, fica definido o caminho onde se encontram as classes e bibliotecas relacionadas às funcionalidades de desenvolvimento de aplicações Java. Para criá-la, observe as Figuras: 5 a 10: Figura 5 – Vá ao “Menu Iniciar” e selecione com o botão direito “Computador” Figura 6 – Escolha a opção “Propriedades” Figura 7 – Selecione “Configurações avançadas do sistema” 4 Relatórios Profissionais para Aplicações Java... Figura 8 – Agora, clique em “Variáveis de Ambiente...” Figura 9 – Em “Variáveis do Sistema” escolha “Novo...” Capítulo 1 - Preparando o Ambiente Figura 10 – Parametrizando a variável de ambiente JAVA_HOME e o diretório de instalação do JDK Figura 10a – Selecionar a variável de sistema “Path” e em seguida clicar no botão “Editar” Figura 10b – No final do valor da variável colocar: “;%JAVA_HOME%\bin” OBS: Sem as aspas duplas. 5 6 Relatórios Profissionais para Aplicações Java... 1.4 Netbeans O Netbeans é uma ferramenta GUI (Graphical User Interface) para desenvolvimento de aplicações. Possibilita a criação tanto de aplicações Java SE (desktop), quanto Java EE (web), além de possibilitar a criação de serviços e diversos outros mecanismos para integração com aplicações, bibliotecas e/ou frameworks. Possibilita, ainda, a integração com diversos servidores (TomCat, Geronimo, Glassfish, Jetty, etc.) sem contar a possibilidade da instalação de plugins2 de tecnologias de terceiros em seu ambiente. Para adquiri-lo, acesse: http://netbeans.org/downloads/index.html Figura 11 – Escolha a distribuição Java EE 1.5 WAMPSERVER É um ambiente de desenvolvimento web para Windows. Permite a criação de aplicações utilizando: Apache, PHP e MySQL. Será utilizado dessa ferramenta apenas o banco de dados MySQL para os projetos desenvolvidos em Java no Netbeans. 2 É um módulo de extensão. Pode ser chamado também, de plug-in, add-in ou add-on. Muito usado para adicionar funções a outros programas. Capítulo 1 - Preparando o Ambiente 7 Faça o download em: http://www.wampserver.com/en/ Figura 12 – Selecione o item de menu “DOWNLOAD” Figura 13 – Selecione o WAMPSERVER conforme o modo binário do sistema operacional 1.6 Toad for MySQL É uma ferramenta GUI de gerenciamento e administração de banco de dados MySQL. Proporciona a criação de scripts prontos estruturados a fim de auxiliar o DBA3. Faça o download em: http://www.quest.com/toad-for-mysql/ 3 Database Administrator – Administrador de Banco de Dados. Termo muito utilizado no cenário mundial de TI (Tecnologia da Informação) 8 Relatórios Profissionais para Aplicações Java... Figura 14 – Página de download4 do Toad for MySQL 1.7 PostgreSQL É um poderoso banco de dados, objeto-relacional que possui um completo gerenciador GUI, denominado PgAdmin. Além de toda sua funcionalidade e robustez, atende a quesitos de banco de dados geográficos (SIG – Sistemas de Informações Geográficas). Sem dúvida, uma excelente opção para empresas que não querem gastar com licenças de banco de dados. Faça o download em: http://www.enterprisedb.com/products-servicestraining/pgdownload#windows Figura 15 – Página de download do PostgreSQL 4 É necessário um cadastro para baixar a ferramenta Capítulo 1 - Preparando o Ambiente 9 1.8 PgAdmin É o grande aliado do PostgreSQL. Engloba diversas funcionalidades para agilidade e rapidez no desenvolvimento de estruturas de banco de dados como: tabelas, indexes, chaves, funções, etc. Será utilizada como auxílio no desenvolvimento e manipulação de estruturas e dados com o banco de dados PostgreSQL. Figura 16 - PgAdmin 1.9 iReport É uma das mais populares bibliotecas para relatórios Java. Abrange um design visual mantido pela comunidade JasperReports. Seus relatórios podem ser acessados de qualquer aplicação Java. Suporta diversos formatos em sua saída. Ou seja, pode gerar arquivos dos tipos: PDF, OpenOffice, DOCX, XLS, dentre outros. Além da criação de relatórios, fará "pontes" ou ligações com os banco de dados: MySQL ou PostgreSQL. Fazendo com que, a consulta e o acesso a informações a um banco de dados sejam feitos por funcionalidades oriundas do iReport e não por uma aplicação. Faça o download em: http://community.jaspersoft.com/project/ireportdesigner/releases 10 Relatórios Profissionais para Aplicações Java... Figura 17 – Download do iReport 1.10 Pentaho Design Teve início a partir da biblioteca JFreeReport, sucessora da implementação do projeto JFreeChart, de David Gilbert. Em que era baseado em relatórios Swing widget. Em seguida, Thomas Morgner adicionou novas funcionalidades ao projeto JFreeReport e se tornou o principal pioneiro. Em meados de 2006, a biblioteca JFreeReport se une a uma companhia de BI (Business Intelligence) denominada Pentaho Reporting. Paternizando assim, o surgimento do Pentaho. Possui características semelhantes a do iReport, porém, com diferenças quanto a: sintaxe, estrutura e concretização de relatórios estatísticos. Adquira em: http://community.pentaho.com/projects/bi_platform/ design_studio.php