package com.bizo.asperatus.tracker.impl;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import com.bizo.asperatus.model.Unit;
public final class MetricStatistics {
private final Unit unit;
private long samples = 0;
private float sum = 0;
private float min = Float.MAX_VALUE;
private float max = Float.MIN_VALUE;
public MetricStatistics(final Unit unit) {
this.unit = unit;
}
public void add(final Number n) {
final float f = n.floatValue();
min = Math.min(min, f);
max = Math.max(max, f);
sum += f;
samples += 1;
}
public long getSamples() {
return samples;
}
public float getSum() {
return sum;
}
public float getMin() {
return min;
}
public float getMax() {
return max;
}
public Unit getUnit() {
return unit;
}
public String toString() {
return String.format("MStats[unit:%s,samples=%d,sum=%2.2f,min=%2.2f,max=%2.2f]", unit, samples, sum, min, max);
}
@Override
public boolean equals(final Object that) {
return EqualsBuilder.reflectionEquals(this, that);
}
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
}