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:
PropertySortedEventTableImpl

public abstract 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  EventTableOrganization organization
           
protected  EventPropertyGetter propertyGetter
           
 
Constructor Summary
PropertySortedEventTable(EventPropertyGetter propertyGetter, EventTableOrganization organization)
          Ctor.
 
Method Summary
 void add(EventBean[] events)
          Add an array of events.
 void addRemove(EventBean[] newData, EventBean[] oldData)
          Add and remove events from table.
protected  java.lang.Object getIndexedValue(EventBean theEvent)
          Determine multikey for index access.
 java.lang.Integer getNumberOfEvents()
          If the number of events is readily available, an implementation will return that number or it may return null to indicate that the count is not readily available.
 EventTableOrganization getOrganization()
           
abstract  java.util.Set<EventBean> lookupConstants(RangeIndexLookupValue lookupValueBase)
           
abstract  java.util.Set<EventBean> lookupGreater(java.lang.Object keyStart)
           
abstract  java.util.Collection<EventBean> lookupGreaterColl(java.lang.Object keyStart)
           
abstract  java.util.Set<EventBean> lookupGreaterEqual(java.lang.Object keyStart)
           
abstract  java.util.Collection<EventBean> lookupGreaterEqualColl(java.lang.Object keyStart)
           
abstract  java.util.Set<EventBean> lookupLess(java.lang.Object keyStart)
           
abstract  java.util.Set<EventBean> lookupLessEqual(java.lang.Object keyStart)
           
abstract  java.util.Collection<EventBean> lookupLessEqualColl(java.lang.Object keyStart)
           
abstract  java.util.Collection<EventBean> lookupLessThenColl(java.lang.Object keyStart)
           
abstract  java.util.Set<EventBean> lookupRange(java.lang.Object keyStart, boolean includeStart, java.lang.Object keyEnd, boolean includeEnd, boolean allowRangeReversal)
           
abstract  java.util.Collection<EventBean> lookupRangeColl(java.lang.Object keyStart, boolean includeStart, java.lang.Object keyEnd, boolean includeEnd, boolean allowRangeReversal)
           
abstract  java.util.Set<EventBean> lookupRangeInverted(java.lang.Object keyStart, boolean includeStart, java.lang.Object keyEnd, boolean includeEnd)
           
abstract  java.util.Collection<EventBean> lookupRangeInvertedColl(java.lang.Object keyStart, boolean includeStart, java.lang.Object keyEnd, boolean includeEnd)
           
protected static java.util.Set<EventBean> normalize(java.util.SortedMap<java.lang.Object,java.util.Set<EventBean>> submap)
           
protected static java.util.Set<EventBean> normalize(java.util.SortedMap<java.lang.Object,java.util.Set<EventBean>> submapOne, java.util.SortedMap<java.lang.Object,java.util.Set<EventBean>> submapTwo)
           
protected static java.util.Collection<EventBean> normalizeCollection(java.util.SortedMap<java.lang.Object,java.util.Set<EventBean>> submap)
           
protected static java.util.Collection<EventBean> normalizeCollection(java.util.SortedMap<java.lang.Object,java.util.Set<EventBean>> submapOne, java.util.SortedMap<java.lang.Object,java.util.Set<EventBean>> submapTwo)
           
 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
 
Methods inherited from interface com.espertech.esper.epl.join.table.EventTable
add, clear, destroy, getIndex, getNumKeys, getProviderClass, isEmpty, iterator, remove
 

Field Detail

propertyGetter

protected final EventPropertyGetter propertyGetter

organization

protected final EventTableOrganization organization
Constructor Detail

PropertySortedEventTable

public PropertySortedEventTable(EventPropertyGetter propertyGetter,
                                EventTableOrganization organization)
Ctor.

Method Detail

lookupRange

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

lookupRangeColl

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

lookupRangeInverted

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

lookupRangeInvertedColl

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

lookupLess

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

lookupLessThenColl

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

lookupLessEqual

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

lookupLessEqualColl

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

lookupGreaterEqual

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

lookupGreaterEqualColl

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

lookupGreater

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

lookupGreaterColl

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

lookupConstants

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

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

getNumberOfEvents

public java.lang.Integer getNumberOfEvents()
Description copied from interface: EventTable
If the number of events is readily available, an implementation will return that number or it may return null to indicate that the count is not readily available.

Specified by:
getNumberOfEvents in interface EventTable
Returns:
number of events

normalize

protected static java.util.Set<EventBean> normalize(java.util.SortedMap<java.lang.Object,java.util.Set<EventBean>> submap)

normalizeCollection

protected static java.util.Collection<EventBean> normalizeCollection(java.util.SortedMap<java.lang.Object,java.util.Set<EventBean>> submap)

normalizeCollection

protected static java.util.Collection<EventBean> normalizeCollection(java.util.SortedMap<java.lang.Object,java.util.Set<EventBean>> submapOne,
                                                                     java.util.SortedMap<java.lang.Object,java.util.Set<EventBean>> submapTwo)

normalize

protected static java.util.Set<EventBean> normalize(java.util.SortedMap<java.lang.Object,java.util.Set<EventBean>> submapOne,
                                                    java.util.SortedMap<java.lang.Object,java.util.Set<EventBean>> submapTwo)

toQueryPlan

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

getOrganization

public EventTableOrganization getOrganization()
Specified by:
getOrganization in interface EventTable

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