/* -------------------------------------------------------- * * Aaron Morris * * CS522 * * Object-Oriented Event-Driven Simulation * * * * Class representing Event List. Queue of events. * * Events are added in sorted order * * -------------------------------------------------------- */ //package datasend; import java.awt.*; public class EventQueue { protected SimEvent eventList; // Start of Event List protected SimEvent tail; // End of list protected int numQueued; // Number of Items in List /* Basic Object Constructor, creating Queue to store events */ public EventQueue() { this.eventList = null; this.tail = null; this.numQueued = 0; } // Method to return number of Queued objects public int getNumQueued() { return this.numQueued; } // Method to remove and return first event in Queue public SimEvent deQueue() { SimEvent temp; temp = eventList; // If there are queued members if (numQueued > 0) { eventList = eventList.getNext(); if (eventList == null) tail = null; temp.setNext(null); numQueued--; } else { System.out.println("Tried to DeQueue when Q Empty"); } //System.out.println("DEQUEUED " + temp.getStringRep()); //PrintQueue(); return temp; } // Method to add an Event to the list in sorted order public void enQueue(SimEvent ev) { SimEvent temp,temp2; // If will be first event in list if (numQueued == 0) { eventList = ev; tail = ev; } // If adding to beginning else if (ev.getSortVal() < eventList.getSortVal()) { ev.setNext(eventList); eventList = ev; } // If adding at end else if (ev.getSortVal() >= tail.getSortVal()) { tail.setNext(ev); tail = ev; ev.setNext(null); } // Else somewhere in the middle, have to traverse list else { temp = eventList; while ((temp.getNext() != null)&& (ev.getSortVal() > temp.getNext().getSortVal())) { temp = temp.getNext(); } temp2 = temp.getNext(); temp.setNext(ev); ev.setNext(temp2); } numQueued++; //System.out.println("ENQUEUED " + ev.getStringRep()); //PrintQueue(); } // For Testing purposes, print out current eventList public void PrintQueue() { SimEvent temp = eventList; System.out.print("EventList[" + numQueued + "]: "); while (temp != null) { System.out.print(" "); System.out.print(temp.getStringRep()); temp = temp.getNext(); } System.out.println (" END OF LIST"); } }