bug in DefaultMeterDataset?

A discussion forum for JFreeChart (a 2D chart library for the Java platform).
Locked
Isabelle Gheysens

bug in DefaultMeterDataset?

Post by Isabelle Gheysens » Wed May 29, 2002 10:52 am

Hello,

I think there is a little bug in DefaultMeterdataset:

this is how the "constructor" and method "setRange" look like:

I think "setValue" should be called before "setRange", because when min and max are equal, setRange uses "value" to set min and max before "value" is initialised:

if (min.doubleValue()==max.doubleValue()) {
min = new Double(value.doubleValue() - DEFAULT_ADJ);
max = new Double(value.doubleValue() + DEFAULT_ADJ);
}

So in this case you get a NullPointerException


Isabelle


public DefaultMeterDataset( Number min, Number max, Number value,
Number minCritical, Number maxCritical,
Number minWarning, Number maxWarning,
Number minNormal, Number maxNormal) {

setRange(min, max);
setValue(value);
setCriticalRange(minCritical, maxCritical);
setWarningRange(minWarning, maxWarning);
setNormalRange(minNormal, maxNormal);
}

public void setRange(Number min, Number max) {

if( min==null || max==null) {
throw new IllegalArgumentException( "Min/Max should not be null");
}

if (min.doubleValue()>max.doubleValue()) {
Number temp = min;
min = max;
max = temp;
}

if (min.doubleValue()==max.doubleValue()) {
min = new Double(value.doubleValue() - DEFAULT_ADJ);
max = new Double(value.doubleValue() + DEFAULT_ADJ);
}

this.min = min;
this.max = max;
this.fireDatasetChanged();

}

Isabelle Gheysens

Re: bug in DefaultMeterDataset?

Post by Isabelle Gheysens » Wed May 29, 2002 10:56 am

Sorry,

I just saw that "setRange" also uses "min" and "max", so just switching "setvalue" and "setRange" would not be a solution.

I think setRange should be changed for the case min and max are equal...

Isabelle

Locked