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 }