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 }