EMMA Coverage Report (generated Sun Feb 05 10:43:15 CET 2012)
[all classes][desmoj.core.simulator]

COVERAGE SUMMARY FOR SOURCE FILE [QueueListFifo.java]

nameclass, %method, %block, %line, %
QueueListFifo.java0%   (0/1)0%   (0/2)0%   (0/77)0%   (0/30)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class QueueListFifo0%   (0/1)0%   (0/2)0%   (0/77)0%   (0/30)
QueueListFifo (): void 0%   (0/1)0%   (0/9)0%   (0/4)
insert (Entity): void 0%   (0/1)0%   (0/68)0%   (0/26)

1package desmoj.core.simulator;
2 
3/**
4 * Contains the implementation with the java.util.LinkedList to represent queueing
5 * functionality. The entities are queued first according to their priority and
6 * second in FIFO (first in first out) order. The statistic data of the queue will be
7 * stored in a <code>QueueBased</code> object. The <code>QueueListStandardFifo</code>
8 * has a reference to its <code>QueueBased</code> object. This class needs a 
9 * reference to a subclass of QueueBased to update the queue statistics.
10 * It is used in many kinds of queue implementations i.e. in classes
11 * <code>Queue</code> and <code>ProcessQueue</code>.
12 *
13 * @see QueueList
14 * @see QueueBased
15 * @see Queue
16 * @see ProcessQueue
17 * 
18 * @version DESMO-J, Ver. 2.3.3 copyright (c) 2011
19 * @author Justin Neumann
20 * @author based on ideas from Soenke Claassen, Tim Lechler, Johannes Goebel
21 * 
22 * Licensed under the Apache License, Version 2.0 (the "License");
23 * you may not use this file except in compliance with the License. You
24 * may obtain a copy of the License at
25 * http://www.apache.org/licenses/LICENSE-2.0
26 *
27 * Unless required by applicable law or agreed to in writing, software
28 * distributed under the License is distributed on an "AS IS"
29 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
30 * or implied. See the License for the specific language governing
31 * permissions and limitations under the License.
32 *
33 */
34public class QueueListFifo<E extends Entity> extends QueueListStandard<E> implements
35                java.beans.PropertyChangeListener
36        
37        {
38 
39        /**
40         * Constructs an empty <code>QueueListStandardFifo</code> with no reference to its
41         * client QueueBased. This no-arg constructor is necessary to instantiate an
42         * object of this class by calling the
43         * <code>java.lang.Class.newInstance()</code> method. The reference to the
44         * QueueBased object making use of this queue-functionality must be provided
45         * later by calling the setQueueBased() method. The initial length is always
46         * zero.
47         */
48        public QueueListFifo()
49        {        
50                super();
51 
52                // set the abbreviation for this kind of queueing discipline
53                this.abbreviation = "FIFO";
54 
55                // we don't know the client queue yet.
56                // Must be provided later by calling the setQueueBased() method
57                clientQ = null;
58 
59        }
60 
61        /**
62         * Adds a new Entity to the QueueListStandardFifo. Entities are inserted according
63         * to their priority in descending order. The highest priority Entity will
64         * always be first in the queue. Entities with same priority are inserted in
65         * FiFo order.
66         * 
67         * @param e
68         *            Entity : The Entity to add to the QueueListStandardFifo
69         */
70        public void insert(E e) 
71        {
72                
73                 if (e == null) { // check for null reference
74                        sendWarning(
75                                        "Can not insert entity. Command ignored.",
76                                        "Class: QueueListStandardFifo Method: insert(Entity e).",
77                                        "The Entity reference given as parameter is a null reference.",
78                                        "Be sure to only use valid references.");
79                        return;
80                }
81 
82                if (contains(e)) { // entity must not be contained twice in queue
83                        sendWarning("Can not insert entity. Command ignored.",
84                                        "Class: QueueListStandardFifo Method: insert(Entity e).",
85                                        "The Entity given as parameter is already enqueued.",
86                                        "Make sure the entity is not enqueued here by calling "
87                                                        + "method 'contains(Entity e)'.");
88                        return;
89                }
90                
91                // if there are already entities in queue
92                if (!this.isEmpty())  
93                {
94                        // continuously asks the predecessor (FIFO) entities if they have a lower priority;
95                        // finally inserts at correct position
96                        
97                        E swap = last(); // swap here references the last element (FIFO)
98                        while (Entity.isSmaller(swap, e)) // FIFO
99                        {
100                                swap = pred(swap); // swap reference to successor of itself
101                        }
102                        
103                        if (swap == null)
104                        {
105                                queuelist.addFirst(e);
106                                statisticalInsert(e); // update statistics
107                                e.addQueueBased(this.clientQ); // sets entity's queue as this queued
108                        }
109                        else
110                        {
111                                this.insertAfter(e, swap); //inserts the entity at the correct position
112                                // with help of the java.util.LinkedList
113                        }
114                        
115                }
116                else
117                {
118                        queuelist.add(e);
119                        e.addQueueBased(this.clientQ); // sets entity's queue as this queued
120                        
121                        statisticalInsert(e); // update statistics
122                }
123        }
124}

[all classes][desmoj.core.simulator]
EMMA 2.0.9414 (unsupported private build) (C) Vladimir Roubtsov