package org.rrd4j.data;
import org.rrd4j.ConsolFun;
import org.rrd4j.core.Util;
/**
* Simple class which holds aggregated values (MIN, MAX, FIRST, LAST, AVERAGE and TOTAL). You
* don't need to create objects of this class directly. Objects of this class are returned from
* <code>getAggregates()</code> method in
* {@link org.rrd4j.core.FetchData#getAggregates(String) FetchData} and
* {@link org.rrd4j.data.DataProcessor#getAggregates(String)} DataProcessor classes.
*
*/
public class Aggregates {
double min = Double.NaN, max = Double.NaN;
double first = Double.NaN, last = Double.NaN;
double average = Double.NaN, total = Double.NaN;
/**
* Returns the minimal value
*
* @return Minimal value
*/
public double getMin() {
return min;
}
/**
* Returns the maximum value
*
* @return Maximum value
*/
public double getMax() {
return max;
}
/**
* Returns the first value
*
* @return First value
*/
public double getFirst() {
return first;
}
/**
* Returns the last value
*
* @return Last value
*/
public double getLast() {
return last;
}
/**
* Returns average
*
* @return Average value
*/
public double getAverage() {
return average;
}
/**
* Returns total value
*
* @return Total value
*/
public double getTotal() {
return total;
}
/**
* Returns single aggregated value for the give consolidation function
*
* @param consolFun Consolidation function: MIN, MAX, FIRST, LAST, AVERAGE, TOTAL. These constants
* are conveniently defined in the {@link org.rrd4j.ConsolFun ConsolFun} interface.
* @return Aggregated value
* @throws java.lang.IllegalArgumentException Thrown if unsupported consolidation function is supplied
*/
public double getAggregate(ConsolFun consolFun) {
switch (consolFun) {
case AVERAGE:
return average;
case FIRST:
return first;
case LAST:
return last;
case MAX:
return max;
case MIN:
return min;
case TOTAL:
return total;
}
throw new IllegalArgumentException("Unknown consolidation function: " + consolFun);
}
/**
* Returns String representing all aggregated values. Just for debugging purposes.
*
* @return String containing all aggregated values
*/
public String dump() {
StringBuilder bl = new StringBuilder();
for(ConsolFun cf: ConsolFun.values()) {
bl.append(cf.name() + '=' + Util.formatDouble(this.getAggregate(cf)));
}
return bl.toString();
}
}