001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package org.apache.commons.monitoring.reporting.web.plugin.report.format; 019 020 import org.apache.commons.monitoring.counters.Counter; 021 022 /** 023 * An enum to acces data from a Counter based on the property name. Can be used to avoid reflection on Counter 024 * implementation when requesting data and undesirable exposure of internals. 025 * <p/> 026 * example : 027 * <p/> 028 * <pre> 029 * String property = httpServletRequest.getParameter( "property" ); 030 * 031 * Double data = MetricData.valueOf( property ).value( metric ); 032 * </pre> 033 * 034 * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a> 035 */ 036 public enum MetricData { 037 Hits { 038 @Override 039 public double value(final Counter counter) { 040 return counter.getHits(); 041 } 042 043 @Override 044 public boolean isTime() { 045 return false; 046 } 047 }, 048 Max { 049 @Override 050 public double value(final Counter counter) { 051 return counter.getMax(); 052 } 053 054 @Override 055 public boolean isTime() { 056 return true; 057 } 058 }, 059 Mean { 060 @Override 061 public double value(final Counter counter) { 062 return counter.getMean(); 063 } 064 065 @Override 066 public boolean isTime() { 067 return true; 068 } 069 }, 070 Min { 071 @Override 072 public double value(final Counter counter) { 073 return counter.getMin(); 074 } 075 076 @Override 077 public boolean isTime() { 078 return true; 079 } 080 }, 081 StandardDeviation { 082 @Override 083 public double value(final Counter counter) { 084 return counter.getStandardDeviation(); 085 } 086 087 @Override 088 public boolean isTime() { 089 return false; 090 } 091 }, 092 Sum { 093 @Override 094 public double value(final Counter counter) { 095 return counter.getSum(); 096 } 097 098 @Override 099 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 }