Clover Coverage Report - perfectjpattern(Aggregated)
Coverage timestamp: Sat Feb 28 2009 14:35:07 CET
../../../../../../img/srcFileCovDistChart9.png 84% of files have more coverage
20   189   11   2.86
8   75   0.55   7
7     1.57  
1    
 
  ProgressData       Line # 31 20 0% 11 4 88.6% 0.8857143
 
  (6)
 
1    //----------------------------------------------------------------------
2    //
3    // PerfectJPattern: "Design patterns are good but components are better!"
4    // ProgressData.java Copyright (c) 2009 Giovanni Azua Garcia
5    // bravegag@hotmail.com
6    //
7    // This program is free software; you can redistribute it and/or
8    // modify it under the terms of the GNU General Public License
9    // as published by the Free Software Foundation; either version 3
10    // of the License, or (at your option) any later version.
11    //
12    // This program is distributed in the hope that it will be useful,
13    // but WITHOUT ANY WARRANTY; without even the implied warranty of
14    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15    // GNU General Public License for more details.
16    //
17    // You should have received a copy of the GNU General Public License
18    // along with this program; if not, see <http://www.gnu.org/licenses/>.
19    //
20    //----------------------------------------------------------------------
21    package org.perfectjpattern.core.behavioral.observer.data;
22   
23    /**
24    * Immutable Observer event data intended to be used in notifying progress
25    * information.
26    *
27    * @author <a href="mailto:bravegag@hotmail.com">Giovanni Azua</a>
28    * @version $Revision: 1.0 $ $Date: Jun 17, 2007 3:00:29 PM $
29    */
30    public
 
31    class ProgressData
32    extends StatusData
33    {
34    //------------------------------------------------------------------------
35    // public
36    //------------------------------------------------------------------------
37    /**
38    * Creates a progress information with precalculated task percentage
39    * completed.
40    *
41    * @param aStatus Status of the task
42    * @param aMessage Description of the current status
43    * @param aProgress Percentage of completion of the task [0 .. 100]
44    * @throws IllegalArgumentException "'aStatus' must not be null"
45    * @throws IllegalArgumentException "'aMessage' must not be null"
46    */
 
47  35 toggle public
48    ProgressData(Status aStatus, String aMessage, int aProgress)
49    {
50  35 super(aStatus, aMessage);
51   
52  35 theProgress = aProgress;
53    }
54   
55    //------------------------------------------------------------------------
56    /**
57    * Creates a progress information with total and current progress values,
58    * this variation of the constructor calculates the percentage based on the
59    * two values.
60    *
61    * @param aStatus Status of the task
62    * @param aMessage Description of the current status
63    * @param aTotal Numeric total of the task
64    * @param aCurrent Current value of the task in reference to the total
65    */
 
66  24 toggle public
67    ProgressData(Status aStatus, String aMessage, int aTotal, int aCurrent)
68    {
69  24 this(aStatus, aMessage, Math.round((float) aCurrent /
70    (float) aTotal * 100.0f));
71    }
72   
73    //------------------------------------------------------------------------
74    /**
75    * Copy constructor.
76    *
77    * @param aProgressData Existing ProgressData
78    */
 
79  1 toggle public
80    ProgressData(ProgressData aProgressData)
81    {
82  1 this(aProgressData.getStatus(), aProgressData.getMessage(),
83    aProgressData.getProgress());
84    }
85   
86    //------------------------------------------------------------------------
87    /**
88    * Returns the progress information as an Integer with value between 0
89    * and 100.
90    *
91    * @return Progress information as an Integer with value between 0
92    * and 100.
93    */
 
94  2 toggle public int
95    getProgress()
96    {
97  2 return theProgress;
98    }
99   
100    //------------------------------------------------------------------------
101   
102    /**
103    * {@inheritDoc}
104    */
 
105  13 toggle @Override
106    public boolean
107    equals(Object anObject)
108    {
109  13 if (this == anObject)
110    {
111  3 return true;
112    }
113   
114  10 if (!super.equals(anObject))
115    {
116  3 return false;
117    }
118   
119  7 if (getClass() != anObject.getClass())
120    {
121  0 return false;
122    }
123   
124  7 final ProgressData myAnother = (ProgressData) anObject;
125  7 if (theProgress != myAnother.theProgress)
126    {
127  0 return false;
128    }
129   
130  7 return true;
131    }
132   
133    //------------------------------------------------------------------------
134    /**
135    * {@inheritDoc}
136    */
 
137  6 toggle @Override
138    public int
139    hashCode()
140    {
141  6 final int myPrime = 31;
142  6 int myResult = super.hashCode();
143   
144  6 myResult = myPrime * myResult + theProgress;
145   
146  6 return myResult;
147    }
148   
149    //------------------------------------------------------------------------
150    /**
151    * {@inheritDoc}
152    */
 
153  1 toggle @Override
154    public String
155    toString()
156    {
157  1 return "ProgressData(" + super.toString() + ", Progress='" +
158    getProgress() + "%')";
159    }
160   
161    //------------------------------------------------------------------------
162    // members
163    //------------------------------------------------------------------------
164    /**
165    * Progress completed in percent.
166    */
167    private final int theProgress;
168   
169    /**
170    * Reusable <code>ProgressData</code> instance corresponding to a
171    * <b>Started</b> event.
172    */
173    public static final ProgressData STARTED =
174    new ProgressData(Status.STARTED, "Task has started.", 0);
175   
176    /**
177    * Reusable <code>ProgressData</code> instance corresponding to a
178    * <b>Failed</b> event.
179    */
180    public static final ProgressData FAILED =
181    new ProgressData(Status.FAILED, "Task has failed", 0);
182   
183    /**
184    * Reusable <code>ProgressData</code> instance corresponding to a
185    * <b>Completed</b> event.
186    */
187    public static final ProgressData COMPLETED =
188    new ProgressData(Status.COMPLETED, "Task has completed.", 100);
189    }