View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.commons.monitoring.reporting.web.plugin.report.format;
19  
20  import org.apache.commons.monitoring.counters.Counter;
21  
22  /**
23   * An enum to acces data from a Counter based on the property name. Can be used to avoid reflection on Counter
24   * implementation when requesting data and undesirable exposure of internals.
25   * <p/>
26   * example :
27   * <p/>
28   * <pre>
29   * String property = httpServletRequest.getParameter( &quot;property&quot; );
30   *
31   * Double data = MetricData.valueOf( property ).value( metric );
32   * </pre>
33   *
34   * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
35   */
36  public enum MetricData {
37      Hits {
38          @Override
39          public double value(final Counter counter) {
40              return counter.getHits();
41          }
42  
43          @Override
44          public boolean isTime() {
45              return false;
46          }
47      },
48      Max {
49          @Override
50          public double value(final Counter counter) {
51              return counter.getMax();
52          }
53  
54          @Override
55          public boolean isTime() {
56              return true;
57          }
58      },
59      Mean {
60          @Override
61          public double value(final Counter counter) {
62              return counter.getMean();
63          }
64  
65          @Override
66          public boolean isTime() {
67              return true;
68          }
69      },
70      Min {
71          @Override
72          public double value(final Counter counter) {
73              return counter.getMin();
74          }
75  
76          @Override
77          public boolean isTime() {
78              return true;
79          }
80      },
81      StandardDeviation {
82          @Override
83          public double value(final Counter counter) {
84              return counter.getStandardDeviation();
85          }
86  
87          @Override
88          public boolean isTime() {
89              return false;
90          }
91      },
92      Sum {
93          @Override
94          public double value(final Counter counter) {
95              return counter.getSum();
96          }
97  
98          @Override
99          public boolean isTime() {
100             return true;
101         }
102     },
103     SumOfLogs {
104         @Override
105         public double value(final Counter counter) {
106             return counter.getSumOfLogs();
107         }
108 
109         @Override
110         public boolean isTime() {
111             return false;
112         }
113     },
114     SumOfSquares {
115         @Override
116         public double value(final Counter counter) {
117             return counter.getSumOfSquares();
118         }
119 
120         @Override
121         public boolean isTime() {
122             return false;
123         }
124     },
125     Variance {
126         @Override
127         public double value(final Counter counter) {
128             return counter.getVariance();
129         }
130 
131         @Override
132         public boolean isTime() {
133             return false;
134         }
135     },
136     GeometricMean {
137         @Override
138         public double value(final Counter counter) {
139             return counter.getGeometricMean();
140         }
141 
142         @Override
143         public boolean isTime() {
144             return false;
145         }
146     },
147     Value {
148         @Override
149         public double value(final Counter counter) {
150             return counter.getSum();
151         }
152 
153         @Override
154         public boolean isTime() {
155             return true;
156         }
157     },
158     Concurrency {
159         @Override
160         public double value(final Counter counter) {
161             return counter.currentConcurrency().get();
162         }
163 
164         @Override
165         public boolean isTime() {
166             return false;
167         }
168     },
169     MaxConcurrency {
170         @Override
171         public double value(final Counter counter) {
172             return counter.getMaxConcurrency();
173         }
174 
175         @Override
176         public boolean isTime() {
177             return false;
178         }
179     };
180 
181     public abstract double value(Counter counter);
182     public abstract boolean isTime();
183 }