01: /*
02: * Copyright (c) 2004-2006, Jean-François Brazeau. All rights reserved.
03: *
04: * Redistribution and use in source and binary forms, with or without
05: * modification, are permitted provided that the following conditions are met:
06: *
07: * 1. Redistributions of source code must retain the above copyright notice,
08: * this list of conditions and the following disclaimer.
09: *
10: * 2. Redistributions in binary form must reproduce the above copyright
11: * notice, this list of conditions and the following disclaimer in the
12: * documentation and/or other materials provided with the distribution.
13: *
14: * 3. The name of the author may not be used to endorse or promote products
15: * derived from this software without specific prior written permission.
16: *
17: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18: * IMPLIEDWARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
22: * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
23: * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
25: * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
26: * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27: */
28: package jfb.tools.activitymgr.report;
29:
30: import java.util.HashMap;
31:
32: import org.apache.log4j.Logger;
33:
34: /**
35: * Classe offrant des services de calcul de sommes
36: * pour la génération de rapports avec Velocity.
37: */
38: public class SumHelper {
39:
40: /** Logger */
41: private static Logger log = Logger.getLogger(SumHelper.class);
42:
43: /** Table de stockage des cumuls */
44: private HashMap sumMap = new HashMap();
45:
46: /**
47: * Définit la valeur d'une somme nommée.
48: * @param sumName le nom de la somme.
49: * @param value la valeur de la somme.
50: */
51: public void set(String sumName, double value) {
52: log.debug("sh.set(" + sumName + ", " + value + ")");
53: sumMap.put(sumName, new Double(value));
54: }
55:
56: /**
57: * Retourne la valeur d'une somme nommée.
58: * @param sumName le nom de la somme.
59: * @return la valeur de la somme.
60: */
61: public double get(String sumName) {
62: log.debug("sh.get(" + sumName + ")");
63: Double sum = (Double) sumMap.get(sumName);
64: double _sum = 0;
65: if (sum != null) {
66: _sum = sum.doubleValue();
67: }
68: return _sum;
69: }
70:
71: /**
72: * Ajoute une valeur à une somme nommée.
73: * @param sumName le nom de la somme.
74: * @param value la valeur à ajouter.
75: */
76: public void add(String sumName, double value) {
77: log.debug("sh.add(" + sumName + ", " + value + ")");
78: double sum = get(sumName);
79: set(sumName, sum + value);
80: }
81:
82: /**
83: * Soustrait une valeur à une somme nommée.
84: * @param sumName le nom de la somme.
85: * @param value la valeur à soustraire.
86: */
87: public void sub(String sumName, double value) {
88: add(sumName, -value);
89: }
90:
91: }
|