com.espertech.esper.epl.join.table
Class PropertySortedEventTable

java.lang.Object
  extended by com.espertech.esper.epl.join.table.PropertySortedEventTable
All Implemented Interfaces:
EventTable, java.lang.Iterable<EventBean>
Direct Known Subclasses:
PropertySortedEventTableCoerced

public class PropertySortedEventTable
extends java.lang.Object
implements EventTable

Index that organizes events by the event property values into a single TreeMap sortable non-nested index with Object keys that store the property values.


Field Summary
protected  java.util.HashSet<EventBean> nullKeyedValues
           
protected  EventPropertyGetter propertyGetter
           
protected  java.util.TreeMap<java.lang.Object,java.util.Set<EventBean>> propertyIndex
          Index table.
protected  int streamNum
           
 
Constructor Summary
PropertySortedEventTable(int streamNum, EventPropertyGetter propertyGetter)
          Ctor.
 
Method Summary
 void add(EventBean[] events)
          Add an array of events.
 void addRemove(EventBean[] newData, EventBean[] oldData)
          Add and remove events from table.
 void clear()
          Clear out index.
protected  java.lang.Object coerce(java.lang.Object value)
           
protected  java.lang.Object getIndexedValue(EventBean theEvent)
          Determine multikey for index access.
 boolean isEmpty()
          Returns true if the index is empty, or false if not
 java.util.Iterator<EventBean> iterator()
          Returns an iterator over events in the table.
 java.util.Set<EventBean> lookupConstants(RangeIndexLookupValue lookupValueBase)
           
 java.util.Set<EventBean> lookupGreater(java.lang.Object keyStart)
           
 java.util.Collection<EventBean> lookupGreaterColl(java.lang.Object keyStart)
           
 java.util.Set<EventBean> lookupGreaterEqual(java.lang.Object keyStart)
           
 java.util.Collection<EventBean> lookupGreaterEqualColl(java.lang.Object keyStart)
           
 java.util.Set<EventBean> lookupLess(java.lang.Object keyStart)
           
 java.util.Set<EventBean> lookupLessEqual(java.lang.Object keyStart)
           
 java.util.Collection<EventBean> lookupLessEqualColl(java.lang.Object keyStart)
           
 java.util.Collection<EventBean> lookupLessThenColl(java.lang.Object keyStart)
           
 java.util.Set<EventBean> lookupRange(java.lang.Object keyStart, boolean includeStart, java.lang.Object keyEnd, boolean includeEnd, boolean allowRangeReversal)
          Returns the set of events that have the same property value as the given event.
 java.util.Collection<EventBean> lookupRangeColl(java.lang.Object keyStart, boolean includeStart, java.lang.Object keyEnd, boolean includeEnd, boolean allowRangeReversal)
           
 java.util.Set<EventBean> lookupRangeInverted(java.lang.Object keyStart, boolean includeStart, java.lang.Object keyEnd, boolean includeEnd)
           
 java.util.Collection<EventBean> lookupRangeInvertedColl(java.lang.Object keyStart, boolean includeStart, java.lang.Object keyEnd, boolean includeEnd)
           
 void remove(EventBean[] events)
          Remove events.
 java.lang.String toQueryPlan()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

streamNum

protected final int streamNum

propertyGetter

protected final EventPropertyGetter propertyGetter

propertyIndex

protected final java.util.TreeMap<java.lang.Object,java.util.Set<EventBean>> propertyIndex
Index table.


nullKeyedValues

protected final java.util.HashSet<EventBean> nullKeyedValues
Constructor Detail

PropertySortedEventTable

public PropertySortedEventTable(int streamNum,
                                EventPropertyGetter propertyGetter)
Ctor.

Parameters:
streamNum - - the stream number that is indexed
Method Detail

coerce

protected java.lang.Object coerce(java.lang.Object value)

getIndexedValue

protected java.lang.Object getIndexedValue(EventBean theEvent)
Determine multikey for index access.

Parameters:
theEvent - to get properties from for key
Returns:
multi key

addRemove

public void addRemove(EventBean[] newData,
                      EventBean[] oldData)
Description copied from interface: EventTable
Add and remove events from table.

It is up to the index to decide whether to add first and then remove, or whether to remove and then add.

It is important to note that a given event can be in both the removed and the added events. This means that unique indexes probably need to remove first and then add. Most other non-unique indexes will add first and then remove since the an event can be both in the add and the remove stream.

Specified by:
addRemove in interface EventTable
Parameters:
newData - to add
oldData - to remove

add

public void add(EventBean[] events)
Add an array of events. Same event instance is not added twice. Event properties should be immutable. Allow null passed instead of an empty array.

Specified by:
add in interface EventTable
Parameters:
events - to add
Throws:
java.lang.IllegalArgumentException - if the event was already existed in the index

remove

public void remove(EventBean[] events)
Remove events.

Specified by:
remove in interface EventTable
Parameters:
events - to be removed, can be null instead of an empty array.
Throws:
java.lang.IllegalArgumentException - when the event could not be removed as its not in the index

lookupRange

public java.util.Set<EventBean> lookupRange(java.lang.Object keyStart,
                                            boolean includeStart,
                                            java.lang.Object keyEnd,
                                            boolean includeEnd,
                                            boolean allowRangeReversal)
Returns the set of events that have the same property value as the given event.

Parameters:
keyStart - to compare against
keyEnd - to compare against
allowRangeReversal - indicate whether "a between 60 and 50" should return no results (equivalent to a>= X and a <=Y) or should return results (equivalent to 'between' and 'in'
Returns:
set of events with property value, or null if none found (never returns zero-sized set)

lookupRangeColl

public java.util.Collection<EventBean> lookupRangeColl(java.lang.Object keyStart,
                                                       boolean includeStart,
                                                       java.lang.Object keyEnd,
                                                       boolean includeEnd,
                                                       boolean allowRangeReversal)

lookupRangeInverted

public java.util.Set<EventBean> lookupRangeInverted(java.lang.Object keyStart,
                                                    boolean includeStart,
                                                    java.lang.Object keyEnd,
                                                    boolean includeEnd)

lookupRangeInvertedColl

public java.util.Collection<EventBean> lookupRangeInvertedColl(java.lang.Object keyStart,
                                                               boolean includeStart,
                                                               java.lang.Object keyEnd,
                                                               boolean includeEnd)

lookupLess

public java.util.Set<EventBean> lookupLess(java.lang.Object keyStart)

lookupLessThenColl

public java.util.Collection<EventBean> lookupLessThenColl(java.lang.Object keyStart)

lookupLessEqual

public java.util.Set<EventBean> lookupLessEqual(java.lang.Object keyStart)

lookupLessEqualColl

public java.util.Collection<EventBean> lookupLessEqualColl(java.lang.Object keyStart)

lookupGreaterEqual

public java.util.Set<EventBean> lookupGreaterEqual(java.lang.Object keyStart)

lookupGreaterEqualColl

public java.util.Collection<EventBean> lookupGreaterEqualColl(java.lang.Object keyStart)

lookupGreater

public java.util.Set<EventBean> lookupGreater(java.lang.Object keyStart)

lookupGreaterColl

public java.util.Collection<EventBean> lookupGreaterColl(java.lang.Object keyStart)

isEmpty

public boolean isEmpty()
Description copied from interface: EventTable
Returns true if the index is empty, or false if not

Specified by:
isEmpty in interface EventTable
Returns:
true for empty index

iterator

public java.util.Iterator<EventBean> iterator()
Description copied from interface: EventTable
Returns an iterator over events in the table.

Specified by:
iterator in interface EventTable
Specified by:
iterator in interface java.lang.Iterable<EventBean>
Returns:
table iterator

clear

public void clear()
Description copied from interface: EventTable
Clear out index.

Specified by:
clear in interface EventTable

toQueryPlan

public java.lang.String toQueryPlan()
Specified by:
toQueryPlan in interface EventTable

lookupConstants

public java.util.Set<EventBean> lookupConstants(RangeIndexLookupValue lookupValueBase)

© 2006-2011 EsperTech Inc.
All rights reserved.
Visit us at espertech.com