TUTORIAL DE INTRODUÇÃO AO CEWOLF



Documentos relacionados
Mini-Tutorial. Como criar relatórios Java para Web com JasperReports e ireport por Roberto J. Furutani 20/07/2005

Listando, gravando, alterando e excluindo registro do banco de dados com JSP

Drive MySql de conexão para Eclipse

Prática Sobre Servlets e JSP

Java na Web. Aplicações Web

Manipulação de Banco de Dados com Java 1. Objetivos

Java na WEB Banco de Dados

JDBC Java Database Connectivity

Autenticação e Autorização

Faculdades Integradas Santa Cruz. Tutorial de Java MVC WEB Criando uma tela de Login com Banco de Dados

SISTEMA EXPERIMENTALL 15/11/2009. Olá! A partir de agora vamos conhecer a IDE NetBeans efetuando um micro projeto swing.

JDBC. Prof. Márcio Bueno

Material de apoio a aulas de Desenvolvimento Web. Tutorial Java WEB JSP & HTML & CSS & CLASSE & OBJETOS. AAS -

Tutorial Jogo da Velha WEB

Tutorial de NetBeans IDE Acessando banco de dados com Struts Data Source

Unidade 9: Middleware JDBC para Criação de Beans

Leonardo Gresta Paulino Murta

DWR DIRECTED WEB REMOTING

Introdução a relatórios Crosstab com ireport/jasperreports

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

JAVAWEB AULA 2 Prof. Daniela Pires Sumário

JavaServer Faces JSF

Aplicativos Web com Orientação a Objetos

Criação de um novo projeto no Eclipse utilizando Maven

Acessando um Banco de Dados

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

USANDO APPLETS NO NETBEANS (WEB APPLICATION)...E A APPLET CHAMA ALGUM PACOTE EXTERNO (por Luis Alberto M Palhares de Melo Julho/2011)

Persistência de Classes em Tabelas de Banco de Dados

JAVAWEB AULA 2 Prof. Daniela Pires Sumário

Aula 03 - Projeto Java Web

Primeiro exemplo de uso de páginas JSP

Manual de Utilização da Biblioteca VisPublica

Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha

Android e Bancos de Dados

Documentação Usando o Javadoc

Acesso a banco de dados

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

FACULDADE DE TECNOLOGIA SENAC GOIÁS PROGRAMAÇÃO PARA INTERNET TUTORIAL DE APLICAÇÃO JSF DESENVOLVIDO COM A FERRAMENTA ECLIPSE LUNA

Acesso à Dados ZEOS x Delphi. Professor Anderson

Tutorial: Técnicas de Geração de Relatórios com JasperReports

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Programação Orientada a Objetos JDBC Java Database Connectivity

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

Aprenda como instalar o plugin EclipseUML no Eclipse e como utilizá-lo para fazer engenharia reversa de seu código-fonte.

C# - Conexão com MySQL

Padrões de Projeto e Persistência com DAO

JSP: JAVA SERVER PAGES

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

TUTORIAL SISTEMA DE CONTROLE DE ACESSO

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Funcionamento da Aplicação. Simulações do funcionamento. Simulação SAC

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia

Grupo de Usuários Java JavaServer Faces: A mais nova tecnologia Java para desenvolvimento WEB

Aula 1 Acesso a Banco de Dados

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL.

J820. Testes de interface Web com. HttpUnit. argonavis.com.br. Helder da Rocha

Criando, inserindo e exibindo PHP+MySql

TUTORIAL JSP & SERVLET

JSP: JAVA SERVER PAGES

Especialização em web com interfaces ricas

Criação de Servlets Name Directory Build WAR JSP/Servlet frameworks Launch URL Package Class name Generate header comments

Java Beans e Servlets

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

Programação II Programação para a Web. Christopher Burrows

Programação Orientada a Objetos II

Curso: Desenvolvimento Java

Inserindo e Listando registros

JavaScript. JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos.

Agenda. Instalação e configuração. Processamento de comandos SQL com JDBC. Driver JDBC Criação da classe de conexão

Fernando Freitas Costa. Pós-Graduando em Gestão e Docência Universitária. blog.fimes.edu.br/fernando nando@fimes.edu.br

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Solução do segundo exercício proposto REDE DE HOTÉIS

Desenvolvimento Web TCC Turma A-1

Descompacte o arquivo site zip que foi baixado dentro da pasta do eclipse.

HTML / JAVASCRIPT. A versão atual é o HTML5 (seus predecessores imediatos são HTML 4.01, XHTML 1.1, etc.).

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

Cabeçalho do documento

Persistência Java para Web com MySQL

Criando uma agenda simples com NetBeans 6.5

Scriptlets e Formulários

ANDROID APPLICATION PROJECT

Faculdades Network Bacharelado em Sistemas de Informação Tópicos Avançados. Aulas 25 e 26 Exemplo de Aplicação usando JSP e MySQL

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

#Aula Nº 4 XHTML+CSS webstandards.samus.com.br webstandards.samus.com.br/aulas/aula4.pdf Vinicius Fiorio Custódio samus@samus.com.

Exibir relatórios gerados pelo Jasper Report em Flex

Escrito por Sáb, 15 de Outubro de :19 - Última atualização Seg, 26 de Março de :32

JDBC. Java DataBase Connectivity

Desenvolvendo Aplicações Web com NetBeans

English Português. By erickalves 25 Julho, :08. Devido à política (#) de segurança. Encontrar Blogs Crie o seu blog de graça Ganhe prêmios


Escrito por Neri Neitzke Qua, 25 de Junho de :51 - Última atualização Qua, 25 de Junho de :54

Projeto de Banco de Dados: Empresa X

Desenvolvendo Websites com PHP

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Configuração Do Firebird no Ide NetBeans

Transcrição:

1 TUTORIAL DE INTRODUÇÃO AO CEWOLF CRIANDO GRÁFICOS COM JSP, CEWOLF/JFREECHART E MYSQL 1. Introdução O Cewolf (http://cewolf.sourceforge.net/) é uma biblioteca que facilita a criação de gráficos dinâmicos em uma aplicação web, distribuído sob a licença LGPL. O Cewolf é todo baseado no JFreeChart (http://www.jfree.org/jfreechart/index.html), pois ele aproveita os mesmos mecanismos de desenho dos gráficos do JFreeChart. É possível gerar vários tipos de gráficos desde os mais simples, como de linha, barras, setoriais (pizza) até gráficos combinados, em 3D, etc. Figura 1. Gráfico de linhas.

2 Figura 2. Gráfico setorial. Mais exemplos podem ser vistos no link: http://cewolf.sourceforge.net/new/demo.html 2. Ambiente de Desenvolvimento Será utilizado o Eclipse 3.2M3 (www.eclipse.org), com os plug-ins do projeto Amateras. Os links para downloads, a instalação e configuração é apresentada nesse link: http://www.guj.com.br/posts/list/31160.java A versão do Cewolf utilizada é a 0.12.0 e a do Tomcat é a 5.5.9. O MySQL( http://dev.mysql.com/ ) utilizado é o 5.0.16. O driver do MySQL está junto com o material disponibilizado para download (http://www.furutani.eti.br/tutoriais/graficos.zip). 3. Codificando Inicialmente é preciso dizer um pouco da organização dos arquivos fontes feita dentro de eclipse. O arquivo disponibilizado para download(http://www.furutani.eti.br/tutoriais/graficos.zip) contém um projeto para ser importado no eclipse, selecione menu file, Import/Export e utilize o wizard que é bem intuitivo. Após a importação abra o arquivo common.ant.properties, a primeira linha está assim: Altere para o diretório webapps do seu tomcat. Deploy.Dir=D:/tomcat-5.5.9/webapps

Os diretórios estão separados assim: 3 Bin aqui ficam as classes compiladas. Dist aqui fica pacote war. Lib aqui ficam todas as bibliotecas utilizadas. Src aqui ficam os fontes.java Web ficam páginas jsp, css, javascript, etc. Web-inf onde fica o web.xml e um monte de outras coisas. O arquivo build.xml é um script do ANT (http://ant.apache.org/) para automatizar o deployment da aplicação. Toda vez que vc fizer uma alteração no projeto, clique com o botão direito sobre o build.xml e selecione Run As, Ant build para empacotar toda a aplicação, criar o war e jogar no webapps do tomcat. As libs que devem ser acrescentadas no classpath para que a aplicação funcione são: Para a aplicação será usada uma base de dados simples, como pode ser visto na figura abaixo.

4 CREATE TABLE Pessoa ( idpessoa INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Nome VARCHAR(100) NOT NULL, Cidade VARCHAR(50) NOT NULL, Estado VARCHAR(2) NOT NULL, PRIMARY KEY(idPessoa) ); CREATE TABLE Certificacao ( idcertificacao INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Nome VARCHAR(10) NOT NULL, Descricao VARCHAR(100) NOT NULL, DataLancamento DATETIME NOT NULL, PRIMARY KEY(idCertificacao) ); CREATE TABLE Pessoa_has_Certificacao ( FK_idPessoa INTEGER UNSIGNED NOT NULL, FK_idCertificacao INTEGER UNSIGNED NOT NULL, DataExame DATETIME NOT NULL, Nota INTEGER UNSIGNED NOT NULL, PRIMARY KEY(FK_idPessoa, FK_idCertificacao), FOREIGN KEY(FK_idPessoa) REFERENCES Pessoa(idPessoa) ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY(FK_idCertificacao) REFERENCES Certificacao(idCertificacao) ON DELETE NO ACTION ON UPDATE NO ACTION ); Depois dessa apresentação, vamos prosseguir com o tutorial. Inicialmente temos que configurar e mapear o servlet responsável por renderizar os gráficos. No arquivo web.xml foram acrescentadas as seguinte linhas: <servlet> <servlet-name>cewolfservlet</servlet-name> <servlet-class>de.laures.cewolf.cewolfrenderer</servlet-class> <init-param> <param-name>storage</param-name> <param-value>de.laures.cewolf.storage.transientsessionstorage</param-value> </init-param> <init-param> <param-name>overliburl</param-name>

5 <param-value>overlib.js</param-value> </init-param> <! Torna o debug ativo --> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>cewolfservlet</servlet-name> <url-pattern>/cewolf/*</url-pattern> </servlet-mapping> Agora iremos criar um DatasetProducer para um gráfico do tipo setorial (pizza) que terá o nome CertificacaoEstadoDataSet. Esse gráfico irá apresentar a quantidade de certificações por Estado. package br.eti.furutani.dataset; import java.sql.connection; import java.sql.preparedstatement; import java.sql.resultset; import java.sql.sqlexception; import java.util.date; import java.util.map; import org.apache.log4j.logger; import org.jfree.data.general.defaultpiedataset; import br.eti.furutani.banco.conexaomysql; import de.laures.cewolf.datasetproduceexception; import de.laures.cewolf.datasetproducer; public class CertificacaoEstadoDataSet implements DatasetProducer { private static final long serialversionuid = 1L; // vamos utilizar o log4j Logger log = Logger.getLogger(CertificacaoEstadoDataSet.class); // Retorna uma Dataset com os dados que irão alimentar o gráfico public Object producedataset(map arg0) throws DatasetProduceException { // Criando um Dataset para o gráfico DefaultPieDataset ds = new DefaultPieDataset(); PreparedStatement ps = null; String query = "SELECT p.estado, COUNT(p.estado) as qtde FROM `pessoa_has_certificacao` phc "

+ "INNER JOIN `certificacao` c ON c.idcertificacao = phc.fk_idcertificacao " + "INNER JOIN `pessoa` p ON p.idpessoa = phc.fk_idpessoa " + "GROUP BY p.estado"; try { // Recupera uma conexão com o banco Connection conexao = ConexaoMySQL.getConn(); ps = conexao.preparestatement(query); 6 ResultSet rs = ps.executequery(); while (rs.next()) { // Inserindo no DataSet o estado e a quantidade de pessoas certificadas ds.setvalue(rs.getstring(1), new Double(rs.getInt(2))); catch (SQLException e) { log.info(e); // retorna o DataSet return ds; // O dados deste dataset é invalidado imediatamente. // O tempo de retorno influencia no cachê de dados do cewolf // Retornando sempre true, os dados do dataset são sempre atualizados a cada request. public boolean hasexpired(map arg0, Date arg1) { return true; // Se quiséssemos que os dataset expirasse em 5 segundos colocaríamos // return (System.currentTimeMillis() - since.gettime()) > 5000; // Retorna um Id único para este dataset public String getproducerid() { return "CertificacaoPorEstado"; Agora vamos desenvolver o JSP. As tags do Cewolf são bem fáceis de usar. Em http://cewolf.sourceforge.net/new/taglib.html tem uma listagem completa das tags e os atributos suportados pelo cewolf. <%@ taglib uri="/web-inf/cewolf-1.1.tld" prefix="cewolf"%> <html><head> <meta http-equiv="content-type" content="text/html; charset=cp1252"/> <title>exemplo 1</title> </head><body> <! Criando um bean --> <jsp:usebean id="graficods" class="br.eti.furutani.dataset.certificacaoestadodataset"/> <center><h3>gráficos DE PIZZA</h3></center>

7 <!-- GRÁFICO SETORIAL/PIZZA --> <cewolf:chart id="grafico1" title="certificações por Estado" type="pie"> <cewolf:img chartid="grafico1" renderer="/cewolf" width="710" height="380"/> <br/> </body> </html> <!-- GRÁFICO SETORIAL/PIZZA EM 3D --> <cewolf:chart id="grafico2" title="certificações por Estado" type="pie3d"> <cewolf:img chartid="grafico2" renderer="/cewolf" width="710" height="380"/> Duas relações são importantes dentro desse monte de tags, a primeira é a do id do jsp:usebean e o id do cewolf:producer. A segunda é o id do cewolf:chart e o id do cewolf:img. Observe as flechas abaixo. <jsp:usebean id="graficods" class="br.eti.furutani.dataset.certificacaoestadodataset"/> <cewolf:chart id="grafico1" title="certificações por Estado" type="pie"> <cewolf:img chartid="grafico1" renderer="/cewolf" width="710" height="380"/>

O resultado é o seguinte: 8 Agora iremos criar um novo gráfico, para exibir a quantidade de tipos de certificações por estado. O DatasetProducer vai se chamar PessoasCertificadasDataSet. package br.eti.furutani.dataset;

9 import java.sql.connection; import java.sql.preparedstatement; import java.sql.resultset; import java.sql.sqlexception; import java.util.date; import java.util.map; import org.apache.log4j.logger; import org.jfree.data.category.defaultcategorydataset; import br.eti.furutani.banco.conexaomysql; import de.laures.cewolf.datasetproduceexception; import de.laures.cewolf.datasetproducer; public class PessoasCertificadasDataSet implements DatasetProducer { private static final long serialversionuid = 1L; Logger log = Logger.getLogger(PessoasCertificadasDataSet.class); // Retorna uma Dataset com os dados que irão alimentar o gráfico public Object producedataset(map arg0) throws DatasetProduceException { // Criando um Dataset para o gráfico de linhas DefaultCategoryDataset ds = new DefaultCategoryDataset(); PreparedStatement ps = null; String query = "SELECT COUNT(c.idCertificacao), p.estado,c.nome `pessoa_has_certificacao` phc " + "INNER JOIN `certificacao` c ON c.idcertificacao = phc.fk_idcertificacao " + "INNER JOIN `pessoa` p ON p.idpessoa = phc.fk_idpessoa " + "GROUP BY p.estado,c.idcertificacao"; try { FROM Connection conexao = ConexaoMySQL.getConn(); ps = conexao.preparestatement(query); ResultSet rs = ps.executequery(); estado. while (rs.next()) { // Inserindo no DataSet a quantidade de pessoas certificadas, o nome da certf. e o ds.addvalue(rs.getint(1), rs.getstring(2), rs.getstring(3)); catch (SQLException e) { log.info(e); return ds;

10 // O dados deste dataset é invalidado imediatamente. O tempo de retorno influencia no cache do cewolf public boolean hasexpired(map arg0, Date arg1) { return true; // Se quiséssemos que os dataset expirasse em 5 segundos colocaríamos // return (System.currentTimeMillis() - since.gettime()) > 5000; // Retorna um Id único para o dataset public String getproducerid() { return "PessoasCertificadasPorEstado"; A maior diferença entre esse DatasetProducer para o outro é que trocamos o DefaultPieDataset para o DefaultCategoryDataset. Vejam agora o JSP. A única diferença para o JSP anterior é o atributo type da tag cewolf:chart em azul. <%@ page contenttype="text/html; charset=iso-8859-1" errorpage="" %> <%@ taglib uri="/web-inf/cewolf-1.1.tld" prefix="cewolf"%> <html> <head> <meta http-equiv="content-type" content="text/html; charset=cp1252"/> <title>exemplo 2</title> </head> <body> <jsp:usebean id="graficods" class="br.eti.furutani.dataset.pessoascertificadasdataset"/> <center><h3>gráficos DE LINHAS E COLUNAS</h3></center> <!-- GRÁFICO LINHAS E COLUNA --> <cewolf:chart id="grafico1" title="certificações por Estado" type="line" xaxislabel="estado" yaxislabel="qtde"> <cewolf:img chartid="grafico1" renderer="/cewolf" width="710" height="380"/> <br/><br/> <!-- GRÁFICO COLUNA HORIZONTAL 3D -->

11 <cewolf:chart id="grafico2" title="certificações por Estado" type="horizontalbar3d" xaxislabel="estado" yaxislabel="qtde"> <cewolf:img chartid="grafico2" renderer="/cewolf" width="710" height="380"/> <br/><br/> <!-- GRÁFICO COLUNA 3D --> <cewolf:chart id="grafico3" title="certificações por Estado" type="verticalbar3d" xaxislabel="estado" yaxislabel="qtde"> <cewolf:img chartid="grafico3" renderer="/cewolf" width="710" height="380"/> <br/><br/> <!-- GRÁFICO DE AREA --> <cewolf:chart id="grafico4" title="certificações por Estado" type="area" xaxislabel="estado" yaxislabel="qtde"> <cewolf:img chartid="grafico4" renderer="/cewolf" width="710" height="380"/> <br/><br/> <!-- GRÁFICO COLUNA --> <cewolf:chart id="grafico5" title="certificações por Estado" type="stackedverticalbar3d" xaxislabel="estado" yaxislabel="qtde">

12 <cewolf:img chartid="grafico5" renderer="/cewolf" width="710" height="380"/> </body> </html> É incrível a quantidade de gráficos diferentes que podemos criar com o DefaultCategoryDataset, veja nas figuras abaixo.

13

14 4. Conclusão O Cewolf é uma ótima biblioteca para criar gráficos na web, oferece facilidade e uma grande variedade de estilos de gráficos. 5. Referências Site oficial, http://cewolf.sourceforge.net/new/index.html Tomcat, http://tomcat.apache.org/

Eclipse, http://www.eclipse.org/ JfreeChart, http://www.jfree.org/jfreechart/ GUJ, http://www.guj.com.br Fonte, http://www.furutani.eti.br/tutoriais/graficos.zip 15 Atualizado: sábado, 26 de novembro de 2005 as 20:49:31