001 /*
002 @license.text@
003 */
004 package biz.hammurapi.metrics;
005
006 import java.util.Collection;
007
008 /**
009 * @author Pavel Vlasov
010 * @version $Revision: 1.5 $
011 */
012 public interface Metric {
013 public interface Measurement {
014 double getValue();
015 long getTime();
016 }
017
018 /**
019 * @return number of measurements
020 */
021 int getNumber();
022
023 /**
024 * @return Minimum value
025 */
026 double getMin();
027
028 /**
029 * @return Maximum value
030 */
031 double getMax();
032
033 /**
034 * @return Average
035 */
036 double getAvg();
037
038 /**
039 * @return Sum of values from all measurements
040 */
041 double getTotal();
042
043 /**
044 * @return average distance from average
045 */
046 double getDeviation();
047
048 /**
049 * Adds measurement
050 * @param source Source object
051 * @param value value
052 */
053 void add(double value, long time);
054
055 /**
056 * Adds another metric (aggregates)
057 * @param metric
058 */
059 void add(Metric metric);
060
061 /**
062 * @return Collection of {@link Measurement}
063 */
064 Collection getMeasurements();
065
066 String getName();
067 }