Thursday, May 10, 2018

Relatórios Utilizando Bean Datasource (parte 2)

Utilizando o JasperStudio

Como dissemos na parte 1 deste artigo, o JasperStudio é uma ferrementa visual que agiliza a criação de relatórios, de outra forma, teríamos que criar o arquivo jrxml na mão. Caso não tenha o JasperStudio instalado, você pode baixá-lo aqui.


Abra o JasperStudio. Clique com o botão direito do mouse em MyReports/New/Jasper Report:


Escolha Blank A4. Depois Next. Dê o nome do relatório de relatorioFuncionarios e clique em Finish:



Após criar o relatório, você terá a seguinte tela:


O painel Pallete à direita representa os componentes que você pode arrastar e colocar no relatório (textos estáticos, linhas, imagens, campos de texto, imagens, subrelatórios, etc.).

No painel Outline a esquerda, você tem os Fields, cujos nomes devem coincidir com os atributos da classe RelatorioFuncionariosBean.java, portanto, é através dos elementos Field que o JasperReport saberá quais métodos ele deve chamar na classe java para preencher os campos dinâmicos do relatório. Ainda no painel Outiline, temos o item Parameters que representa parâmetros dinâmicos que acrescentamos no relatório em tempo de execução utilizando java.util.Map (nome do parâmetro/valor do parâmetro).

Clique com o botão direito no item Parameters e escolha a opção Create Parameter. No painel Properties à direita aparece as propriedades do parâmetro que você criou, cujo nome padrão é Parameter1. Dê o nome a esse parâmetro de FuncionariosDataSource e em class coloque net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.


Da mesma forma, crie outro parâmetro chamado LOGOMARCA e defina o tipo da classe para java.io.InputStream.

Repare que o relatório é divido em bandas, cujos nomes são auto-explicativos, com exceção da banda Detail 1 que pode ser usada para campos cujo tipo estende java.util.Collection.

Se o seu data source tem campos que extendem a interface java.util.Colleciton, então você pode exibí-los no seu relatório utilizando os elementos Subreport, Table ou List do painel Palette. No nosso caso utilizarema a Table para exibir os funcionários.

Adiconado Table no Relatório

No painel Outline clique com o botão direito do mouse em cada banda e delete-a. Com exceção de Detal1 e Title. Ele vai ficar como segue:


No painel Palette ache o elemento Table e adicione-o na banda Detail1. No assitente Dataset que vai aparecer escolha a opção Create Table using a new dataset e Next:


Em seguida escolha a opção Create an empty dataset e dê o nome para o seu dataset de TabelaFuncionarios e Next:


Na janela Connection, marque a opção Use JRDataSource expression.



Clique no botão assitente, localizado à direita, para abrir o ExpressionEditor. No painel esquerdo selecione parameters e no painel do meio ache o parametro que você criou FuncionariosDatasource, dê duplo clique nele e Finish. Depois Finish de novo na janela connection.


O elelemento Tabela aparece no seu relatório. Precisamos de uma tablea com apenas duas colunas, nome e cpf do funcionário, não será necessário cabeçalhos nem rodapé. Para editar seu formato, dê uma duplo clique na tabela. Vamos deixá-la com duas colunas e uma linha, excluindo as demais.



Repare que a tabela também possui bandas, assim como o relatório principal. Mas só vamos precisar da banda detail e column header. Clique com o botão direito nas demais e delete-as. Crie mais uma coluna na tabela. No painel Palette localize o elemento lable static e adicione um em cada coluna.


No painel Outline, clique com o botão direito do mouse no item fields e adicione um campo nome e outro cpf, ambos do tipo String. Após criá-los, arraste-os na repsectiva linha da tabela.


Clique no botão main report e volte para a perspectiva do relatório inteiro. Assim como você criou os campos cpf e nome do funcionario, crie mais dois campos para representar o nome e o cnpj da empresa e arraste-os para a banda title do relatório, associe também os respectivos static labels para esses campos. Arraste tabem um componente Image para representar a logomarca da empresa.


Agora, nas propeidades do componente Image, em Expression, coloque o parâmetro LOGOMARCA, como $P{LOGOMARCA}.


Pronto. Salve e compile o relatório. O JasperStudio vai gerar o arquivo relatorioFuncionarios.jasper na pasta do seu projeto na aba Project Explorer à esquerda. Copie esse arquivo e cole-o no pacote relatorios do seu projeto no eclipse.

Execute o projeto e gere o relatório: