package com.griddynamics.jagger.engine.e1.collector;
import static com.griddynamics.jagger.util.StandardMetricsNamesUtil.MIN_AGGREGATOR_ID;
/** Calculates min value on the interval
* @author Kirill Gribov
*
* @ingroup Main_Aggregators_group */
public class MinMetricAggregatorProvider implements MetricAggregatorProvider {
@Override
public MetricAggregator provide() {
return new MinMetricAggregator();
}
private static class MinMetricAggregator implements MetricAggregator<Number> {
private Double value = null;
@Override
public void append(Number calculated) {
if (value == null) {
value = calculated.doubleValue();
} else {
value = Math.min(value, calculated.doubleValue());
}
}
@Override
public Double getAggregated() {
return value;
}
@Override
public void reset() {
value = null;
}
@Override
public String getName() {
return MIN_AGGREGATOR_ID;
}
}
}