Ferramentas gráficas e relatórios Aula 1 Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com) O silêncio é de ouro e muitas vezes é resposta.
Sumário 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
Siglas e acrônimos RAD Rapid Application Development;
Introdução
O que a disciplina abrange 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 não abrange Funcionalidades específicas da web; Recursos específicos de persistência;
O que é um relatório? 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? 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.
Ferramentas de geração de relatórios Report Services; Crystal Reports; Eclipse Birt (Business Inteligence and Report Tools); JasperReports & Ireport; Rave Reports; Quick Report; Etc.. Etc..
Gerador de relatórios escrito em 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.
Relatórios com 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/
O JasperReports é: 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).
JasperReports 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.
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..
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
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
Opções de entrada de dados net.sf.jasperreports.engine.jrdatasource JRBeanArrayDataSource JRBeanCollectionDataSource JRResultSetDataSource java.sql.connection <querystring><![cdata[select * from produtos]></querystring>
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;
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
JasperReports
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
Exportar o relatório para outros formatos A interface JRExporter é responsável por exportar um JasperPrint para outros formatos. Implementações: JRPdfExporter; JExcelApiExporter; JRHtmlExporter; JRRtfExporter; JROdtExporter; JRCsvExporter Projeto RelatoriosJasperDesktop Classe ExportarRelatorio.java
JasperReports em aplicações Web Projeto RelatoriosJasperWeb Classe RelatorioServlet.java
ireport JasperReports é uma engine poderosa, porém criar relatórios manipulando diretamente arquivos.xml é um suicídio; Qual é a solução?
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;
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..
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;
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.
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.
Ireport criar conexão
Ireport criação de relatórios com o uso do assistente
Ireport criação de relatórios com o uso do assistente
Ireport criação de relatórios com o uso do assistente
Ireport alterar visualizador de relatórios e XML
Gerar o relatório por uma aplicação Projeto RelatoriosiReportDesktop Classe RelatorioAssistente.java
Passagem de parâmetros Projeto RelatoriosiReportDesktop Classe RelatorioParametros.java
Exercício para 12/11 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.
Referências bibliográficas [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