Modulo III Relatórios e Gráficos em Java

Documentos relacionados
Geração de Relatório com JasperReports e ireport 1. Introdução

Geração de Relatório com JasperReports e ireport

Ferramentas gráficas e relatórios

Prof. Fernando Freitas Esp. em Gestão e Docência Universitária/UNIFIMES nando@fimes.edu.br

Manual de Utilização JasperReport, ireport e integração com PHP

Jasper ireport Ferramenta para desenvolvimento e geração de relatórios utilizando Java

ESTRATÉGIAS PARA O DESENVOLVIMENTO DE RELATÓRIOS UTILIZANDO O JASPERREPORTS COM IREPORT

Agenda. Instalação e configuração. Processamento de comandos SQL com JDBC. Driver JDBC Criação da classe de conexão

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

Tutorial: Técnicas de Geração de Relatórios com JasperReports

Usando o Eclipse - Fundamentos. Professor Vicente Paulo de Camargo

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

p Pacotes, a grosso modo, são apenas pastas ou diretórios do sistema operacional onde ficam armazenados os arquivos fonte de Java.

Jasper ireport Ferramenta para desenvolvimento e geração de relatórios utilizando Java

Programação Orientada a Objetos II

Ferramentas gráficas e relatórios. Aula 2. Carlos Eduardo de Carvalho Dantas

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 9- Introdução ao JDBC

JPA: Persistência padronizada em Java

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

Introdução a relatórios Crosstab com ireport/jasperreports

Faça Fácil Proficy Historian e SQL Linked Server

JAVA. Professor: Bruno Toledo

Manipulação de Banco de Dados com Java 1. Objetivos

Utilizando o Framework SubMacro no Desenvolvimento de Aplicações Java para Internet. Kleber Taffarel Novembro de 2008

Jaspersoft Studio Introdução

Faça Fácil. Proficy Historian e SQL Linked Server

Enums em Java: utilização e persistência

JAVA. Professor: Bruno Toledo

Demoiselle Report Guide. Demoiselle Report. Marlon Carvalho. Rodrigo Hjort. Robson Ximenes

Crystal Reports - Gerando seus relatórios.

Introdução ao IDE Netbeans (Programação Java)

DATA ACCESS OBJECT (DAO)

Instalação JDK 10/03/2017

Exercícios de fixação: Listas

Banco de Dados. Banco de Dados. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

ÍNDICE CAPÍTULO 2 PÁGINAS E PÁGINAS ESPELHADAS...24 ADICIONAR NOVAS PÁGINAS A UM DOCUMENTO...28

Tutorial 1 Configuração Apache Tomcat no NetBeans 8.0 (passo a passo)

Elaboração de Provas Online usando o Formulário Google Docs

Acesso a banco de dados

Mini-Tutorial. Como criar relatórios Java para Web com JasperReports e ireport por Roberto J. Furutani 20/07/2005

TECNOLOGIAS DE ACESSO A BASES DE DADOS. Profª Ana Paula Cação Maio de 2018

Java - Conexão ao Banco de Dados usando JDBC

Instalação JDK. Joyce França. Professora de Ciência da Computação - IFNMG

Computação II Orientação a Objetos

JDBC. Prof. Márcio Bueno

JOHN MAYER - PARADISE VALLEY

JDBC JDBC. JDBC - Arquitetura. JDBC Arquitetura Pacote Java.sql. Java Database Connectivity JDBC PostgreSQL

Classes e Objetos POO

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Unidade 12: Programação de Banco de Dados com Java Prof. Daniel Caetano

2 Versão 1: Funcionalidade Básica e Interface Web

Programação Orientada a Objetos II

Linguagem de Programação II Implementação

Java JDBC - I. Ex. 2: para o SQLServer da Microsoft, o driver JDBC pode ser obtido em

Definições das opções Ferramentas, Opções Ferramentas, Opções Opções do Sistema Propriedades do Documento Opções do Sistema

Organizar. Colaborar. Descobrir. GUIA DE MIGRAÇÃO. RefWorks, EndNote X7, Zotero, Papers

MANUAL DO PROFESSOR AMBIENTE VIRTUAL DE APRENDIZAEGEM

ResponseCard AnyWhere Desktop Guia do Usuário

Pacotes Organizando suas classes e bibliotecas

JDBC - Java Data Base Connectivity

Escrito por Lisiane Batista Neitzke Sex, 14 de Outubro de :57 - Última atualização Qua, 25 de Junho de :18

POO Programação Orientada a Objetos

Obs.: para realizar estas atividades tenha certeza de que já tenha instalado no sistema operacional o Java JDK e o NetBeans.

Desenvolvimento Web com Java. Sérgio Lopes Caelum -

Módulo 5 - JDBC java.sql - Conexão com Banco de Dados

Lógica de Programação e Algoritmos

Compilação dos trabalhos: questões de concurso

BIBLIOMETRIA ANEXO I COMO EXPORTAR DADOS NAS BASES SCOPUS E EBSCOHOST

Transcrição:

Modulo III Relatórios e Gráficos em Java Prof. Ismael H F Santos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Modulo III Relatórios em JAVA Relatórios - Jasper e IReports Modulo III Gráficos em JAVA Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 2 1

Bibliografia Linguagem de Programação JAVA Ismael H. F. Santos, Apostila UniverCidade, 2002 The Java Tutorial: A practical guide for programmers Tutorial on-line: http://java.sun.com/docs/books/tutorial Java in a Nutshell David Flanagan, O Reilly & Associates Just Java 2 Mark C. Chan, Steven W. Griffith e Anthony F. Iasi, Makron Books. Java 1.2 Laura Lemay & Rogers Cadenhead, Editora Campos Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 3 Livros Core Java 2, Cay S. Horstmann, Gary Cornell Volume 1 (Fundamentos) Volume 2 (Características Avançadas) Java: Como Programar, Deitel & Deitel Thinking in Patterns with JAVA, Bruce Eckel Gratuito. http://www.mindview.net/books/tij/ Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 4 2

FPSW-Java Relatórios JasperReports Relatórios Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 5 JasperReports Framework open-source escrito em Java para geração de relatórios http://jasperreports.sourceforge.net/ Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 6 3

ireport O ireport é uma ferramenta que visa facilitar a construção de relatórios (layout) utilizando a biblioteca JasperReports através de uma interface gráfica desenvolvida em Swing. Fornece suporte à construção de relatórios complexos. Elimina a necessidade de manipulação direta dos arquivos JRXML. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 7 Usando JasperReports/iReport 1. Criação do desenho (layout) do relatório; 2. Preenchimento do relatório com dados; 3. Visualização (e/ou exportação) do relatório (PDF, HTML, XLS, etc). Obs.: passo 1 é realizado no ireport; passos 2 e 3 são programáticos, com o uso da biblioteca JasperReports. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 8 4

Funcionamento O design do relatório é definido em um arquivo XML, que obedece a estrutura declarada no arquivo jasperreports.dtd. O arquivo XML é compilado gerando um arquivo.jasper, onde as expressões Java existentes dentro do XML serão verificadas em tempo de compilação. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 9 Funcionamento (cont.) Pode-se ainda definir os campos que serão preenchidos dinamicamente a partir de uma base de dados. Diferentes objetos Jasperreports são usados para representar as etapas do processo de geração de relatórios: JasperDesign <- test.xml JasperReport -> test.jasper JasperPrint -> test.pdf Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 10 5

JasperReports DataSources Para produzir um relatório precisamos fornecer dados ao Jasper. consultas SQL inserida no arquivo XML um objeto ResulSet gerando por uma classe Java Interface JRDataSource abstrai diferentes fontes de dados, fornecendo os seguintes tipos: JREmptyDatasource - especial datasource usado para preencher relatórios que não possuem registros ou dados recuperados JRResultSetDataSource - implementação padrão desta interface para objetos ResultSet XML DataSource - empacotar um arquivo XML e normalizar seu conteúdo. As únicas informações necessárias para criar este tipo de datasource são: o nome do datasource e o nome do arquivo XML. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 11 JasperReports DataSources TableModel DataSource acessa tabelas já carregadas em interfaces swing. JavaBeans Set Datasource - capaz de empacotar uma Collection ou um Array de JavaBeans. É necessário uma classe especial de fábrica (factory) que forneça um método estático para gerar a coleção ou um array de JavaBeans. Custom Datasource - datasource genérico. É necessário uma classe especial de fábrica (factory) que forneça um método estático que retorne um JRDataSource. No linguajar Jasper", um datasource somado a um arquivo.jasper gera um "print", que pode ser "exportado" para os formatos PDF, HTML, XML, CVS ou XLS. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 12 6

Campos e Parâmetros Campos (Fields) são áreas específicas no relatório que receberão diretamente os dados das respectivas colunas referenciadas. <field name= Nome class= java.lang.string /> Parâmetros são dados passados para a operação de preenchimento, que não podem ser encontrados normalmente na fonte de dados. <parameter name= TituloDoRelatorio class= java.lang.string /> Passados via código Java, através da classe HashMap: Map parametros = new HashMap( ); parametros.put( Cliente, Fulano de Tal ); Utilizados, por exemplo, na query do relatório Select * FROM CLIENTE WHERE CLIENTE=$P{Cliente} Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 13 Variáveis Variáveis são utilizadas para armazenar resultados temporários necessários para geração do relatório podem referenciar tipos internos de cálculos, como contagem (count), soma (sum), média (average), menor (lowest), maior (highest), etc <variable name= ValorTotalCompraSum class= java.lang.double calculation= Sum > <variable expression> ${ValorProduto} </variable expression> </variable> Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 14 7

Variáveis A ordem em que as variáveis são declaradas no relatório é importante. Podemos definir o nível no qual uma variável irá ser inicializada. Pode ser no início do relatório (uma única vez), a cada página, coluna ou grupo. <variable name= ValorTotalCompraSum class= java.lang.double resettype= Page calculation= Sum > <variable expression> ${ValorProduto} </variable expression> <initialvalueexpression> new Double( 0 ) </initialvalueexpression> </variable> Variáveis internas da ferramenta: PAGE_NUMBER, COLUMN_NUMBER, REPORT_COUNT, PAGE_COUNT, COLUMN_COUNT. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 15 Expressões Expressões (Expressions) são utilizadas para especificar o conteúdo de campos de texto, na realização de cálculos freqüentes Todas elas são expressões Java que podem conter em sua sintaxe: campos: acessado com $F{nome} parâmetros: acessado com $P{nome} variáveis de relatório: acessado com $V{nome}. Exemplo de uma expressão: <textfieldexpression> Sr.(a) + $F{Cliente} + " realizou um total de compras no valor de " + $V{ValorTotalCompraSum} + " no dia " + (new SimpleDateFormat("dd/MM/yyyy")).format($F{DataCompra}) + "." </textfieldexpression> Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 16 8

Layout O JasperReports divide o layout do relatório em áreas pré-definidas, chamadas seções. As seções levam em considerção a estrutura visual de um relatório. São elas: background, title, pageheader, columnheader, detail, columnfoter, pagefooter, lastpagefooter e summary. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 17 Seções do layout do relatório Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 18 9

JasperReport API Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 19 JasperReport API (cont.) Classe net.sf.jasperreports.engine.design.jasperdesign representam o relatório no seu formato mais primitivo. São resultados de um processamento sobre o arquivo XML. Classe net.sf.jasperreports.engine.jasperreport relatórios compilados armazenados em arquivos.jasper. Nesse estágio, toda a análise sintática nas expressões existentes no XML já foram realizadas. Classe net.sf.jasperreports.engine.jasperprint JasperReport com todos os campos preenchidos, pode ser visualizado diretamente utilizando visualizadores internos do JasperReport. Também pode ser transformado em formatos mais populares como HTML, XML ou PDF Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 20 10

JasperReport API (cont.) Interface net.sf.jasperreports.engine.jrdatasource padroniza o comportamento das classes que manipulam as fontes de dados necessárias durante o preenchimento dos campos existentes no JasperReport. Classe net.sf.jasperreports.engine.jasperfillmanager utilizada para gerar instâncias da classe JasperPrint utilizando uma fonte de dados (JRDataSource) e uma instância da classe JasperReport. Classe net.sf.jasperreports.engine.jasperprintmanager Permite imprimir o relatório completo ou páginas do mesmo. É possível imprimir o relatório como uma imagem ( utilizando o método printpagetoimage) Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 21 JasperReport API (cont.) Classe net.sf.jasperreports.engine.jasperexportmanager gera documentos nos formatos PDF, HTML e XML (v 1.0). Exemplo import java.sql.connection;... import net.sf.jasperreports.engine.xml.jrxmlloader; import net.sf.jasperreports.view.jasperviewer; public class JasperReportExemple { private static final String url = "jdbc:mysql://127.0.0.1/teste"; private static final String driver = "com.mysql.jdbc.driver"; private static final String login = ""; private static final String pwd = ""; public JasperReportExemple() { } Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 22 11

JasperReport API (cont.) public void gerar( String layout ) throws JRException, SQLException, ClassNotFoundException { //gerando o jasper design JasperDesign desenho = JRXmlLoader.load( layout ); //compila o relatório JasperReport relat = JasperCompileManager.compileReport( desenho ); //estabelece conexão Class.forName( driver ); Connection con = DriverManager.getConnection( url, login, pwd ); Statement stm = con.createstatement(); String query = "select * from turma"; ResultSet rs = stm.executequery( query ); //implementação da interface JR ResultSetDataSource JRResultSetDataSource jrrs = new JRResultSetDataSource( rs ); Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 23 JasperReport API (cont.) //executa o relatório Map params = new HashMap(); params.put("nota", new Double(10)); JasperPrint imp = JasperFillManager.fillReport( relat, params, jrrs ); //exibe o resultado JasperViewer viewer = new JasperViewer( imp, true ); viewer.show(); } public static void main(string[] args) { try { new JasperReportExemple().gerar( "report.jrxml" ); } catch (Exception e) { e.printstacktrace(); } } } Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 24 12

FPSW-Java Layout do Relatório IReport Relatórios Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 25 IReport O ireport é uma ferramenta que permite definir o design do relatório dentro de um ambiente gráfico, contento todos os recursos que a biblioteca Jasper oferece. É possível definir relatórios com designs modernos e complexos sem se quer escrever uma linha de código XML, que é todo gerado automaticamente Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 26 13

Criar um arquivo JRXML Relatório no ireport é armazenado em um.jrxml No menu File, clique em New Document; Aparece a janela para configuração do seu relatório: o nome do relatório, tamanho da folha, margens, colunas do relatório Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 27 Seções do layout do relatório Design do relatório utiliza a barra de ferramentas O conteúdo da banda title aparece somente uma vez no começo do relatório. O que definimos na banda pageheader aparece no alto de cada página do mesmo. Esta parte pode, por exemplo, conter a data/hora e/ou o nome da organização. O columnheader lista nomes daqueles campos específicos que você quer apresentar. Por exemplo do Nome do empregado, Hora de Início, Hora de término, Horas trabalhadas, etc. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 28 14

Seções do layout do relatório O detail é a banda onde os valores dos campos são apresentados. Por exemplo, Jorge Horacio, 12:00h, 18:00h, 06 horas O columnfooter pode indicar a soma de alguns dos campos. Por exemplo Horas totais trabalhadas: 180 O pagefooter aparece no final de cada página. Pode conter o número da página como 1/7. O summary é a banda onde a informação inferida a partir dos dados da banda detalhe é indicada. Por exemplo, após ter listado as horas trabalhadas para cada empregado na banda do detalhe, as horas totais trabalhadas para cada empregado podem ser apresentadas em um gráfico de torta. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 29 Exemplo A tabela a seguir os textos Relatório Biblioteca Pessoal, Data:, Código, Título, Volume, Edição, Editora, Autor e Adquirido em são campos de texto estático A tabela contém dois Retângulos arredondados enquanto os outros elementos são todos campos (fields) Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 30 15

Definição da fonte de dados Para a criação do relatório, é preciso obter acesso aos metadados de uma fonte de dados. Para isso, é necessário definir essa fonte. Os metadados da fonte são usados na definição do layout do relatório. O ireport provê suporte a diversas fontes de dados: JDBC, Hibernate, etc. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 31 Fonte de dados via JDBC Configure a conexão testar se a conexão foi configurada corretamente. Clique em Save para salvar a conexão. Para alterar a configuração da conexão, clique no botão "Modify" da janela "Connections/Datasources" Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 32 16

Definir a consulta do relatório Após a definição da fonte de dados, devemos definir a consulta do relatório. Essa consulta tem os seguintes objetivos: apresentar ao ireport os metadados; permitir testar o relatório com informações provenientes da fonte de dados. Para definir a consulta, obtenha acesso à opção Dados Consulta do Relatório na barra de menus do ireport. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 33 Desenhar o relatório Após a definição da consulta, os campos do resultado da consulta ficam disponíveis para desenhar o relatório. Veja a janela Library Expanda a pasta Campos Arraste os campos desejados para a seção adequada do relatório (normalmente essa seção é a details ) Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 34 17

Compilar o relatório Após o desenho do relatório, devemos compilá-lo. Esse processo corresponde a gerar uma representação em formato binário do relatório. Resultado da compilação é um arquivo com a extensão.jasper. É essa representação que usamos com o JasperReport para preencher o relatório. Para compilar o relatório, use a opção Criar Compilar na barra de menus do ireport. Há também um ícone na barra de ícones. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 35 Compilar o relatório O detail é a banda onde os valores dos campos são apresentados. Por exemplo, Eduardo Bezerra, 12:00h, 18:00h, 06 horas Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 36 18

FPSW-Java Preencher e Visualizar o Relatório Relatórios Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 37 Preencher o relatório Classe JasperFillManager Principal método: fillreport (estático) Retorna objeto JasperPrint Assinatura: JasperPrint fillreport( String sourcefilename, HashMap parameters, Connection connection); Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 38 19

Preencher o relatório (cont.) Parâmetros de fillreport: String sourcefilename: corresponde ao nome do relatório compilado (.jasper). HashMap parameters: lista de parâmetros do relatório (e.g., título, data, sessão) Connection connection: conexão (JDBC) com a fonte de dados utilizada para preencher o relatório. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 39 Exportar o relatório JasperExportManager Classe útil quando queremos exportar o relatório para diversos formatos. Exemplos: JasperExportManager.exportReportToHtmlFile( print, "hello.html"); JasperExportManager.exportReportToPdfFile( print, "hello.pdf"); JasperExportManager.exportReportToXmlFile( print, "hello.xml", false); Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 40 20

Visualizar o relatório JasperViewer Classe útil para visualização do relatório. O visualizador utilizado é do próprio Jasper O método viewreport (estático) é usado para apresentar o relatório no visualizador. Assinatura: JasperViewer.viewReport( JasperPrint jasperprint, boolean isexitonclose) Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 41 Recursos relevantes http://jasperreports.sourceforge.net/ http://jasperforge.org/sf/projects/ireport http://www.jfreechart.org/ http://www.javafree.org/javabb/viewtopic.jbb?t=3154 Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 42 21

FPSW-Java JFreeChart Relatórios Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 43 O que é JFreeChart? JFreeChart é uma biblioteca livre para a Java utilizada em Aplicações Desktop, Applets, Servlets e JSP. http://www.jfree.org/jfreechart/index.html Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 44 22

O que é JFreeChart? JFreechart pode ser usado para gerar gráficos de Pizza, gráficos de Barra, gráficos de linha (com ou sem efeito 3D), gráficos combinados, dentre diversos outros tipos de gráficos. Exporta dados para o formato PNG ou JPEG, Exporta para qualquer formato usando a implementação de Graphics2D incluindo: PDF via itext (http://www.lowagie.com/itext/); SVG via Batik (http://xml.apache.org/batik/); Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 45 Usando JFreeChart Os.jar s do JFreeChart são jcommon-1.0.12.jar e jfreechart-1.0.9.jar devem ser adicionados ao lib do projeto. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 46 23

JFreeChart -> IReport Para anexar os gráficos do JFreeChart ao IReport é preciso instalar o plugin-netbeans do IReport. 1209691533171 ireport-nb-0.9.1.2.nbm Gerando os Gráficos Primeiramente, vamos criar as classes ModeloGraficoItem que armazenará os dados que darão origem ao gráfico e ComposicaoDadosItemGrafico que gerará valores arbitrários que serão exibidos no gráfico: ModeloGraficoItem.java ComposicaoDadosItemGrafico.java Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 47 Criando modelo no IReport No IReport criamos um formulario para receber: Os dados que geraram o gráfico apresentados em forma de listagem; A imagem do gráfico; O relatório contém 3 fields para receber os valores que darão origem ao gráfico. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 48 24

Modelo no IReport -> JFreeChart Nesta mesma tela, na aba Parameters vamos criar o parâmetro que irá receber a imagem. Observe que este parâmetro deve ser do tipo java.lang.object: Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 49 Modelo no IReport -> JFreeChart Para mostrar a imagem do gráfico vamos criar um campo na banda Sumary com a ferramenta ImageTools que receberá um objeto imagem por parâmetro: Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 50 25

Modelo no IReport -> JFreeChart A montagem final do Modelo ficou assim (salvo com o nome de ModeloGrafico):. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 51 Modelo no IReport -> JFreeChart A aplicação devera ter uma classe cujas funcoes são: Receber os valores gerados pela classe ComposicaoDadosItemGrafico; Chamar a classe GeradorGrafico para criar um gráfico a partir dos da dados recebidos; Chamar o ModeloGrafico.jasper exibindo o relatório em formato PDF em uma janela do browser. Para criar a imagem do gráfico vamos usar a classe BufferedImage que será o objeto adicionado ao parâmetro. BufferedImage imagem = GeradorGrafico.gerarGraficoLinha3D("Titulo", "Mes", "Quantidade", array); A classe HashMap de java.util é usada para passar os parâmetros para o relatório: HashMap params = new HashMap(); params.put("imagem", imagem); Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 52 26

Modelo no IReport -> JFreeChart // A String pathjasper garda o caminho para o relatório compilado ModeloGrafico.jasper localizado na subpasta //relatorio/grafico String pathjasper = "/TesteGrafico.jasper"; JRDataSource jrdatasourse = new JRBeanArrayDataSource(array.toArray()); Jasper Print impressao = JasperFillManager.fillReport(pathJasper, params, jrdatasourse); JasperExportManager.exportReportToPdf(impressao, ModeloGrafico.pdf");); Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 53 Modelo no IReport -> JFreeChart A montagem final do Modelo ficou assim (salvo com o nome de ModeloGrafico):. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 54 27

Modelo no IReport -> JFreeChart Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 55 Modelo no IReport -> JFreeChart JFreeChart pode ser usada juntamente com ireport / JasperReports criando relatórios mais completos usando também recursos de criação de gráficos. Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 56 28

Fonte de dados via Hibernate Configure o classpath (Options->classpath). Em particular, todos os itens a seguir devem estar disponíveis ao ireport: arquivos de mapeamento (.hbm.xml) arquivos das classes persistentes (.class) arquivo de configuração do Hibernate driver JDBC do SGBD a que ser quer ter acesso Após a configuração do classpath, configure a conexão (análoga à configuração via JDBC) Maio 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 57 29