Problemas com gráficos - CEWOLF

3 respostas
almarti

Estou usando o CEWOLF para gerar gráficos em jsp. Minha classe lê os resultados da base e plota os gráficos. Esta funcionando perfeitamente. Porém, gostaria de passar parâmetros para a classe e ela retornasse a plotagem. Alguem sabe como fazer?

Minha classe é:

package com.acesso;

import java.sql.*;

import java.util.Date;

import java.util.Map;

import org.apache.log4j.Logger;
import org.jfree.data.category.DefaultCategoryDataset;

import com.celulajava.dwr.dao.conexao;

import de.laures.cewolf.DatasetProduceException;
import de.laures.cewolf.DatasetProducer;

public class chartDefault implements DatasetProducer {

private static final long serialVersionUID = 1L;
Logger log = Logger.getLogger(chartDefault.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 TOP 5 SUM(TB_ACLIATIVOS.CA) AS CA, TB_LOJAS_NOVAS.LOJA AS LOJA"
                          + " FROM TB_ACLIATIVOS INNER JOIN"
                          + " TB_LOJAS_NOVAS ON TB_ACLIATIVOS.CDLOJA = TB_LOJAS_NOVAS.CDLOJA"
                          + " GROUP BY TB_LOJAS_NOVAS.LOJA" ;
               
	try {
		conexao cnx = new conexao();
                                           
		//ps = conexao.prepareStatement(query);

		ResultSet rs = cnx.ExecutaSQL (query); //ps.executeQuery();
                    
                    
		while (rs.next()) {
			// Inserindo no DataSet a quantidade de pessoas certificadas, o nome da certf. e o estado. 
			//ds.addValue(rs.getInt(1), rs.getString(2), rs.getString(3));
                            
                      ds.addValue(rs.getInt("CA"), rs.getString("LOJA"),rs.getString("LOJA"));
		}
	} catch (SQLException e) {
		log.info(e);
	}

	return ds;
}

// 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 quisessemos que os dataset expirasse em 5 segundos colocariamos
	// return (System.currentTimeMillis() - since.getTime())  > 5000;
}

// Retorna um Id único para o dataset
public String getProducerId() {
	return "chartDefault";
}

}

3 Respostas

almarti

O que eu estou precisando é enviar a instrução SQL via parametro. Mas não sei como fazer isto. Alguem pode me ajudar?

almarti

Será que impossível enviar um parametro contendo a Instrução SQL que eu desejo usar? Terei que criar uma classe para cada Instrução SQL?

W

Almarti, como vc resolveu esse seu problema ?!

Criado 7 de dezembro de 2007
Ultima resposta 28 de jul. de 2012
Respostas 3
Participantes 2