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; } }