Java Reporting com JasperReports e iReport Open Source
JasperReports é uma solução open source poderosa e flexível para geração de relatórios. O visual designer iReport permite tirar total vantagem do poder do JasperReports sem necessidade de conhecimento profundo do formato XML nativo JasperReports.
John Ferguson Smart
Usando o JasperReports do Java
Então, agora temos um gerador de relatórios JasperReports funcional. Como usá-lo dentro de aplicações Java?
O objeto JasperDesign, no pacote net.sf.jasperreports.engine, é a representação Java de relatórios XML projetados usando o iReport. Carrega-se o XML report e compila-se para um
objeto JasperReport que realiza a geração do relatório:
JasperDesign jasperDesign
= JasperManager.loadXmlDesign("MyReport.xml");
JasperReport jasperReport
= JasperManager.compileReport(jasperDesign);
Em uma aplicação real, não deveríamos fazer isto toda vez que geramos um relatório, pois a geração consome tempo e o relatório pode ser facilmente armazenado em cache.
Uma vez que tivermos um relatório compilado, podemos alimentá-lo com dados e usá-lo para gerar relatórios.
Ao gerarmos o relatório, podemos fornecer parâmetros de tempo de execução via Map. Isto é útil para fornecer informações desconhecidas em tempo de projeto, tal como um título de relatório personalizado pelo usuário. Dentro do relatório JasperReport, declaramos o parâmetro na janela “View/Report Parameters" e a seguir usamos a variável de parâmetro da mesma maneira que faríamos com os outros campos e variáveis previamente vistos:
// Parametros de relatório em tempo de execução
Map parameters = new HashMap();
parameters.put("title", "A user-customized title");
É claro que precisaremos também fornecer uma conexão JDBC válida para o banco de dados alvo:
// Recuperar a conexão com o banco de dados
Connection conn = DBConnectionFactory.getConnection();
Finalmente, usamos a classe JasperFillManager para combinar o modelo de relatório compilado com os dados entrantes e gerar um relatório pronto para impressão:
JasperPrint jasperPrint
= JasperFillManager.fillReport(jasperReport,
parameters,
conn);
Agora usamos o JasperPrintManager para gerar o relatório em qualquer formato desejado. O JasperReport suporta muitos formatos: PDF, Excel, XML, HTML, CVS, etc. Mas por enquanto, apenas escreveremos o relatório em um arquivo PDF:
JasperExportManager.exportReportToPdfFile(jasperPrint,
"report.pdf");
Existem muitos outras possibilidades. Veja as API JasperReports para maiores detalhes.
Outras Ferramentas Geradoras de Relatórios
Há disponíveis várias outras ferramentas geradoras de relatórios, portanto, em que pé o JasperReports/iReport se encontra em relação a elas? A seguir, alguns dos atores principais no campo:
O Eclipse BIRT é uma nova e promissora ferramenta para projeto e geração de relatórios, com um plugin Eclipse agradável. Embora relativamente nova, tem algumas funcionalidades poderosas de projeto e geração de relatórios. Por outro lado, é menos madura do que o JasperReports e parece também menos bem integrada com o Java, pois depende de scripting JavaScript interno para otimização dos relatórios. A integração de conexões com datasources que não sejam JDBC puros, parece ser também complicada. Não obstante, vale a pena dar uma olhada.
O Business Objects/Crystal Reports é uma solução BI/reporting comercial poderosa, com um desenhista gráfico experto. Uma licença Crystal Reports Server XI Edition (20 usuários) custa aproximadamente $7,500. O Crystal Reports IX Developer Edition, uma versão mais leve e mais orientada para desenvolvimento de aplicações Web, está disponível por aproximadamente $595 por desenvolvedor. A integração com o Java, parece porém, ser também limitada, mesmo na sua mais recente versão.
Um Duo Dinâmico
O JasperReports é uma ferramenta para geração de relatórios poderosa e flexível, fácil de integrar em um ambiente Java. O iReport elimina muito do trabalho difícil de projetar relatórios com o JasperReports — sem comprometer o seu poder. Juntos, formam um par impressionante. Experimente!