001 /*
002 @license.text@
003 */
004 package biz.hammurapi.metrics;
005
006 import java.util.Collections;
007 import java.util.HashMap;
008 import java.util.Iterator;
009 import java.util.LinkedList;
010 import java.util.Map;
011
012 /**
013 * Collects metrics in in-memory collection
014 * @author Pavel Vlasov
015 * @version $Revision: 1.2 $
016 */
017 public class SimpleMeasurementConsumer implements MeasurementConsumer, MetricSource {
018 private Map metrics=new HashMap();
019 private boolean keepMeasurements;
020
021 /**
022 * @param keepMeasurements
023 */
024 public SimpleMeasurementConsumer(boolean keepMeasurements) {
025 super();
026 this.keepMeasurements = keepMeasurements;
027 }
028
029 /**
030 *
031 */
032 public SimpleMeasurementConsumer() {
033 super();
034 }
035
036 public synchronized void addMeasurement(String name, double value, long time) {
037 Metric metric=(Metric) metrics.get(name);
038 if (metric==null) {
039 metric=new SimpleMetric(name, keepMeasurements);
040 metrics.put(name, metric);
041 }
042 metric.add(value, time);
043 }
044
045 public Map getMetrics() {
046 return metrics;
047 }
048
049 public String toString() {
050 StringBuffer ret=new StringBuffer();
051 LinkedList list = new LinkedList(metrics.values());
052 Collections.sort(list);
053 Iterator it=list.iterator();
054 while (it.hasNext()) {
055 ret.append(it.next());
056 ret.append("\n");
057 }
058 return ret.toString();
059 }
060 }