net.esper.collection
Class TimeWindow

java.lang.Object
  extended by net.esper.collection.TimeWindow
All Implemented Interfaces:
java.lang.Iterable

public final class TimeWindow
extends java.lang.Object
implements java.lang.Iterable

Container for events per time slot. The time is provided as long milliseconds by client classes. Events are for a specified timestamp and the implementation creates and adds the event to a slot for that timestamp. Events can be expired from the window via the expireEvents method when their timestamp is before (or less then) an expiry timestamp passed in. Expiry removes the event from the window. The window allows iteration through its contents. It is assumed that the timestamp passed to the add method is ascending. The window is backed by a LinkedList reflecting the timestamp order rather then any sorted map or linked hash map for performance reasons.


Constructor Summary
TimeWindow()
          Ctor.
 
Method Summary
 void add(long timestamp, EventBean bean)
          Adds event to the time window for the specified timestamp.
 java.util.List<EventBean> expireEvents(long expireBefore)
          Return and remove events in time-slots earlier (less) then the timestamp passed in, returning the list of events expired.
 java.lang.Long getOldestTimestamp()
          Returns the oldest timestamp in the collection if there is at least one entry, else it returns null if the window is empty.
 boolean isEmpty()
          Returns true if the window is currently empty.
 java.util.Iterator<EventBean> iterator()
          Returns event iterator.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TimeWindow

public TimeWindow()
Ctor.

Method Detail

add

public final void add(long timestamp,
                      EventBean bean)
Adds event to the time window for the specified timestamp.

Parameters:
timestamp - - the time slot for the event
bean - - event to add

expireEvents

public final java.util.List<EventBean> expireEvents(long expireBefore)
Return and remove events in time-slots earlier (less) then the timestamp passed in, returning the list of events expired.

Parameters:
expireBefore - is the timestamp from which on to keep events in the window
Returns:
a list of events expired and removed from the window, or null if none expired

iterator

public final java.util.Iterator<EventBean> iterator()
Returns event iterator.

Specified by:
iterator in interface java.lang.Iterable
Returns:
iterator over events currently in window

getOldestTimestamp

public final java.lang.Long getOldestTimestamp()
Returns the oldest timestamp in the collection if there is at least one entry, else it returns null if the window is empty.

Returns:
null if empty, oldest timestamp if not empty

isEmpty

public final boolean isEmpty()
Returns true if the window is currently empty.

Returns:
true if empty, false if not