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?
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?
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";
}
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";
}
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";
}
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";
}
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+