Cewolf - Gerar vários graficos

8 respostas
E

Bom dia!
Tenho uma classe, utilizando o Cewolf onde crio um grafico do tipo Meter…
O problema é que vou utilizar 4 meters na aplicação e, a unica coisa que muda nos meters são os valores…
Tem uma forma de eu colocar estes 4 meters com valores diferentes na tela utilizando apenas uma classe?

Abraços!

8 Respostas

I

Se entindi o que tu pretende eu creio que sim. Tu podes criar uma única instância da classe Meter mas invarialmente tu vais ter de guardar 4 conjuntos de instâncias dos atributos que compõe o gráfico. Estou falando sem conhecer a classe, mas creio que seja possivel sim. Tens como colocar um exemplo simples aqui?

T+

I

Acabei postando duas vezes porque deu erro na página… T+

E

O codigo esta abaixo...
O problema que vejo é rm colocar na JSP...
La coloco a classe de produção do Cewolf (esta abaixo) e, ao meu ver, para criar mais grafico eu teria que criar classes diferentes...

Abraço!

public class wsqoMeterCewolf implements DatasetProducer, ChartPostProcessor, Serializable
{
 
    Double nValorMeter;
    Double nRangeMin;
    Double nRangeMax;
    int nTipo;
    String sLink;
    
    /** Creates a new instance of MeterTipo1 */
    public wsqoMeterCewolf()
    {
    }
    
    public wsqoMeterCewolf(Double nValorMeter, Double nRangeMin, Double nRangeMax, int nTipo, String sLink) {
        this.nValorMeter = nValorMeter;
        this.nRangeMin = nRangeMin;
        this.nRangeMax = nRangeMax;
        this.nTipo = nTipo;
        this.sLink = sLink;
    }
    
    public Object produceDataset(Map map) throws DatasetProduceException
    {
        DefaultValueDataset dataset = new DefaultValueDataset(67.90);
        return dataset;
    }
    
    public void processChart(Object object, Map map)
    {
        JFreeChart jFreeChart = (JFreeChart) object;
        jFreeChart.removeLegend();
        
        MeterPlot oMeter = (MeterPlot) jFreeChart.getPlot();
        DialShape dialShape = DialShape.PIE;
        Range range = new Range(0.0, 100.0);
        
        oMeter.setRange(range);
        oMeter.setDialShape(dialShape);
        oMeter.setDialBackgroundPaint(Color.GRAY);
        oMeter.setDialOutlinePaint(Color.GRAY);
        oMeter.setNeedlePaint(Color.GRAY);
        oMeter.setTickPaint(Color.GRAY);
        
        MeterInterval interval1 = new MeterInterval("Minimo", new Range(0.0, 40.0), Color.GREEN, new BasicStroke(1), Color.GREEN);
        MeterInterval interval2 = new MeterInterval("Medio", new Range(40.0, 80.0), Color.YELLOW, new BasicStroke(1), Color.YELLOW);
        MeterInterval interval3 = new MeterInterval("Maximo", new Range(80.0, 100.0), Color.RED, new BasicStroke(1), Color.RED);
        
        oMeter.addInterval(interval1);
        oMeter.addInterval(interval2);
        oMeter.addInterval(interval3);
        oMeter.setUnits("");

    }
    
    public boolean hasExpired(Map map, Date date)
    {
        return false;
    }
    
    public String getProducerId()
    {
        return "MeterTipo1";
    }
}
E

O codigo esta abaixo...
O problema que vejo é rm colocar na JSP...
La coloco a classe de produção do Cewolf (esta abaixo) e, ao meu ver, para criar mais grafico eu teria que criar classes diferentes...

Abraço!

public class wsqoMeterCewolf implements DatasetProducer, ChartPostProcessor, Serializable
{
 
    Double nValorMeter;
    Double nRangeMin;
    Double nRangeMax;
    int nTipo;
    String sLink;
    
    /** Creates a new instance of MeterTipo1 */
    public wsqoMeterCewolf()
    {
    }
    
    public wsqoMeterCewolf(Double nValorMeter, Double nRangeMin, Double nRangeMax, int nTipo, String sLink) {
        this.nValorMeter = nValorMeter;
        this.nRangeMin = nRangeMin;
        this.nRangeMax = nRangeMax;
        this.nTipo = nTipo;
        this.sLink = sLink;
    }
    
    public Object produceDataset(Map map) throws DatasetProduceException
    {
        DefaultValueDataset dataset = new DefaultValueDataset(67.90);
        return dataset;
    }
    
    public void processChart(Object object, Map map)
    {
        JFreeChart jFreeChart = (JFreeChart) object;
        jFreeChart.removeLegend();
        
        MeterPlot oMeter = (MeterPlot) jFreeChart.getPlot();
        DialShape dialShape = DialShape.PIE;
        Range range = new Range(0.0, 100.0);
        
        oMeter.setRange(range);
        oMeter.setDialShape(dialShape);
        oMeter.setDialBackgroundPaint(Color.GRAY);
        oMeter.setDialOutlinePaint(Color.GRAY);
        oMeter.setNeedlePaint(Color.GRAY);
        oMeter.setTickPaint(Color.GRAY);
        
        MeterInterval interval1 = new MeterInterval("Minimo", new Range(0.0, 40.0), Color.GREEN, new BasicStroke(1), Color.GREEN);
        MeterInterval interval2 = new MeterInterval("Medio", new Range(40.0, 80.0), Color.YELLOW, new BasicStroke(1), Color.YELLOW);
        MeterInterval interval3 = new MeterInterval("Maximo", new Range(80.0, 100.0), Color.RED, new BasicStroke(1), Color.RED);
        
        oMeter.addInterval(interval1);
        oMeter.addInterval(interval2);
        oMeter.addInterval(interval3);
        oMeter.setUnits("");

    }
    
    public boolean hasExpired(Map map, Date date)
    {
        return false;
    }
    
    public String getProducerId()
    {
        return "MeterTipo1";
    }
}
E

O codigo esta abaixo...
O problema que vejo é rm colocar na JSP...
La coloco a classe de produção do Cewolf (esta abaixo) e, ao meu ver, para criar mais grafico eu teria que criar classes diferentes...

Abraço!

public class wsqoMeterCewolf implements DatasetProducer, ChartPostProcessor, Serializable
{
 
    Double nValorMeter;
    Double nRangeMin;
    Double nRangeMax;
    int nTipo;
    String sLink;
    
    /** Creates a new instance of MeterTipo1 */
    public wsqoMeterCewolf()
    {
    }
    
    public wsqoMeterCewolf(Double nValorMeter, Double nRangeMin, Double nRangeMax, int nTipo, String sLink) {
        this.nValorMeter = nValorMeter;
        this.nRangeMin = nRangeMin;
        this.nRangeMax = nRangeMax;
        this.nTipo = nTipo;
        this.sLink = sLink;
    }
    
    public Object produceDataset(Map map) throws DatasetProduceException
    {
        DefaultValueDataset dataset = new DefaultValueDataset(67.90);
        return dataset;
    }
    
    public void processChart(Object object, Map map)
    {
        JFreeChart jFreeChart = (JFreeChart) object;
        jFreeChart.removeLegend();
        
        MeterPlot oMeter = (MeterPlot) jFreeChart.getPlot();
        DialShape dialShape = DialShape.PIE;
        Range range = new Range(0.0, 100.0);
        
        oMeter.setRange(range);
        oMeter.setDialShape(dialShape);
        oMeter.setDialBackgroundPaint(Color.GRAY);
        oMeter.setDialOutlinePaint(Color.GRAY);
        oMeter.setNeedlePaint(Color.GRAY);
        oMeter.setTickPaint(Color.GRAY);
        
        MeterInterval interval1 = new MeterInterval("Minimo", new Range(0.0, 40.0), Color.GREEN, new BasicStroke(1), Color.GREEN);
        MeterInterval interval2 = new MeterInterval("Medio", new Range(40.0, 80.0), Color.YELLOW, new BasicStroke(1), Color.YELLOW);
        MeterInterval interval3 = new MeterInterval("Maximo", new Range(80.0, 100.0), Color.RED, new BasicStroke(1), Color.RED);
        
        oMeter.addInterval(interval1);
        oMeter.addInterval(interval2);
        oMeter.addInterval(interval3);
        oMeter.setUnits("");

    }
    
    public boolean hasExpired(Map map, Date date)
    {
        return false;
    }
    
    public String getProducerId()
    {
        return "MeterTipo1";
    }
}
E

O codigo esta abaixo...
O problema que vejo é rm colocar na JSP...
La coloco a classe de produção do Cewolf (esta abaixo) e, ao meu ver, para criar mais grafico eu teria que criar classes diferentes...

Abraço!

public class wsqoMeterCewolf implements DatasetProducer, ChartPostProcessor, Serializable
{
 
    Double nValorMeter;
    Double nRangeMin;
    Double nRangeMax;
    int nTipo;
    String sLink;
    
    /** Creates a new instance of MeterTipo1 */
    public wsqoMeterCewolf()
    {
    }
    
    public wsqoMeterCewolf(Double nValorMeter, Double nRangeMin, Double nRangeMax, int nTipo, String sLink) {
        this.nValorMeter = nValorMeter;
        this.nRangeMin = nRangeMin;
        this.nRangeMax = nRangeMax;
        this.nTipo = nTipo;
        this.sLink = sLink;
    }
    
    public Object produceDataset(Map map) throws DatasetProduceException
    {
        DefaultValueDataset dataset = new DefaultValueDataset(67.90);
        return dataset;
    }
    
    public void processChart(Object object, Map map)
    {
        JFreeChart jFreeChart = (JFreeChart) object;
        jFreeChart.removeLegend();
        
        MeterPlot oMeter = (MeterPlot) jFreeChart.getPlot();
        DialShape dialShape = DialShape.PIE;
        Range range = new Range(0.0, 100.0);
        
        oMeter.setRange(range);
        oMeter.setDialShape(dialShape);
        oMeter.setDialBackgroundPaint(Color.GRAY);
        oMeter.setDialOutlinePaint(Color.GRAY);
        oMeter.setNeedlePaint(Color.GRAY);
        oMeter.setTickPaint(Color.GRAY);
        
        MeterInterval interval1 = new MeterInterval("Minimo", new Range(0.0, 40.0), Color.GREEN, new BasicStroke(1), Color.GREEN);
        MeterInterval interval2 = new MeterInterval("Medio", new Range(40.0, 80.0), Color.YELLOW, new BasicStroke(1), Color.YELLOW);
        MeterInterval interval3 = new MeterInterval("Maximo", new Range(80.0, 100.0), Color.RED, new BasicStroke(1), Color.RED);
        
        oMeter.addInterval(interval1);
        oMeter.addInterval(interval2);
        oMeter.addInterval(interval3);
        oMeter.setUnits("");

    }
    
    public boolean hasExpired(Map map, Date date)
    {
        return false;
    }
    
    public String getProducerId()
    {
        return "MeterTipo1";
    }
}
I

Eu implementaria um método reset que receberia os novos parâmetros e recalcularia o gráfico (em um servlet). Depois disso mostraria na página novamente. T+

E

Sim…
Eu ate fiz um for na aplicação, mas, mesmo atualizando os dados, os Meter aparecem com o ultimo valor!

Criado 8 de dezembro de 2006
Ultima resposta 8 de dez. de 2006
Respostas 8
Participantes 2