38
Ferramentas gráficas e relatórios Aula 1 Carlos Eduardo de Carvalho Dantas ([email protected] ) “O silêncio é de ouro e muitas vezes é resposta.”

Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Embed Size (px)

Citation preview

Page 1: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Ferramentas gráficas e relatórios

Aula 1

Carlos Eduardo de Carvalho Dantas

([email protected])

“O silêncio é de ouro e muitas vezes é resposta.”

Page 2: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Introdução;

Relatórios com Java;

JasperReports;

Ireport;

Criação de relatórios com o uso do assistente;

Passagem de parâmetros;

Exportando para outros formatos

Sumário

Page 3: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

RAD → Rapid Application Development;

Siglas e acrônimos

Page 4: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Introdução

Page 5: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Criação de relatórios com iReport & JasperReports;

Uso de servidores de relatórios (JasperServer);

Utilização de gráficos (JfreeChart);

Recursos do Java 2d;

Projeto integrador envolvendo

conteúdos de outras disciplinas

O que a disciplina abrange

Page 6: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Funcionalidades específicas da web;

Recursos específicos de persistência;

O que a disciplina não abrange

Page 7: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Uma maneira agradável de apresentar os dados vindos de alguma base de informação com sua aparência formatada.

Formatação padronizada para impressão, tirar conclusões, analisar resultados.

O que é um relatório?

Page 8: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Desenvolvedores habituaram-se a contar com geradores de relatórios visuais em seus ambientes de desenvolvimento RAD;

A maioria dos geradores de relatórios populares são aplicações independentes escritas em C, em muitos dos casos suportando apenas a plataforma Windows;

Desenvolver Relatórios é uma rotina comum

para o desenvolvedor;

O sucesso de cada ferramenta de relatório dependia da integração com uma determinada plataforma.

O que é um relatório?

Page 9: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Report Services;

Crystal Reports;

Eclipse Birt (Business Inteligence and Report Tools);

JasperReports & Ireport;

Rave Reports;

Quick Report;

Etc.. Etc..

Ferramentas de geração de relatórios

Page 10: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Portabilidade;

Possibilidade de usar como fonte de dados coleções de objetos Java recuperadas via EJBs, Hibernate, JAXB ou web services;

Fácil interação com objetos Java.

Gerador de relatórios escrito em Java

Page 11: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Com Java e sua nova cultura Open Source, bem poucas ferramentas de relatórios se destacavam neste cenário;

Em 2001 nasce o JasperReports, criado por Teodor Danciu;

A versão atual é a 4.1.3 e o download pode ser realizado em:

http://sourceforge.net/projects/jasperreports/files/

Relatórios com Java

Page 12: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Um poderoso Framework Open Source para geração de relatórios multiplataforma;

Escrito em Java (portabilidade);

Permite a geração dinâmica de relatórios em diversos formatos, como PDF, HTML, XLS, CSV e XML;

Possui uma pré-visualização em Swing (JasperViewer);

Pode ser utilizada em praticamente qualquer aplicação Java, incluindo aplicações desktop ou Web;

Escrito na forma de um documento XML (extensão .jrxml).

O JasperReports é:

Page 13: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Com JasperReports, o ciclo de vida de um relatório é parecido com o de uma classe Java:

1 - Em Java:

Código fonte descrito em um arquivo .java de acordo com as regras de sintaxe da linguagem;

O código é compilado gerando um arquivo .class;

Quando usado, o arquivo .class é carregado para a memória e instanciado pelo interpretador Java e durante a execução, os atributos serão instanciados.

JasperReports

Page 14: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

No JasperReports...

O relatório é codificado em xml, usando tags e atributos definidos em jasperreports.dtd;

No arquivo criado .jrxml está descrita a estrutura do relatório: posição dos textos, imagens, formas geométricas, como recuperar dados necessários, cálculos de totalização, quais parâmetros devem ser passados, etc..

Page 15: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

No JasperReports...

O arquivo .jrxml é compilado, gerando um arquivo com extensão .jasper (classe java compilada), sendo representado por um objeto da classe JasperReport;

O arquivo .jasper também é conhecido como um relatório ”pré-definido”

Page 16: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

No JasperReports...

É necessário uma fonte de dados para produzir os dados a serem exibidos;

A fonte de dados pode ser um datasource ou uma conexão ao banco de dados e uma query sql

Page 17: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Opções de entrada de dados

net.sf.jasperreports.engine.JRDataSource

JRBeanArrayDataSource

JRBeanCollectionDataSource

JRResultSetDataSource

java.sql.Connection

<queryString><![CDATA[SELECT * from produtos]></queryString>

Page 18: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

No JasperReports...

Neste passo é possível enviar um objeto Map com alguns parâmetros. O jasper será linkado com os parâmetros e com o datasource ou conexão;

O resultado é um objeto da classe JasperPrint, que pode ser serializado com extensão .jrprint;

O objeto JasperPrint é o relatório final;

Page 19: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

No JasperReports...

O objeto final JasperPrint pode:

Ser visualizado diretamente por um aplicativo swing chamado JasperViewer (que vem embutido no JasperReports);

Ser exportado para outros formatos

Page 20: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

JasperReports

Page 21: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Classes

JasperDesign → Representa a definição do relatório. A partir do template XML é criado um JasperDesign;

JasperReport → Representa o JasperDesign compilado. O processo de compilação verifica o design do relatório e compila o design em um objeto JasperReport;

JasperPrint → Representa o relatório gerado. É criado um JasperPrint a partir de um JasperReport, contendo o relatório preenchido.

Projeto RelatoriosJasperDesktop

Classe RelatorioResultSet.java

Page 22: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Exportar o relatório para outros formatosA interface JRExporter é responsável por exportar um JasperPrint para outros formatos. Implementações:

JRPdfExporter;

JExcelApiExporter;

JRHtmlExporter;

JRRtfExporter;

JROdtExporter;

JRCsvExporter

Projeto RelatoriosJasperDesktop

Classe ExportarRelatorio.java

Page 23: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

JasperReports em aplicações Web

Projeto RelatoriosJasperWeb

Classe RelatorioServlet.java

Page 24: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

iReport

JasperReports é uma engine poderosa, porém criar relatórios manipulando diretamente arquivos .xml é um suicídio;

Qual é a solução?

Page 25: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

iReport

Programa Open Source, capaz de criar visualmente os mais complexos relatórios para aplicações Java dentro dos limites do JasperReports;

Escrito em Java = 100% multiplataforma;

Desenhador visual de relatórios, gerando os arquivos .jrxml e .jasper;

Facilita testes e criação de layout;

Código fonte distribuído gratuitamente pela licença GNU;

Page 26: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

iReport

Suporte a 100% das tags XML do JasperReports;

Editor WYSIWYG para criação de relatórios;

Suporte a qualquer bando de dados acessível pela ponte JDBC;

Assistente para criar relatórios rapidamente;

Suporte para modelos de documentos (templates);

Suporte a Gráficos;

Bibliotecas de Estilos, etc..

Page 27: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Ireport - benefícios

Simplificação considerável dos processos abaixo:

1 – Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java Beans Query Language);

2 - Sub-Relatórios;

3 - Relatórios com Gráficos (JFreeChart);

4 - Crosstab;

Page 28: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

iReport

Em 9 de Outubro de 2002, Giulio Toffoli lança o iReport;

Em 2005, a JasperSoft, que é a mantenedora do JasperReports tornou esta ferramenta oficial na construção de relatórios para JasperReports;

Em 2007 o JasperReports e o IReport chegaram juntos à sua segunda versão;

Em 30 de maio de 2008 foi disponibilizado a terceira versão do IReport e do JasperReports;

Em 2008 o iReport passou a oferecer um plugin para o NetBeans.

Page 29: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Ireport - curiosidades Quando o iReport executa pela primeira vez, cria

configurações regionais através da pasta C:\Documents and Settings\usuario\.iReport;

No diretório \ireport\modules\ext do iReport, repare nas libs que estão no diretório, como hibernate3.jar. Neste caso, repare que qualquer framework em que o iReport comunica, as libs já estão no próprio iReport facilitando o uso. Veremos uma amostra disso ao configurar uma conexão com o Banco de Dados;

Em alguns casos, devido à localização de alguns arquivos, quando o iReport é fechado e aberto novamente, os “Recent Files” na opção de menu File não os exibe. O erro ocorre porque o caminho pode conter caracteres que são inválidos no formato UTF-8, formato padrão do iReport.

Page 30: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Ireport – criar conexão

Page 31: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Ireport – criação de relatórios com o uso do assistente

Page 32: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Ireport – criação de relatórios com o uso do assistente

Page 33: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Ireport – criação de relatórios com o uso do assistente

Page 34: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Ireport – alterar visualizador de relatórios e XML

Page 35: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Gerar o relatório por uma aplicação

Projeto RelatoriosiReportDesktop

Classe RelatorioAssistente.java

Page 36: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Passagem de parâmetros

Projeto RelatoriosiReportDesktop

Classe RelatorioParametros.java

Page 37: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

Retomar o projeto entregue na disciplina Persistência com Jdbc e Jpa, adaptá-lo a uma aplicação web e criar relatórios para suas respectivas entidades, aplicando parâmetros e exportando para pdf.

Exercício para 12/11

Page 38: Aula 1 · 2011-11-15 · Introdução; Relatórios com ... conexão ao banco de dados e uma query sql. ... Consultas em çinguagem SQL ou HQL do Hibernate e EJB QL (Enterprise Java

[1] “Dominando Relatórios JasperReports com IReport”; Edson Gonçalves; Editora Ciência Moderna; 2008;

[2] iReport 3.7; Shamsuddin Ahammad; 2010;

[3] “The definitive Guide to JasperReports”; Teodor Danciou and Lucian Chirita.

[4] “The definitive Guide to iReport”; Giulio Toffoli.

[5] “Artigo Jasper Reports & IReport – GUJ (www.guj.com.br);

[6] Artigo Jasper Reports & Ireport “JavaMagazine”; ed 37

Referências bibliográficas