de.grogra.xl.impl.queues
Class QueueCollection

java.lang.Object
  extended by de.grogra.xl.impl.queues.QueueCollection

public final class QueueCollection
extends java.lang.Object

A QueueCollection represents a set of Queues in the context of a Graph. For the base implementation of the XL interfaces, it is obtained at run-time by the invocation of Graph.getQueues().

Queues are added to this collection by invocation of getQueue(QueueDescriptor).

Author:
Ole Kniemeyer

Constructor Summary
QueueCollection(Graph graph)
           
 
Method Summary
 void addQueue(Queue queue)
           
 void clear()
          Clears all queues of this collection.
 Graph getGraph()
           
 RuntimeModel getModel()
           
<Q extends Queue>
Q
getQueue(QueueDescriptor<Q> descr)
          Registers and returns a queue for the given descriptor.
 void getQueues(java.util.List<Queue> list)
           
 boolean process(int[] segments)
          Processes the queues of this collection by invoking Queue.process(int[]) for every queue.
 void resetToSegment(int n)
           
 int startNewSegment()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

QueueCollection

public QueueCollection(Graph graph)
Method Detail

addQueue

public void addQueue(Queue queue)

clear

public void clear()
Clears all queues of this collection.


getGraph

public Graph getGraph()
Returns:
the Graph of this queue collection

getModel

public RuntimeModel getModel()
Returns:
the RuntimeModel of the graph of this queue collection

getQueue

public <Q extends Queue> Q getQueue(QueueDescriptor<Q> descr)
Registers and returns a queue for the given descriptor. If this method has been invoked before with the same descriptor, the previously returned queue is returned again. Otherwise, a new queue is created by the invocation of QueueDescriptor.createQueue(QueueCollection) on descr, registered with this queue collection, and returned.

Parameters:
descr - the descriptor of the queue
Returns:
a queue corresponding to the descriptor

getQueues

public void getQueues(java.util.List<Queue> list)

process

public boolean process(int[] segments)
                throws RuntimeModelException
Processes the queues of this collection by invoking Queue.process(int[]) for every queue. All queues which have been registered by getQueue(QueueDescriptor) are processed. The order of processing is defined by the QueueDescriptors of the queues: If q and r are two queues having descriptors Q and R, then q.process(segments) may be invoked before r.process(segments) only if Q is not contained in R.queuesToProcessAfter() and R is not contained in Q.queuesToProcessBefore(). After all queues have been processed, this method clears the queues.

Returns:
true iff at least one invocation of the process method on a queue has returned true.
Throws:
RuntimeModelException - if the processing of a queue throws such an exception, or if there is a circularity in the processing order

resetToSegment

public void resetToSegment(int n)

startNewSegment

public int startNewSegment()