EMMA Coverage Report (generated Tue Jan 14 00:37:43 CET 2014)
[all classes][org.jdtaus.core.monitor]

COVERAGE SUMMARY FOR SOURCE FILE [Task.java]

nameclass, %method, %block, %line, %
Task.java0%   (0/3)0%   (0/21)0%   (0/256)0%   (0/51)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class AscendingTaskComparator0%   (0/1)0%   (0/2)0%   (0/55)0%   (0/13)
AscendingTaskComparator (): void 0%   (0/1)0%   (0/3)0%   (0/2)
compare (Object, Object): int 0%   (0/1)0%   (0/52)0%   (0/11)
     
class DescendingTaskComparator0%   (0/1)0%   (0/2)0%   (0/8)0%   (0/3)
DescendingTaskComparator (): void 0%   (0/1)0%   (0/3)0%   (0/2)
compare (Object, Object): int 0%   (0/1)0%   (0/5)0%   (0/1)
     
class Task0%   (0/1)0%   (0/17)0%   (0/193)0%   (0/35)
<static initializer> 0%   (0/1)0%   (0/9)0%   (0/2)
Task (): void 0%   (0/1)0%   (0/14)0%   (0/5)
clone (): Object 0%   (0/1)0%   (0/9)0%   (0/3)
equals (Object): boolean 0%   (0/1)0%   (0/17)0%   (0/1)
getDescription (): Message 0%   (0/1)0%   (0/3)0%   (0/1)
getMaximum (): int 0%   (0/1)0%   (0/10)0%   (0/3)
getMinimum (): int 0%   (0/1)0%   (0/10)0%   (0/3)
getProgress (): int 0%   (0/1)0%   (0/10)0%   (0/3)
getProgressDescription (): Message 0%   (0/1)0%   (0/3)0%   (0/1)
getTimestamp (): long 0%   (0/1)0%   (0/3)0%   (0/1)
hashCode (): int 0%   (0/1)0%   (0/4)0%   (0/1)
internalString (): String 0%   (0/1)0%   (0/60)0%   (0/1)
isCancelable (): boolean 0%   (0/1)0%   (0/3)0%   (0/1)
isCancelled (): boolean 0%   (0/1)0%   (0/10)0%   (0/3)
isIndeterminate (): boolean 0%   (0/1)0%   (0/3)0%   (0/1)
setCancelled (boolean): void 0%   (0/1)0%   (0/14)0%   (0/4)
toString (): String 0%   (0/1)0%   (0/11)0%   (0/1)

1/*
2 *  jDTAUS Core API
3 *  Copyright (C) 2005 Christian Schulte
4 *  <cs@schulte.it>
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 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19 *
20 */
21package org.jdtaus.core.monitor;
22 
23import java.io.Serializable;
24import java.rmi.server.UID;
25import java.util.Comparator;
26import org.jdtaus.core.text.Message;
27 
28/**
29 * A task of execution.
30 * <p>A task is a sequence of operations taking time. This class defines
31 * properties to be used by applications to query a task for information and for
32 * canceling a task. Property {@code indeterminate} indicates if a task
33 * supports properties {@code minimum}, {@code maximum} and {@code progress}.
34 * Property {@code cancelable} indicates if a task may be canceled by an
35 * application by setting property {@code cancelled} to {@code true}.
36 * Properties {@code description} and {@code progressDescription} hold
37 * presentation descriptions of a task itself and of the work currently
38 * performed by a task.</p>
39 *
40 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
41 * @version $JDTAUS: Task.java 8743 2012-10-07 03:06:20Z schulte $
42 *
43 * @see TaskEvent
44 */
45public abstract class Task implements Cloneable, Serializable
46{
47    //--Constants---------------------------------------------------------------
48 
49    /**
50     * Comparator for sorting tasks in ascending order of creation time.
51     * <p><b>Note:</b><br/>
52     * This comparator imposes orderings that are inconsistent with equals.</p>
53     */
54    public static final Comparator ASCENDING = new AscendingTaskComparator();
55 
56    /**
57     * Comparator for sorting tasks in descending order of creation time.
58     * <p><b>Note:</b><br/>
59     * This comparator imposes orderings that are inconsistent with equals.</p>
60     */
61    public static final Comparator DESCENDING =
62        new DescendingTaskComparator();
63 
64    /** Serial version UID for backwards compatibility with 1.0.x classes. */
65    private static final long serialVersionUID = -3919376355708819307L;
66 
67    //---------------------------------------------------------------Constants--
68    //--Constructors------------------------------------------------------------
69 
70    /** Creates a new {@code Task} instance. */
71    public Task()
72    {
73        super();
74        this.uid = new UID();
75        this.indeterminate = true;
76        this.timestamp = System.currentTimeMillis();
77    }
78 
79    //------------------------------------------------------------Constructors--
80    //--Task--------------------------------------------------------------------
81 
82    /**
83     * Unique task identifier.
84     * @serial
85     */
86    private UID uid;
87 
88    /**
89     * The timestamp this task got created.
90     * @serial
91     */
92    private long timestamp;
93 
94    /**
95     * Flag indicating that an application cancelled the task.
96     * @serial
97     */
98    private boolean cancelled;
99 
100    /**
101     * Description of the {@code Task}.
102     * @serial
103     */
104    protected Message description;
105 
106    /**
107     * Description of the progress of the {@code Task}.
108     * @serial
109     */
110    protected Message progressDescription;
111 
112    /**
113     * The lower bound of the range.
114     * @serial
115     */
116    protected int minimum;
117 
118    /**
119     * The upper bound of the range.
120     * @serial
121     */
122    protected int maximum;
123 
124    /**
125     * Indicates the progress of the task.
126     * @serial
127     */
128    protected int progress;
129 
130    /**
131     * Flag indicating if the operations performed by the task are of unknown
132     * length.
133     * @serial
134     */
135    protected boolean indeterminate;
136 
137    /**
138     * Flag indicating that an application may cancel the task.
139     * @serial
140     */
141    protected boolean cancelable;
142 
143    /**
144     * Getter for property {@code timestamp}.
145     *
146     * @return the timestamp this task got created.
147     */
148    public final synchronized long getTimestamp()
149    {
150        return this.timestamp;
151    }
152 
153    /**
154     * Getter for property {@code description}.
155     *
156     * @return description of the task.
157     */
158    public final synchronized Message getDescription()
159    {
160        return this.description;
161    }
162 
163    /**
164     * Getter for property {@code progressDescription}.
165     *
166     * @return description of the progress of the task or {@code null}.
167     */
168    public final synchronized Message getProgressDescription()
169    {
170        return this.progressDescription;
171    }
172 
173    /**
174     * Gets the lower end of the progress value.
175     *
176     * @return an int representing the minimum value.
177     *
178     * @throws IllegalStateException if the task is indeterminate.
179     */
180    public final synchronized int getMinimum()
181    {
182        if ( this.isIndeterminate() )
183        {
184            throw new IllegalStateException();
185        }
186 
187        return this.minimum;
188    }
189 
190    /**
191     * Gets the higher end of the progress value.
192     *
193     * @return an int representing the maximum value.
194     *
195     * @throws IllegalStateException if the task is indeterminate.
196     */
197    public final synchronized int getMaximum()
198    {
199        if ( this.isIndeterminate() )
200        {
201            throw new IllegalStateException();
202        }
203 
204        return this.maximum;
205    }
206 
207    /**
208     * Gets the progress of the task.
209     *
210     * @return the progress of the task.
211     *
212     * @throws IllegalStateException if the task is indeterminate.
213     */
214    public final synchronized int getProgress()
215    {
216        if ( this.isIndeterminate() )
217        {
218            throw new IllegalStateException();
219        }
220 
221        return this.progress;
222    }
223 
224    /**
225     * Flag indicating if the task supports properties {@code minimum},
226     * {@code maximum} and {@code progress}.
227     *
228     * @return {@code true} if the operations performed by the task are of
229     * unknown length; {@code false} if properties {@code minimum},
230     * {@code maximum} and {@code progress} hold progress information.
231     */
232    public final synchronized boolean isIndeterminate()
233    {
234        return this.indeterminate;
235    }
236 
237    /**
238     * Flag indicating that the task supports property {@code cancelled}.
239     *
240     * @return {@code true} if the task supports property {@code cancelled};
241     * {@code false} if property {@code cancelled} is ignored by the task.
242     */
243    public final synchronized boolean isCancelable()
244    {
245        return this.cancelable;
246    }
247 
248    /**
249     * Flag indicating that the task is canceled.
250     *
251     * @return {@code true} if the task is canceled; {@code false} else.
252     *
253     * @throws IllegalStateException if the task is not cancelable.
254     */
255    public final synchronized boolean isCancelled()
256    {
257        if ( !this.isCancelable() )
258        {
259            throw new IllegalStateException();
260        }
261 
262        return this.cancelled;
263    }
264 
265    /**
266     * Setter for property {@code cancelled}.
267     * <p>Applications may request cancellation of a {@code Task} by setting
268     * property {@code cancelled} to {@code true}. Implementations indicate
269     * support for task cancellation by property {@code cancelable}.</p>
270     *
271     * @param value {@code true} to cancel the task; {@code false} else.
272     *
273     * @throws IllegalStateException if the task is not cancelable or is already
274     * canceled.
275     */
276    public final synchronized void setCancelled( final boolean value )
277    {
278        if ( !this.isCancelable() || this.isCancelled() )
279        {
280            throw new IllegalStateException();
281        }
282 
283        this.cancelled = value;
284    }
285 
286    /**
287     * Creates a string representing the properties of the instance.
288     *
289     * @return a string representing the properties of the instance.
290     */
291    private String internalString()
292    {
293        return new StringBuffer( 500 ).append( '{' ).
294            append( "uid=" ).append( this.uid ).
295            append( ", indeterminate=" ).append( this.indeterminate ).
296            append( ", cancelable=" ).append( this.cancelable ).
297            append( ", cancelled=" ).append( this.cancelled ).
298            append( ", maximum=" ).append( this.maximum ).
299            append( ", minimum=" ).append( this.minimum ).
300            append( ", progress=" ).append( this.progress ).
301            append( ", description=" ).append( this.description ).
302            append( ", progressDescription=" ).
303            append( this.progressDescription ).
304            append( ", timestamp=" ).append( this.timestamp ).
305            append( '}' ).toString();
306 
307    }
308 
309    //--------------------------------------------------------------------Task--
310    //--Object------------------------------------------------------------------
311 
312    /**
313     * Returns a string representation of the object.
314     *
315     * @return a string representation of the object.
316     */
317    public String toString()
318    {
319        return super.toString() + this.internalString();
320    }
321 
322    /**
323     * Returns a hash code value for this object.
324     *
325     * @return a hash code value for this object.
326     */
327    public final int hashCode()
328    {
329        return this.uid.hashCode();
330    }
331 
332    /**
333     * Indicates whether some other object is equal to this one.
334     * <p>Tasks internally cary a UID which is created during instantiation.
335     * This UID is used for comparing {@code o} with the instance.</p>
336     *
337     * @param o the reference object with which to compare.
338     *
339     * @return {@code true} if this object is the same as {@code o};
340     * {@code false} otherwise.
341     *
342     * @see UID
343     */
344    public final boolean equals( final Object o )
345    {
346        return o == this || ( o instanceof Task &&
347            ( (Task) o ).uid.equals( this.uid ) );
348 
349    }
350 
351    /**
352     * Creates and returns a copy of this object.
353     *
354     * @return a clone of this instance.
355     */
356    public Object clone()
357    {
358        try
359        {
360            return super.clone();
361        }
362        catch ( final CloneNotSupportedException e )
363        {
364            throw new AssertionError( e );
365        }
366    }
367 
368    //------------------------------------------------------------------Object--
369}
370 
371/**
372 * Comparator for sorting tasks in ascending order of creation time.
373 * <p><b>Note:</b><br/>
374 * This comparator imposes orderings that are inconsistent with equals.</p>
375 *
376 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
377 * @version $JDTAUS: Task.java 8743 2012-10-07 03:06:20Z schulte $
378 */
379class AscendingTaskComparator implements Comparator, Serializable
380{
381    /** Creates a new {@code AscendingTaskComparator} instance. */
382    AscendingTaskComparator()
383    {
384        super();
385    }
386 
387    //--Comparator--------------------------------------------------------------
388 
389    /**
390     * {@inheritDoc}
391     *
392     * @throws NullPointerException if either {@code o1} or {@code o2} is
393     * {@code null}.
394     * @throws ClassCastException if either {@code o1} or {@code o2} is not an
395     * instance of {@code Task}.
396     */
397    public int compare( final Object o1, final Object o2 )
398    {
399        if ( o1 == null )
400        {
401            throw new NullPointerException( "o1" );
402        }
403        if ( o2 == null )
404        {
405            throw new NullPointerException( "o2" );
406        }
407        if ( !( o1 instanceof Task ) )
408        {
409            throw new ClassCastException( o1.getClass().getName() );
410        }
411        if ( !( o2 instanceof Task ) )
412        {
413            throw new ClassCastException( o2.getClass().getName() );
414        }
415 
416        // TODO JDK 1.5 Long.valueOf(long)
417        final Long l1 = new Long( ( (Task) o1 ).getTimestamp() );
418        final Long l2 = new Long( ( (Task) o2 ).getTimestamp() );
419        return l1.compareTo( l2 );
420    }
421 
422    //--------------------------------------------------------------Comparator--
423}
424 
425/**
426 * Comparator for sorting tasks in descending order of creation time.
427 * <p><b>Note:</b><br/>
428 * This comparator imposes orderings that are inconsistent with equals.</p>
429 *
430 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
431 * @version $JDTAUS: Task.java 8743 2012-10-07 03:06:20Z schulte $
432 */
433class DescendingTaskComparator
434    extends AscendingTaskComparator
435{
436 
437    /** Creates a new {@code DescendingTaskComparator} instance. */
438    DescendingTaskComparator()
439    {
440        super();
441    }
442 
443    //--Comparator--------------------------------------------------------------
444 
445    /**
446     * {@inheritDoc}
447     *
448     * @throws NullPointerException if either {@code o1} or {@code o2} is
449     * {@code null}.
450     * @throws ClassCastException if either {@code o1} or {@code o2} is not an
451     * instance of {@code Task}.
452     */
453    public int compare( final Object o1, final Object o2 )
454    {
455        return super.compare( o2, o1 );
456    }
457 
458    //--------------------------------------------------------------Comparator--
459}

[all classes][org.jdtaus.core.monitor]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov