21
JAVA® gerando relatórios no IReport com banco de dados Firebird Fábio P. Santos www.chavesecreta.com.br [email protected] [email protected]

Apresentação palestra ireport

  • Upload
    fpsgyn

  • View
    2.529

  • Download
    4

Embed Size (px)

DESCRIPTION

Palestra de iReport, apresentada na FANAP

Citation preview

Page 1: Apresentação palestra ireport

JAVA® gerando relatórios no IReport

com banco de dados Firebird

Fábio P. Santos – [email protected]@gmail.com

Page 2: Apresentação palestra ireport

JasperReports

É uma biblioteca escrita inteiramente em JAVA que permite definir a criação de relatórios,

submetendo-o a uma fonte de dados.

A definição é feita em XML e pode ser editada manualmente.

O arquivo XML é compilado em um arquivo .jasper que é um arquivo .class normal com a extensãomodificada. As expressões Java existentes dentro do XML serão verificadas em tempo de compilação.

Este arquivo é depois executado contra uma fonte de dados, que na maioria dos casos é um bancode dados, ou fonte de dados compatível.

A biblioteca pode ser usada para visualizar o relatório em tela ou gerar um arquivo, PDF, porexemplo.

Estas características junto com a facilidade de utilização e custo (open source) faz do JasperReportsuma biblioteca de geração de relatório em JAVA completa.

Page 3: Apresentação palestra ireport

iReport

O iReport é uma ferramenta livre de desenho para o JasperReports. Cria desenhos sofisticados comgráficos, imagens, tabelas de referência cruzada e muito mais.

Acessa dados através de JDBC, TableModels, JavaBeans, XML, Hibernate, CSV.

Possibilita a publicação dos relatórios em PDF, XML, CSV, HTML, XHTML, textos, DOC, DOCX,OpenOffice.

O JasperReports suporta vários tipos de datasources (fonte de dados) através deuma interface específica chamada JRDataSource.

Há uma implementação padrão desta interface para objetos ResultSet, chamadaJRResultSetDataSource.

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.

Page 4: Apresentação palestra ireport

JasperForge

É um site de desenvolvimento open source para projetos comunitários e aplicações de BusinessIntelligence.

http://jasperforge.org/

http://sourceforge.net/

Page 5: Apresentação palestra ireport

Conheça o Firebird

História

O Firebird é derivado do código do Borland InterBase 6.0. Ele tem o código aberto e não possuilicença dupla, portanto você pode utilizá-lo em qualquer tipo de aplicação, seja ela comercial ou não,sem pagar nada por isso - é totalmente GRATUITO!

A tecnologia usada no Firebird tem mais de 20 anos, fazendo com que ele seja um produtomuito maduro eestável.

Principais Recursos

Suporte total a Stored Procedures e Triggers

Transações compatíveis com ACID (atomicidade, Consistência, Isolamento e Durabilidade)

Integridade Referencial

Multi Generational Architecture

Consome poucos recursos de processamento

Linguagem nativa para Stored Procedures e Triggers (PSQL)

Suporte para Funções Externas (UDFs)

Praticamente não necessita de DBAs especializados

Quase nenhuma configuração - instale e já comece a usar!

Grande comunidade de usuários e vários lugares para se obter suporte gratuito

Page 6: Apresentação palestra ireport

Conheça o Firebird

Versão embedded do SGBD - perfeita para criação de catálogos em CDROM, aplicações"demo" ou standalone

Dezenas de ferramentas de terceiros, incluindo aplicações gráficas de administração,replicação, etc.

Careful writes - recuperação rápida, dispensa o uso de log de transações!

Diversas formas de acesso ao banco de dados: nativo/API, dbExpress, ODBC, OLEDB, .Netprovider, JDBC nativo tipo 4, Python module, PHP, Perl, etc.

Suporte nativo para os maiores sistemas operacionais, incluindo o Windows, Linux,Solaris, MacOS.

Backups incrementais

Builds de 64bits disponíveis

Total controle de cursores em PSQL

Tabelas de Monitoramento

Triggers de conexão e transação

Tabelas temporárias

TraceAPI - saiba o que está acontecendo no servidor

www.firebirdsql.org

www.firebirdnews.org

Page 7: Apresentação palestra ireport

JDBC Driver

Page 8: Apresentação palestra ireport

JDBC - Especificação

Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java quefazem o envio de instruções SQL para qualquer banco de dados relacional.

A API encapsula:

1. o estabelecimento da conexão com o BD

2. o envio de comandos SQL

3. o processamento dos resultados

Page 9: Apresentação palestra ireport

JDBC - Tipos

Tipo 1: Ponte JDBC-ODBC

É o tipo mais simples mas restrito à plataforma Windows. Utiliza ODBC para conectar-se com o bancode dados, convertendo métodos JDBC em chamadas às funções do ODBC. Esta ponte é normalmenteusada quando não há um driver puro-Java (tipo 4) para determinado banco de dados, pois seu uso édesencorajado devido à dependência de plataforma.

Tipo 2: Driver API-Nativo

O driver API-Nativo traduz as chamadas JDBC para as chamadas da API cliente do banco de dadosusado. Como a Ponte JDBC-ODBC, pode precisar de software extra instalado na máquina cliente.

Tipo 3: Driver de Protocolo de Rede

Traduz a chamada JDBC para um protocolo de rede independente do banco de dados utilizado, que étraduzido para o protocolo do banco de dados por um servidor. Por utilizar um protocoloindependente, pode conectar as aplicações clientes Java a vários bancos de dados diferentes. É omodelo mais flexível.

Tipo 4: Driver nativo

Converte as chamadas JDBC diretamente no protocolo do banco de dados. Implementado em Java,normalmente é independente de plataforma e escrito pelos próprios desenvolvedores. É o tipo maisrecomendado para ser usado.

Page 10: Apresentação palestra ireport

JDBC - Carga

Class.forName(“org.firebirdsql.jdbc.FBDriver”);

Class.forName(“com.mysql.jdbc.Driver”);

O Class Loader tenta inicializar esta classe. Esta classe (que é o nosso driver jdbc) possui um blocoinicializador estático, que irá registrar essa classe como um driver JDBC, avisandoo java.sql.DriverManager, pelo método registerDriver.

Connection conn = DriverManager.getConnection(........;

Desta vez, o java.sql.DriverManager vai perguntar para cada Driver registrado, se ele aceita a Stringde conexão em questão. Se algum deles aceita esta String, a conexão é aberta (pelo Driver), eretornada. Caso contrário, uma exceção é lançada. Pela própria String de conexão, você pode passarmuitos outros parâmetros (além de login, senha e nome do banco de dados), a maioria de interessedo Driver, como por exemplo saber se aquela conexão deve estar em modo de auto reconexão casoela caia, e muitos outros. Este tipo de informação está na documentação seu driver.

Page 11: Apresentação palestra ireport

JDBC – Conexão

Connection connFirebird = null;

Connection connMySql = null;

String host = “localhost”;

Firebird

String portaFirebird = “3050”;

String databasePrefixFirebird = “jdbc:firebirdsql:”;

String dbNameFirebird = “d:/localidades.fdb”;

String driverFirebird = “org.firebirdsql.jdbc.FBDriver”;

String userNameFirebird = “SYSDBA”;

String passwordFirebird = “masterkey”;

MySql

String portaMySql = “3306”;

String databasePrefixMySql = “jdbc:mysql:”;

String dbNameMySql = “localidades”;

String driverMySql = “com.mysql.jdbc.Driver”;

String userNameMySql = “root”;

String passwordMySql = “root”;

Page 12: Apresentação palestra ireport

JDBC – Conexão

try {

Class.forName(driverFirebird).newInstance();

Class.forName(driverMysql).newInstance();

String urlFirebird = databasePrefixFirebird + host + "/" + portaFirebird + ":" + dbNameFirebird;

String urlMySql = databasePrefixMySql+"//"+host+":"+portaMySql+"/";

connFirebird = DriverManager.getConnection(urlFirebird,userNameFirebird,passwordFirebird);

connMySql = DriverManager.getConnection(urlMySql+dbNameMySql,userNameMySql,passwordMySql);

System.out.println("Conectado ao banco Firebird ou MySql");

connFirebird.close();

conn.MySql.Close();

System.out.println("Desconectado do banco Firebird ou MySql");

} catch (Exception e) {

e.printStackTrace();

}

Page 13: Apresentação palestra ireport

JDBC – Driver

Firebird = http://www.firebirdsql.org/index.php?op=devel&sub=jdbc

MySQL = http://dev.mysql.com/downloads/connector/j/

Oracle = http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html

PostgreSQL = http://jdbc.postgresql.org/

Page 14: Apresentação palestra ireport

Estrutura de um Relatório

Page 15: Apresentação palestra ireport

Estrutura de um Relatório

Title (Título) – É a primeira band visível na construção de um relatório vazio. Esta seção só apareceuma vez no começo do relatório.

Page Header (cabeçalho da página) – Esta seção aparece no começo de cada página impressa.

Column Header (cabeçalho da coluna) – Esta seção só aparece no começo de cada interação com aband detail.

Detail (detalhe) – Esta band é o local de exibição dos dados de um objeto datasource ou query. Estaseção se repete enquanto houver linhas para serem colocadas no seu relatório de acordo com oresultado transmitido.

Column Footer (rodapé da coluna) – Esta seção aparece abaixo de cada coluna. Análogo ao ColumnHeader.

Page Footer (rodapé da página) – Representa o rodapé da página. Esta seção aparece no final decada página.

Summary (sumário/resumo) – Rodapé do relatório, só aparece uma vez ao término do relatório.

Obs.: As bands Title e Summary não são inclusas no cabeçalho da página quando impressa em umapágina separada.

Page 16: Apresentação palestra ireport

Campos, Parâmetros

Campos (Fields) são “áreas específicas” que receberão diretamente os dados das respectivas colunasreferenciadas. Por exemplo, para os dados da coluna Nome do tipo VARCHAR, da tabela Cliente,serem mapeados para o relatório, um campo Nome deve ser definido no arquivo XML da seguinteforma: <field name=“Nome” class=“java.lang.String”/>

Parâmetros são dados passados para a operação de preenchimento, que não podem serencontrados normalmente na fonte de dados. São declarados, por exemplo, da seguinte forma:

<parameter name=”TituloDoRelatorio” class=”java.lang.String”/>

E passados via código Java, através da classe HashMap:

Map parametros = new HashMap( );

parametros.put( “Nome”, “Aluno da FANAP” );

Outra importante utilização de parâmetros é na query do relatório. Por exemplo:

Select * FROM CLIENTE WHERE CLIENTE=$P{Cliente}

Page 17: Apresentação palestra ireport

Variáveis

Variáveis são utilizadas para armazenar resultados temporários necessários para geração dorelatório. Elas podem referenciar tipos internos de cálculos, como contagem (count), soma (sum),média (average), menor (lowest), maior (highest), etc.

Por exemplo, o cálculo do valor total da compra:

<variable name=“ValorTotalCompraSum” class=“java.lang.Double” calculation=“Sum”>

<variable expression>

${ValorProduto}

</variable expression>

</variable>

Existem também variáveis internas da ferramenta, com nomes “auto-explicativos”, prontas para o usonas expressões: PAGE_NUMBER, COLUMN_NUMBER, REPORT_COUNT, PAGE_COUNT,COLUMN_COUNT.

Page 18: Apresentação palestra ireport

Expressões

Expressões (Expressions) são utilizadas para especificar o conteúdo de campos de texto, narealização de cálculos frequentes, por exemplo.

Todas elas são expressões Java que podem conter em sua sintaxe:

1. campos: acessado com $F{nome}

2. parâmetros: acessado com $P{nome}

3. 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>

Page 19: Apresentação palestra ireport

Mãos na Massa

ireport.chavesecreta.com.br

Page 20: Apresentação palestra ireport

Perguntas

Page 21: Apresentação palestra ireport

Agradecimentos

Fábio P. Santos – [email protected]

http://www.chavesecreta.com.br / [email protected]

Muito Obrigado !!!