Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

JfreeChart & iReport – Parte II

Neste tutorial, procurarei mostrar como se faz para criar um gráfico a partir de uma fonte de dados e mostrar este gráfico em um...

JfreeChart & iReport – Parte II

 

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.





    3 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Vagner
Achei um erro na definição do campo quantidade no IReport.  No tutorial, são definidos três campos:
 
    * mes

    * produto

    * quantidadeString  (o que não bate com o nome do atributo de ModeloGraficoItem)


em 17/12/2008 13:50 - Responder

 

  Leonardo Jose De Oliveira
Outro erro encontrado é que o campo quantidade no exemplo está como java.lang.String, e na verdade ele deve ser java.lang.Integer.


em 10/7/2009 09:59 - Responder
 

Roberlei Boff Nandi
Obrigado pelo tutorial. Parabens



em 27/10/2009 19:28 - Responder

 



Autor
Christiano Rodarte Vale

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ções para o setor de Agro-Negócio (www.itradeti.com.br).


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
5   2
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da Java Magazine ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03