DevMedia
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login

JfreeChart & iReport – Parte II

Veremos neste tutorial como a ferramenta JFreeChart pode ser usada juntamente com iReport / JasperReports para se criar relatórios mais completos usando também recursos de criação de gráficos.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você poderia comentar o que não lhe agradou?

Confirmo meu voto negativo

 

Criando o Modelo no iReport

Agora vamos criar um modelo no iReport para receber:

             

1 – Os dados que geraram o gráfico apresentados em forma de listagem;

         2 – A imagem do gráfico;

 

Vamos Criar 3 fields para receber os valores que darão origem ao gráfico. Repare que tem os mesmos nomes da entidade ModeloGraficoItem.

 

jfreechartfig04.JPG

Figura 4 – criação do Fields no iReport.

 

Nesta mesma tela, na aba Parameters vamos criar o parâmetro que irá receber a imagem. Observe que este parâmetro deve ser do tipo java.lang.Object:

 

jfreechartfig05.JPG 

Figura 5 – criação do parâmetro imagem.

 

Para mostrar a imagem do gráfico vamos criar um campo na Banda Sumary com a ferramenta ImageTools que receberá um objeto imagem por parâmetro:

 

jfreechartfig06.JPG 

Figura 6 – Propriedades do campo ImageTools.

 

A montagem final do Modelo ficou assim (salvo com o nome de ModeloGrafico):

 

jfreechartfig071.JPG 

Figura 7 – ModeloGrafico.jrxml.

 

Criando o Servlet

O código a seguir é de um Servlet que tem como única função:

 

·         Receber os valores gerados pela classe ComposicaoDadosItemGrafico;

·         Chamar a classe GeradorGrafico para criar um gráfico a partir dos da dados recebidos;

·         Chamar o ModeloGrafico.jasper exibindo o relatório em formato PDF em uma janela do browser.

 

Para criar a imagem do gráfico vamos usar a classe BufferedImage que será o objeto adicionado ao parâmetro. Como os métodos da classe GeradorGrafico são estáticos a chamada é feita da seguinte forma:

 

BufferedImage imagem = GeradorGrafico.gerarGraficoLinha3D("Titulo", "Mes", "Quantidade", array);

 

A classe HashMap de java.util é usada para passar os parâmetros para o relatório:

 

HashMap parametros = new HashMap();

parametros.put("imagem", imagem);

 

Repare o nome do parâmetro: é o mesmo nome do objeto criado com a ferramenta ImageTools.

 

public class ServletRelatorioGrafico extends HttpServlet {

 

    //Initialize global variables

    public void init() throws ServletException {

    }

 

    //Process the HTTP Post request

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doGet(request, response);

    }

 

    //Clean up resources

    public void destroy() {

    }

 

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

        try {

            ComposicaoDadosItemGrafico composicao = new ComposicaoDadosItemGrafico();

            ArrayList array = composicao.getArray();

            //BufferedImage imagem = GeradorGrafico.gerarGraficoBarraVertical3D("Titulo", "Mes", "Quantidade", array);

            //BufferedImage imagem = GeradorGrafico.gerarGraficoBarraVertical("Titulo", "Mes", "Quantidade", array);

            //BufferedImage imagem = GeradorGrafico.gerarGraficoLinha("Titulo", "Mes", "Quantidade", array);

            BufferedImage imagem = GeradorGrafico.gerarGraficoLinha3D("Titulo", "Mes", "Quantidade", array);

          // A String pathJasper garda o caminho para o relatório compilado ModeloGrafico.jasper localizado na subpasta   

          //relatorio/grafico

            String pathJasper = getServletContext().getRealPath("/relatorio/grafico") + "/TesteGrafico.jasper";

            HashMap parametros = new HashMap();

            parametros.put("imagem", imagem);

           

            JRDataSource jrDataSourse = new JRBeanArrayDataSource(array.toArray());

            JasperPrint impressao = JasperFillManager.fillReport(pathJasper, parametros, jrDataSourse);

 

            byte[] bytes = JasperExportManager.exportReportToPdf(impressao);

 

            response.setContentType("application/pdf");

            response.setContentLength(bytes.length);

            ServletOutputStream ouputStream = response.getOutputStream();

            ouputStream.write(bytes, 0, bytes.length);

            ouputStream.flush();

            ouputStream.close();

 

        } catch (Exception ex) {

            ex.printStackTrace();

        }

    }

}

 

Um formulário simples em HTML dever ser criado para fazer a chamada ao Servlet.

 

A saída da Aplicação é mostrada abaixo:

 

jfreechartfig08.JPG 

Figura 8 – Gráfico de Linha com efeito 3D.

 

jfreechartfig09.JPG

Figura 9 – gráfico de linha.

 

jfreechartfig10.JPG 

Figura 10 – gráfico de barras.

 

jfreechartfig11.JPG 

Figura 11- gráfico de barras com efeito 3D.

 

Conclusão

Vimos neste tutorial que a ferramenta JFreeChart pode ser usada juntamente com iReport / JasperReports para se criar relatórios mais completos usando também recursos de criação de gráficos.

 

Espero que tenha gostado do tutorial e tirado o máximo proveito dele.

Leia também



Christiano Rodarte Vale (christianovale@gmail.com), 26 anos, formado em Ciência da Computação pela UNIFOR-MG, trabalho como Desenvolvedor de Componentes Web em uma empresa (iTrade – Tecnologia de Informação) que desenvolve soluçõe [...]

O que você achou deste post?
Conhece a assinatura MVP?
Serviços

Mais posts