001 package edu.jhu.mb.ernst.engine.queue; 002 003 import java.util.Collection; 004 import java.util.Comparator; 005 import java.util.PriorityQueue; 006 007 import org.slf4j.Logger; 008 import org.slf4j.LoggerFactory; 009 010 import edu.jhu.mb.ernst.engine.DiscreteEvent; 011 import edu.jhu.mb.ernst.engine.DiscreteEventQueue; 012 013 /*********************************************************************** 014 * Default implementation of DiscreteEventQueue. 015 * 016 * @version 017 * $Date: 2012-04-15 13:06:25 -0500 (Sun, 15 Apr 2012) $ 018 * $Rev: 7 $ 019 * $Author: croft $ 020 * @since 021 * 2012-02-19 022 * @author 023 * David Wallace Croft 024 ***********************************************************************/ 025 public final class DefaultDiscreteEventQueueImp 026 implements DiscreteEventQueue 027 //////////////////////////////////////////////////////////////////////// 028 //////////////////////////////////////////////////////////////////////// 029 { 030 031 private static final Class<DefaultDiscreteEventQueueImp> 032 CLASS = DefaultDiscreteEventQueueImp.class; 033 034 private static final Logger 035 LOGGER = LoggerFactory.getLogger ( CLASS ); 036 037 // 038 039 private final PriorityQueue<DiscreteEvent> priorityQueue; 040 041 //////////////////////////////////////////////////////////////////////// 042 //////////////////////////////////////////////////////////////////////// 043 044 public DefaultDiscreteEventQueueImp ( 045 final Comparator<DiscreteEvent> discreteEventComparator ) 046 //////////////////////////////////////////////////////////////////////// 047 { 048 priorityQueue 049 = new PriorityQueue<DiscreteEvent> ( 1, discreteEventComparator ); 050 } 051 052 //////////////////////////////////////////////////////////////////////// 053 //////////////////////////////////////////////////////////////////////// 054 055 @Override 056 public void add ( final DiscreteEvent... discreteEvents ) 057 //////////////////////////////////////////////////////////////////////// 058 { 059 for ( final DiscreteEvent discreteEvent : discreteEvents ) 060 { 061 priorityQueue.add ( discreteEvent ); 062 } 063 } 064 065 @Override 066 public void addAll ( 067 final Collection<DiscreteEvent> discreteEventCollection ) 068 //////////////////////////////////////////////////////////////////////// 069 { 070 LOGGER.debug ( 071 "discreteEventCollection size: {},", 072 Integer.valueOf ( discreteEventCollection.size ( ) ) ); 073 074 LOGGER.debug ( 075 "priorityQueue size before addAll: {},", 076 Integer.valueOf ( priorityQueue.size ( ) ) ); 077 078 priorityQueue.addAll ( discreteEventCollection ); 079 080 LOGGER.debug ( 081 "priorityQueue size after addAll: {},", 082 Integer.valueOf ( priorityQueue.size ( ) ) ); 083 } 084 085 @Override 086 public void clear ( ) 087 //////////////////////////////////////////////////////////////////////// 088 { 089 priorityQueue.clear ( ); 090 } 091 092 @Override 093 public boolean offer ( DiscreteEvent discreteEvent ) 094 //////////////////////////////////////////////////////////////////////// 095 { 096 return priorityQueue.add ( discreteEvent ); 097 } 098 099 @Override 100 public DiscreteEvent peek ( ) 101 //////////////////////////////////////////////////////////////////////// 102 { 103 return priorityQueue.peek ( ); 104 } 105 106 @Override 107 public DiscreteEvent poll ( ) 108 //////////////////////////////////////////////////////////////////////// 109 { 110 return priorityQueue.poll ( ); 111 } 112 113 //////////////////////////////////////////////////////////////////////// 114 //////////////////////////////////////////////////////////////////////// 115 }