Coverage Report - net.sf.statcvs.reportmodel.HelperTimePoint
 
Classes in this File Line Coverage Branch Coverage Complexity
HelperTimePoint
56%
15/27
40%
4/10
2
 
 1  
 /*
 2  
         StatCvs - CVS statistics generation 
 3  
         Copyright (C) 2002  Lukasz Pekacki <lukasz@pekacki.de>
 4  
         http://statcvs.sf.net/
 5  
     
 6  
         This library is free software; you can redistribute it and/or
 7  
         modify it under the terms of the GNU Lesser General Public
 8  
         License as published by the Free Software Foundation; either
 9  
         version 2.1 of the License, or (at your option) any later version.
 10  
 
 11  
         This library is distributed in the hope that it will be useful,
 12  
         but WITHOUT ANY WARRANTY; without even the implied warranty of
 13  
         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 14  
         Lesser General Public License for more details.
 15  
 
 16  
         You should have received a copy of the GNU Lesser General Public
 17  
         License along with this library; if not, write to the Free Software
 18  
         Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 19  
     
 20  
         $RCSfile: HelperTimePoint.java,v $
 21  
         $Date: 2009/08/20 17:44:05 $
 22  
 */
 23  
 package net.sf.statcvs.reportmodel;
 24  
 
 25  
 import java.util.Date;
 26  
 
 27  
 /**
 28  
  * Helper class for {@link TimeLine}. It encapsulates a data point
 29  
  * in the time line and may have an absolute value or a delta value (change).
 30  
  * 
 31  
  * @author Richard Cyganiak <rcyg@gmx.de>
 32  
  * @version $Id: HelperTimePoint.java,v 1.3 2009/08/20 17:44:05 benoitx Exp $
 33  
  */
 34  
 class HelperTimePoint implements Comparable {
 35  
     private final Date date;
 36  
     private final int value;
 37  
     private final boolean isAbsolute;
 38  
 
 39  144
     private HelperTimePoint(final Date date, final int value, final boolean isAbsolute) {
 40  144
         this.date = date;
 41  144
         this.value = value;
 42  144
         this.isAbsolute = isAbsolute;
 43  144
     }
 44  
 
 45  
     /**
 46  
      * Creates a new time point having an absolute value.
 47  
      * @param date the time point's date
 48  
      * @param value the time point's value
 49  
      * @return a new time point
 50  
      */
 51  
     public static HelperTimePoint createAbsoluteValueTimePoint(final Date date, final int value) {
 52  56
         return new HelperTimePoint(date, value, true);
 53  
     }
 54  
 
 55  
     /**
 56  
      * Creates a new time point representing a change relative to the previous
 57  
      * time point's value.
 58  
      * @param date the time point's date
 59  
      * @param delta the time point's change relative to the previous value
 60  
      * @return a new time point
 61  
      */
 62  
     public static HelperTimePoint createDeltaTimePoint(final Date date, final int delta) {
 63  88
         return new HelperTimePoint(date, delta, false);
 64  
     }
 65  
 
 66  
     /**
 67  
      * Creates a new time point representing two time points with the same
 68  
      * time. If one of them is absolute, it will be returned. If both
 69  
      * are relative, a new time point with the sum of the relative
 70  
      * values will be returned.
 71  
      * @param other a <tt>HelperTimePoint</tt>
 72  
      * @return a time point representing both <tt>this</tt> and <tt>other</tt>
 73  
      */
 74  
     public HelperTimePoint join(final HelperTimePoint other) {
 75  32
         if (!date.equals(other.getDate())) {
 76  0
             throw new IllegalArgumentException("Can only add time points having the same date");
 77  
         }
 78  32
         if (isAbsolute) {
 79  16
             return this;
 80  
         }
 81  16
         if (other.isAbsolute()) {
 82  0
             return other;
 83  
         }
 84  16
         return HelperTimePoint.createDeltaTimePoint(date, value + other.getValue());
 85  
     }
 86  
 
 87  
     /**
 88  
      * @return Date the data point's time
 89  
      */
 90  
     public Date getDate() {
 91  416
         return date;
 92  
     }
 93  
 
 94  
     /**
 95  
      * @return int the data point's value
 96  
      */
 97  
     public int getValue() {
 98  288
         return value;
 99  
     }
 100  
 
 101  
     /**
 102  
      * Returns <tt>true</tt> if the time point has an absolute value, and
 103  
      * <tt>false</tt> if it has a delta value relative to the previous
 104  
      * time point. 
 105  
      * @return <tt>true</tt> if absolute value
 106  
      */
 107  
     public boolean isAbsolute() {
 108  168
         return isAbsolute;
 109  
     }
 110  
 
 111  
     /**
 112  
      * Compares the time point's date to that of another time point
 113  
      * @param o another time point
 114  
      * @return See {@link java.lang.Comparable#compareTo(java.lang.Object)}
 115  
      */
 116  
     public int compareTo(final Object o) {
 117  0
         final HelperTimePoint other = (HelperTimePoint) o;
 118  0
         return getDate().compareTo(other.getDate());
 119  
     }
 120  
 
 121  
     public boolean equals(final Object rhs) {
 122  0
         if (rhs == null) {
 123  0
             return false;
 124  
         }
 125  0
         if (!(rhs instanceof HelperTimePoint)) {
 126  0
             return false;
 127  
         }
 128  0
         final HelperTimePoint that = (HelperTimePoint) rhs;
 129  
 
 130  0
         final boolean eq = getDate().equals(that.getDate());
 131  
 
 132  0
         return eq;
 133  
     }
 134  
 
 135  
     public int hashCode() {
 136  0
         return getDate().hashCode();
 137  
     }
 138  
 
 139  
 }