Cewolf - Gerar vários graficos

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!

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+

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

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!

[code]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";
}

}
[/code]

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!

[code]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";
}

}
[/code]

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!

[code]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";
}

}
[/code]

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!

[code]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";
}

}
[/code]

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+

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