• Skip to primary navigation
  • Skip to content

Mauda

IT, Java and Music

Graduação   SCJP   Mestrado
  • Apresentação
  • Certificação Java
  • JPA
    • Exceptions
  • JSF
  • Versionamento
  • Contato

Jaspersoft Studio – Passar um DTO como Parâmetro

April 9, 2018 by Mauda 2 Comments

Conteúdo do Post:
  1. Criando o Parâmetro
  2. Utilizando o Parâmetro
  3. Criando o parâmetro dentro do código Java
  4. finally{

Olá Pessoal, tudo bom?

No artigo de hoje iremos passar uma classe DTO como parâmetro para um relatório Jasper. O artigo será baseado nesse artigo de um parâmetro String. Veja na continuação.

Antes de continuar a leitura…

Nesse artigo utilizamos o pattern DTO. Se você não sabe o que significa DTO, por favor leia o artigo.

Criando o Parâmetro

Baseado na parte 1 do artigo sobre Parâmetros do Jasper vamos criar um novo parâmetro e na parte Properties iremos alterar os seguintes itens, como mostra Figura 02:

  • Name: colocar enderecoDTO
  • Class: colocar br.com.mauda.dto.EnderecoDTO referenciando assim o dto criado.
Figura 02 – Após alterar o name e o class do parâmetro

Utilizando o Parâmetro

Baseado na parte 2 do artigo sobre Parâmetros vamos criar sete Text Fields onde utilizaremos em cada um o atributo correspondente do DTO.

No Editor Expression, Figura 03, para cada Text Field vamos fazer uma expressão diferente.

Figura 03 – Expression Editor popup

As expressões estão em ordem alfabética por atributo:

  • Atributo bairro: “Bairro: ” + $P{enderecoDTO}.getBairro()
  • Atributo cidade: “Cidade: ” + $P{enderecoDTO}.getCidade()
  • Atributo complemento: “Complemento: ” + $P{enderecoDTO}.getComplemento()
  • Atributo estado: “Estado: ” + $P{enderecoDTO}.getEstado()
  • Atributo numero: “Número: ” + $P{enderecoDTO}.getNumero()
  • Atributo pais: “País: ” + $P{enderecoDTO}.getPais()
  • Atributo rua: “Rua: ” + $P{enderecoDTO}.getRua()

É importante frisar aqui que podemos chamar qualquer método existente na classe EnderecoDTO desta forma. Por exemplo se tivéssemos um método que retornasse a cidade/estado de nome getCidadeEstado(), bastaria colocar esse na expressão.

Criando o parâmetro dentro do código Java

Baseado na parte 3 do artigo sobre Parâmetros vamos agora modificar o código para adicionar essa nova instância de EnderecoDTO e passá-la ao relatório.

O software agora muda, vamos voltar ao Eclipse e mexer com o código Java. Se você, caro leitor, seguiu os passos desse tutorial de configuração do projeto Maven com o Jasper, provavelmente você tenha em seu projeto uma classe Java de teste para ser executada via JUnit. O código desta classe está no quadro abaixo:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package br.com.mauda.SeminariosCientificos;
 
import org.junit.Test;
 
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
 
/**
* Unit test for simple App.
*/
public class AppTest{
 
@Test
public void teste() throws JRException{
//Obtem o valor atual do sistema
long inicioContagem = System.currentTimeMillis();
//Compilacao no formato jasper para o jrprint
JasperFillManager.fillReportToFile("reports/relatorioTeste.jasper", null, new JREmptyDataSource(1));
System.err.println("Tempo de compilacao jasper -> jrprint: " + (System.currentTimeMillis() - inicioContagem));
//Reinicia o contador
inicioContagem = System.currentTimeMillis();
//Geracao do PDF
JasperExportManager.exportReportToPdfFile("reports/relatorioTeste.jrprint");
System.err.println("Tempo de geracao do PDF: " + (System.currentTimeMillis() - inicioContagem));
}
}

Agora vamos modificar essa classe com novos itens, para que possamos adicionar o novo parâmetro enderecoDTO e gerar o novo relatório criado via Jaspersoft Studio:

Criar uma instância de EnderecoDTO e preenche-la com informações. (linhas 20 a 27)

Criar uma instância de Map<String, Object> (linha 29), pois podemos passar parâmetros de qualquer tipo para o Jasper Reports, mas a Key deste sempre será uma String.

Adicionar o novo parâmetro ao Map, com o “enderecoDTO ” e a instância de EnderecoDTO (linha 30).

Por fim esse Map será passado ao método fillReportToFile (linha 33), conforme demonstra o código abaixo:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package br.com.mauda.seminario.cientificos.bc;
 
import org.junit.Test;
 
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
 
/**
* Unit test for simple App.
*/
public class AppTest{
 
    @Test
    public void teste() throws JRException{
        //Obtem o valor atual do sistema
        long inicioContagem = System.currentTimeMillis();
        
        EnderecoDTO enderecoDTO = new EnderecoDTO();
        enderecoDTO.setRua("Alferes Poli");
        enderecoDTO.setNumero(78445);
        enderecoDTO.setComplemento("Apto 345");
        enderecoDTO.setBairro("Parque do Limoeiro");
        enderecoDTO.setCidade("Antonia");
        enderecoDTO.setEstado("Parana");
        enderecoDTO.setPais("Brasil");
        
        Map<String, Object> parameters = new HashMap<String, Object>();
        parameters.put("enderecoDTO", enderecoDTO);
        
        //Compilacao no formato jasper para o jrprint
        JasperFillManager.fillReportToFile("reports/relatorioTeste.jasper", parameters, new JREmptyDataSource(1));
        System.err.println("Tempo de compilacao jasper -> jrprint: " + (System.currentTimeMillis() - inicioContagem));
        
        //Reinicia o contador
        inicioContagem = System.currentTimeMillis();
        
        //Geracao do PDF
        JasperExportManager.exportReportToPdfFile("reports/relatorioTeste.jrprint");
        System.err.println("Tempo de geracao do PDF: " + (System.currentTimeMillis() - inicioContagem));
    }
}

Se você modificou o nome do relatório de teste faça a modificação nas linhas 33 e 40.

Agora é executar o código via JUnit e ver surgir um arquivo pdf com o título passado pelo código Java, Seminário sobre Jasper Reports, no arquivo PDF.

finally{

Assim terminamos a descrição sobre como criar e enviar parâmetros DTO para um relatório.

Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!

Até um próximo post!

Filed Under: Jasper, Java Tagged With: jasper, jasper reports, jaspersoft studio, Java, parameter, parameters

About Mauda

Mestre em Informática, Analista de Sistemas, Professor, SCJP e Baterista. Desde 2002 trabalhando no mundo Java e ensinando pessoas sobre desenvolvimento de sistemas. Mais informações

Reader Interactions

Comments

  1. Samuel says

    February 19, 2022 at 11:01 am

    O Jasper nao consegue encontrar a classe DTO que eu passei para ele, com.unipampa.sete.dto.EnderecoDTO

    Reply
    • Mauda says

      April 23, 2022 at 10:22 am

      Olá Samuel, tudo bem?

      Precisaria de mais algumas informações, pois só com essas não é possível te ajudar.

      O arquivo jasper está dentro do próprio projeto que você está rodando o relatório? Ou está em outro projeto?

      Existe alguma mensagem de erro?

      Você recompilou o relatório novamente?

      Obrigado.

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Advertisements

Copyright © 2025 · Genesis Framework · WordPress · Log in