Relatórios Marco Antonio Software Architect Agosto - 2008.

35
Relatórios Marco Antonio Software Architect Agosto - 2008

Transcript of Relatórios Marco Antonio Software Architect Agosto - 2008.

Page 1: Relatórios Marco Antonio Software Architect Agosto - 2008.

RelatóriosMarco AntonioSoftware ArchitectAgosto - 2008

Page 2: Relatórios Marco Antonio Software Architect Agosto - 2008.

Introdução• JasperReport

– Framework java para relatórios com grande habilidade na organização e apresentação de conteúdo, permitindo a geração dinâmica de relatórios em diversos formatos (pdf, html, xls, csv e xml).

• iReport– Interface gráfica para o Jasper.

Page 3: Relatórios Marco Antonio Software Architect Agosto - 2008.

Tela inicial

Page 4: Relatórios Marco Antonio Software Architect Agosto - 2008.

Criando um novo relatório• Menu Arquivo -> Novo...• Ou Ctrl + N

Page 5: Relatórios Marco Antonio Software Architect Agosto - 2008.

Propriedades do relatório• Configuração dos

dados do relatório

Page 6: Relatórios Marco Antonio Software Architect Agosto - 2008.

Codificação• Altere para ISO-

8859-1

Page 7: Relatórios Marco Antonio Software Architect Agosto - 2008.

Design do relatório• Observe as

barras de ferramenta disponíveis

Page 8: Relatórios Marco Antonio Software Architect Agosto - 2008.

Classpath • Nosso relatório deve ter

acesso à classe EmpresaAerea.

• Esse tipo de acesso é configurado através do classpath.

Page 9: Relatórios Marco Antonio Software Architect Agosto - 2008.

Diretório de classes• Procure o

diretório build/classes dentro de sua aplicação.

• É onde ficam as classes compiladas.

Page 10: Relatórios Marco Antonio Software Architect Agosto - 2008.

Campos do relatório• Acesse o menu -> Data -> Query do

Relatório.

Page 11: Relatórios Marco Antonio Software Architect Agosto - 2008.

Campos do relatório• Clique no

botão “Ler Atributos”.

Page 12: Relatórios Marco Antonio Software Architect Agosto - 2008.

Campos do relatório• Esses serão os

campos disponíveis para visualização no relatório

Page 13: Relatórios Marco Antonio Software Architect Agosto - 2008.

Estrutura do documento• Navegue pela estrutura do

documento e veja quais os dados disponíveis para o relatório.

Page 14: Relatórios Marco Antonio Software Architect Agosto - 2008.

Design do relatório

• Acrescente um texto estático com o título do relatório, bem como os nomes das colunas.

• Arraste os campos referentes a nomeFantasia e razaoSocial para o relatório.

Page 15: Relatórios Marco Antonio Software Architect Agosto - 2008.

Design do relatório

Page 16: Relatórios Marco Antonio Software Architect Agosto - 2008.

Propriedades do campo texto• Selecione as propriedade do título do

relatório com o botão direito e altere os dados da fonte.

Page 17: Relatórios Marco Antonio Software Architect Agosto - 2008.

Salve o arquivo• Crie o diretório

relatorios dentro de WEB-INF.

Page 18: Relatórios Marco Antonio Software Architect Agosto - 2008.

Opções • No menu Opções ->

Opções altere a opção conforme a figura.

Page 19: Relatórios Marco Antonio Software Architect Agosto - 2008.

Compilação do relatório• Veja na barra de ferramentas o ícone

de compilação.• A partir desse momento o diretório está

pronto para ser acessado pela aplicação.

Page 20: Relatórios Marco Antonio Software Architect Agosto - 2008.

Outros campos• Crie mais um campo texto para a data.• Com o botão direito escolha “Edit

Expression”.

Page 21: Relatórios Marco Antonio Software Architect Agosto - 2008.

Expressões • Com o editor de

expressões podemos escrever código java nativo, utilizando qualquer classe disponível.

Page 22: Relatórios Marco Antonio Software Architect Agosto - 2008.

Campos do relatório

Page 23: Relatórios Marco Antonio Software Architect Agosto - 2008.

Campos• Colunas do banco de dados disponíveis

para o relatório.

Page 24: Relatórios Marco Antonio Software Architect Agosto - 2008.

Variáveis pré-definidas• Principais contadores disponíveis.

Page 25: Relatórios Marco Antonio Software Architect Agosto - 2008.

Parâmetros• Existe a possibilidade de enviar dados

isolados da aplicação para o relatório através de parâmetros.

Page 26: Relatórios Marco Antonio Software Architect Agosto - 2008.

Novo parâmetro• Para exemplificar, vamos

criar o parâmetro NomeDoSistema.

Page 27: Relatórios Marco Antonio Software Architect Agosto - 2008.

Design final do relatório

Page 28: Relatórios Marco Antonio Software Architect Agosto - 2008.

Libs do projeto• Commons-javaflow• iReport• iText• Jasperreports• Jcommon• Jfreechart

Page 29: Relatórios Marco Antonio Software Architect Agosto - 2008.

Teste do relatóriopackage net.sca.entidades.teste;

import java.io.*;import java.util.*;

import net.sca.persistencia.*;import net.sf.jasperreports.engine.*;import net.sf.jasperreports.engine.data.*;

public class TesteRelatorioEmpresa { public static void main(String[] args) { try {(1) FileInputStream input = new FileInputStream( "C:/Sistemas/workspace_javaweb/SistemaDeControleAereo/WebContent/WEB-INF/relatorios/RelatorioDeEmpresas.jasper");(2) FileOutputStream saida = new FileOutputStream("c:/RelatorioDeEmpresas.pdf");(3) JRDataSource dados = new JRBeanCollectionDataSource(new DAOEmpresaAerea().consultarTodos());(4) Map mapaDeParametros = new HashMap(); mapaDeParametros.put("NomeDoSistema", "Sistema de Controle Aéreo");(5) JasperRunManager.runReportToPdfStream(input, saida, mapaDeParametros, dados); System.out.println("Relatório gravado com sucesso"); } catch (Exception e) { e.printStackTrace(); } }}

Page 30: Relatórios Marco Antonio Software Architect Agosto - 2008.

Detalhamento 1. Abre o arquivo do relatório.

2. Cria o arquivo de saída, no exemplo, um pdf.

3. Fonte de dados, fornecida pelo DAO através de uma coleção de objetos.

4. Mapa com parâmetros do relatório.

5. Monta o relatório com dados do DAO, e grava no arquivo de saída.

Page 31: Relatórios Marco Antonio Software Architect Agosto - 2008.
Page 32: Relatórios Marco Antonio Software Architect Agosto - 2008.

GeradorDeRelatoriopackage com.sistemabancario.entidades;

import java.io.*;import java.util.*;

import javax.faces.context.*;import javax.servlet.*;

import net.sca.persistencia.*;import net.sf.jasperreports.engine.*;import net.sf.jasperreports.engine.data.*;

public class GeradorDeRelatorio { public void executaRelatorio(String nomeDoRelatorio, OutputStream saida) { try {

Page 33: Relatórios Marco Antonio Software Architect Agosto - 2008.

GeradorDeRelatorio(1) ExternalContext e = FacesContext.getCurrentInstance().getExternalContext(); ServletContext s = (ServletContext) e.getContext(); String diretorioDosRelatorios = s.getRealPath("/WEB-INF/relatorios");(2) InputStream entrada = new FileInputStream(diretorioDosRelatorios + "/" +

nomeDoRelatorio);(3) Map mapaDeParametros = new HashMap(); mapaDeParametros.put("NomeDoSistema", "Sistema de Controle Aéreo");(4) JRDataSource dados = new JRBeanCollectionDataSource(new DAOEmpresaAerea() .consultarTodos());(5) JasperRunManager.runReportToPdfStream(entrada, saida, mapaDeParametros, dados); } catch (Exception e) { e.printStackTrace(); } }}

Page 34: Relatórios Marco Antonio Software Architect Agosto - 2008.

Detalhamento 1. Recupera dados do contexto da aplicação, no

caso, o diretório.2. Abre o arquivo do relatorio

(RelatorioDeEmpresas.jasper) que está no diretório WEB-INF.

3. Mapa com parâmetros a serem passados aos relatório.

4. Fonte de dados, coleção de objetos que serão exibidos no relatório.

5. Mostra o relatório no browser do cliente.

Page 35: Relatórios Marco Antonio Software Architect Agosto - 2008.

VisualizadorRelatorioDeEmpresas.jsp<%@page import="com.sistemabancario.entidades.GeradorDeRelatorio;"%><% try { out.clear(); GeradorDeRelatorio gerador = new GeradorDeRelatorio(); ServletOutputStream output = response.getOutputStream(); response.setContentType("application/pdf"); response.addHeader("Content-Disposition", "Inline;"); gerador.executaRelatorio("RelatorioDeEmpresas.jasper", output); output.flush(); output.close(); } catch (Exception e) { e.printStackTrace(); }%>