Relatórios avançados com Hibernate, JasperReports e PrimeFaces – Parte 2
A tomada de decisões nas empresas de hoje está completamente atrelada à disponibilização de relatórios por seus sistemas. No entanto, como a linguagem Java não possui suporte nativo a tal recurso, precisamos de mecanismos externos que supram essa carência.
Surgiu assim o JasperReports, uma biblioteca open source escrita em Java focada exatamente na simplificação da construção de relatórios para aplicações desenvolvidas com a mesma linguagem. Apesar de seu sucesso hoje em dia, as primeiras versões do JasperReports eram bastante improdutivas, pois exigiam o domínio do seu DTD (Document Type Definition), um documento descritor XML utilizado pelo JasperReports para gerar os relatórios. O desenvolvedor tinha que escrever seu código num editor de textos qualquer, pois não existia uma ferramenta que abstraísse esse trabalho. Na Listagem 1 apresentamos um exemplo de como declarar um label no DTD. Como pode ser observado, não é nada trivial e de fácil leitura.
Listagem 1. Exemplo de código do arquivo DTD.
01 <staticText>
02 <reportElement x="0" y="0" width="117" height="35"/>
03 <box leftPadding="2"/>
04 <textElement verticalAlignment="Middle">
05 <font isBold="true"/>
06 </textElement>
07 <text><![CDATA[Descrição]]></text>
08 </staticText>O intervalo entre as linhas 1 e 8 define um texto estático, um label. Na linha 2 os atributos x e y configuram as coordenadas do posicionamento do elemento no relatório e width e height definem sua área delimitadora. Em seguida, na linha 3, definimos a margem esquerda interna do texto dentro de sua região. Das linhas 4 a 6 especificamos a formatação do elemento de texto, que no caso será exibido em negrito. Finalmente, na linha 7 adicionamos o conteúdo que será apresentado no relatório, pela label: o texto “Descrição”.
Constatada essa dificuldade, o iReport foi criado. Como já esperado, seu objetivo é facilitar o desenvolvimento de relatórios, tornando transparente o conhecimento sobre como estruturar o arquivo DTD, o que se dá com a automatização do processo de escrita desse arquivo.
Com o iReport podemos projetar relatórios através de uma interface gráfica que disponibiliza diversas opções para criar layouts complexos e de maneira simples. Esta ferramenta possibilita também utilizar recursos avançados do JasperReports que podem auxiliar em situações específicas como, por exemplo, a virtualização da memória heap, que permite fazer swap em disco. Esta técnica faz com que pequenas porções da memória heap sejam escritas diretamente no disco, tornando possível seu gerenciamento. A virtualização é recomendada quando processamos uma grande quantidade de informações e temos pouca memória heap disponível, o que pode ocasionar erros do tipo OutOfMemoryException.
Outro recurso muito interessante que pode ser implementado com o auxílio do JasperReports e que ajuda no gerenciamento da memória é a paginação. No entanto, a paginação não é um recurso nativo desta biblioteca, tendo que ser implementada à parte. Veremos como fazer isso mais adiante.
Uma vez que o nosso foco será a demonstração de recursos mais avançados do iReport e do JasperReports, este artigo pressupõe que o leitor já tenha noções básicas destas ferramentas. Caso queira adquirir tais conhecimentos, recomendamos a leitura do artigo “Gerando Relatórios com JasperReports”, publicado na Edição 19 da Easy Java Magazine.
Dito ...
Desbloqueie toda a DevMedia
-
+2000 artigos e vídeos
-
+40 trilhas sobre Front-end, Back-end, IA e muito mais
-
+5000 exercícios práticos
-
Mentorias ao vivo individuais
Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.