package resa.metrics;
import resa.util.Counter;
import java.util.HashMap;
import java.util.Map;
/**
* Created by ding on 14-9-10.
* This class is used for collect and calculate the detailed distribution (histogram) of certain metric within one time window
*/
class CompleteStatMetric extends StatMetric {
private Map<String, Counter> counter = new HashMap<>();
public CompleteStatMetric(double[] xAxis) {
super(xAxis);
}
public void fail(String key) {
counter.computeIfAbsent(key, k -> new Counter(0)).incAndGet();
}
@Override
public Object getValueAndReset() {
Map<String, String> ret = (Map<String, String>) super.getValueAndReset();
if (ret == null) {
return null;
}
ret.entrySet().forEach(e -> e.setValue(e.getValue() + "|"
+ counter.computeIfAbsent(e.getKey(), k -> new Counter(0)).get()));
counter.clear();
return ret;
}
}