1 /* ============================================================ 2 * JRobin : Pure java implementation of RRDTool's functionality 3 * ============================================================ 4 * 5 * Project Info: http://www.jrobin.org 6 * Project Lead: Sasa Markovic (saxon@jrobin.org); 7 * 8 * (C) Copyright 2003-2005, by Sasa Markovic. 9 * 10 * Developers: Sasa Markovic (saxon@jrobin.org) 11 * 12 * 13 * This library is free software; you can redistribute it and/or modify it under the terms 14 * of the GNU Lesser General Public License as published by the Free Software Foundation; 15 * either version 2.1 of the License, or (at your option) any later version. 16 * 17 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 18 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 19 * See the GNU Lesser General Public License for more details. 20 * 21 * You should have received a copy of the GNU Lesser General Public License along with this 22 * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, 23 * Boston, MA 02111-1307, USA. 24 */ 25 26 package org.jrobin.data; 27 28 import org.jrobin.core.ConsolFuns; 29 import org.jrobin.core.RrdException; 30 import org.jrobin.core.Util; 31 32 /** 33 * Simple class which holds aggregated values (MIN, MAX, FIRST, LAST, AVERAGE and TOTAL). You 34 * don't need to create objects of this class directly. Objects of this class are returned from 35 * <code>getAggregates()</code> method in 36 * {@link org.jrobin.core.FetchData#getAggregates(String) FetchData} and 37 * {@link DataProcessor#getAggregates(String)} DataProcessor} classes. 38 */ 39 public class Aggregates implements ConsolFuns { 40 double min = Double.NaN, max = Double.NaN; 41 double first = Double.NaN, last = Double.NaN; 42 double average = Double.NaN, total = Double.NaN; 43 44 Aggregates() { 45 // NOP; 46 } 47 48 /** 49 * Returns the minimal value 50 * 51 * @return Minimal value 52 */ 53 public double getMin() { 54 return min; 55 } 56 57 /** 58 * Returns the maximum value 59 * 60 * @return Maximum value 61 */ 62 public double getMax() { 63 return max; 64 } 65 66 /** 67 * Returns the first falue 68 * 69 * @return First value 70 */ 71 public double getFirst() { 72 return first; 73 } 74 75 /** 76 * Returns the last value 77 * 78 * @return Last value 79 */ 80 public double getLast() { 81 return last; 82 } 83 84 /** 85 * Returns average 86 * 87 * @return Average value 88 */ 89 public double getAverage() { 90 return average; 91 } 92 93 /** 94 * Returns total value 95 * 96 * @return Total value 97 */ 98 public double getTotal() { 99 return total; 100 } 101 102 /** 103 * Returns single aggregated value for the give consolidation function 104 * 105 * @param consolFun Consolidation function: MIN, MAX, FIRST, LAST, AVERAGE, TOTAL. These constants 106 * are conveniently defined in the {@link org.jrobin.core.ConsolFuns ConsolFuns} interface. 107 * @return Aggregated value 108 * @throws RrdException Thrown if unsupported consolidation function is supplied 109 */ 110 public double getAggregate(String consolFun) throws RrdException { 111 if (consolFun.equals(CF_AVERAGE)) { 112 return average; 113 } 114 else if (consolFun.equals(CF_FIRST)) { 115 return first; 116 } 117 else if (consolFun.equals(CF_LAST)) { 118 return last; 119 } 120 else if (consolFun.equals(CF_MAX)) { 121 return max; 122 } 123 else if (consolFun.equals(CF_MIN)) { 124 return min; 125 } 126 else if (consolFun.equals(CF_TOTAL)) { 127 return total; 128 } 129 else { 130 throw new RrdException("Unknown consolidation function: " + consolFun); 131 } 132 } 133 134 /** 135 * Returns String representing all aggregated values. Just for debugging purposes. 136 * 137 * @return String containing all aggregated values 138 */ 139 public String dump() { 140 return "MIN=" + Util.formatDouble(min) + ", MAX=" + Util.formatDouble(max) + "\n" + 141 "FIRST=" + Util.formatDouble(first) + ", LAST=" + Util.formatDouble(last) + "\n" + 142 "AVERAGE=" + Util.formatDouble(average) + ", TOTAL=" + Util.formatDouble(total); 143 } 144 }