Project Report: fawkez

Packagesummary org.jcoderz.commons.statistics

org.jcoderz.commons.statistics.TimedAverage

LineHitsNoteSource
1  /*
2   * $Id: TimedAverage.java 1011 2008-06-16 17:57:36Z amandel $
3   *
4   * Copyright 2006, The jCoderZ.org Project. All rights reserved.
5   *
6   * Redistribution and use in source and binary forms, with or without
7   * modification, are permitted provided that the following conditions are
8   * met:
9   *
10   *    * Redistributions of source code must retain the above copyright
11   *      notice, this list of conditions and the following disclaimer.
12   *    * Redistributions in binary form must reproduce the above
13   *      copyright notice, this list of conditions and the following
14   *      disclaimer in the documentation and/or other materials
15   *      provided with the distribution.
16   *    * Neither the name of the jCoderZ.org Project nor the names of
17   *      its contributors may be used to endorse or promote products
18   *      derived from this software without specific prior written
19   *      permission.
20   *
21   * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
22   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24   * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS
25   * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
28   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30   * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31   * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32   */
33  package org.jcoderz.commons.statistics;
34  
35  import java.text.DecimalFormat;
36  
37  import org.jcoderz.commons.types.Date;
38  
39  
40  
41  /**
42   * This is an {@link org.jcoderz.commons.statistics.Average} version that
43   * also counts time and can thus compute a frequency (i.e. occurences per
44   * time).
45   * @author Albrecht Messner
46   */
47  public class TimedAverage
48     extends Average
49  {
50     private long mStartTime;
51     private long mStopTime;
52  
53     /**
54      * Constructor.
55      * @param name The name of the TimedAverage
56      */
57     public TimedAverage (String name)
58     {
590       super(name);
600       mStartTime = 0;
610       mStopTime = 0;
620    }
63  
64     /** {@inheritDoc} */
65     public synchronized void reset ()
66     {
670       super.reset();
680       mStopTime = 0;
690       start();
700    }
71  
72     /**
73      * Starts the timer of this Average.
74      */
75     public synchronized void start ()
76     {
770       mStartTime = System.currentTimeMillis();
780    }
79  
80     /**
81      * Stops the timer of this Average.
82      */
83     public synchronized void stop ()
84     {
850       mStopTime = System.currentTimeMillis();
860    }
87  
88     /**
89      * Returns the amount of time this Average was running.
90      * @return the amount of time this Average was running
91      */
92     public synchronized long getDuration ()
93     {
94        long duration;
950       if (mStopTime != 0)
96        {
970          duration = mStopTime - mStartTime;
98        }
99        else
100        {
1010          duration = System.currentTimeMillis() - mStartTime;
102        }
1030       return duration;
104     }
105  
106     /**
107      * Returns the frequency of this average, i.e. getCount() / duration.
108      * @return the frequency of this average, i.e. getCount() / duration.
109      */
110     public synchronized double getFrequency ()
111     {
1120       final long duration = getDuration();
1130       final double durationInSec = duration / (double) Date.MILLIS_PER_SECOND;
1140       double result = 0;
1150       if (durationInSec > 0)
116        {
1170          result = getCount() / durationInSec;
118        }
1190       return result;
120     }
121  
122     /** {@inheritDoc} */
123     public String toString ()
124     {
1250       final DecimalFormat df = new DecimalFormat("0.000");
1260(1)      final StringBuffer sbuf = new StringBuffer();
1270       sbuf.append("[TimedAverage name=").append(getName());
1280       sbuf.append(", duration=").append(getDuration());
1290       sbuf.append(", count=").append(getCount());
1300       sbuf.append(", min=").append(getMinimum());
1310       sbuf.append(", avg=").append(getAverage());
1320       sbuf.append(", max=").append(getMaximum());
1330       sbuf.append(", freq=").append(df.format(getFrequency()));
1340       sbuf.append(']');
1350       return sbuf.toString();
136     }
137  }

Findings in this File

i (1) 126 : 26 StringBuffer constructor is initialized with size 16, but has at least 64 characters appended.