1 // Copyright (C) 2000 - 2006 Philip Aston 2 // All rights reserved. 3 // 4 // This file is part of The Grinder software distribution. Refer to 5 // the file LICENSE which is part of The Grinder distribution for 6 // licensing details. The Grinder distribution is available on the 7 // Internet at http://grinder.sourceforge.net/ 8 // 9 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 10 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 11 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 12 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 13 // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 14 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 16 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 18 // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 19 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 20 // OF THE POSSIBILITY OF SUCH DAMAGE. 21 22 package net.grinder.statistics; 23 24 25 /** 26 * Interface to apply a statistics calculation to a {@link 27 * StatisticsSet}. 28 * 29 * @author Philip Aston 30 * @see StatisticExpressionFactoryImplementation 31 **/ 32 public interface StatisticExpression { 33 34 /** 35 * Apply this {@link StatisticExpression} to the given {@link 36 * StatisticsSet} and return the result as a <code>double</code>. 37 * 38 * @param statisticsSet A <code>StatisticsSet</code> value. 39 * @return The result. 40 **/ 41 double getDoubleValue(StatisticsSet statisticsSet); 42 43 /** 44 * Apply this {@link StatisticExpression} to the given {@link 45 * StatisticsSet} and return the result as a <code>long</code>, 46 * rounding as necessary. 47 * 48 * @param statisticsSet A <code>StatisticsSet</code> value. 49 * @return The result. 50 **/ 51 long getLongValue(StatisticsSet statisticsSet); 52 53 /** 54 * Returns <code>true</code> if the type of this {@link 55 * StatisticExpression} is non integral. Callers might use this to 56 * decide which accessor to call to ensure that information is not 57 * lost, or how to format the result. 58 * 59 * @return a <code>boolean</code> value 60 **/ 61 boolean isDouble(); 62 }