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

java.lang.Object
  extended by com.espertech.esper.epl.join.table.PropertyCompositeEventTable
All Implemented Interfaces:
EventTable, java.lang.Iterable<EventBean>

public class PropertyCompositeEventTable
extends java.lang.Object
implements EventTable

For use when the index comprises of either two or more ranges or a unique key in combination with a range. Organizes into a TreeMap>, for short. The top level can also be just Map. Expected at least either (A) one key and one range or (B) zero keys and 2 ranges.

An alternative implementatation could have been based on "TreeMap>>", however the following implication arrive - not applicable for range-only lookups (since there the key can be the value itself - not applicable for multiple nested range as ordering not nested - each add/remove and lookup would also need to construct a key object.


Field Summary
protected  java.util.Map<java.lang.Object,java.lang.Object> index
          Index table (sorted and/or keyed, always nested).
 
Constructor Summary
PropertyCompositeEventTable(boolean isHashKeyed, CompositeIndexEnterRemove chain, java.lang.Class[] optKeyCoercedTypes, java.lang.Class[] optRangeCoercedTypes)
           
 
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.
 java.util.Map<java.lang.Object,java.lang.Object> getIndex()
           
 java.lang.Class[] getOptKeyCoercedTypes()
           
 java.lang.Class[] getOptRangeCoercedTypes()
           
 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.
 void remove(EventBean[] events)
          Remove events.
 java.lang.String toQueryPlan()
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

index

protected final java.util.Map<java.lang.Object,java.lang.Object> index
Index table (sorted and/or keyed, always nested).

Constructor Detail

PropertyCompositeEventTable

public PropertyCompositeEventTable(boolean isHashKeyed,
                                   CompositeIndexEnterRemove chain,
                                   java.lang.Class[] optKeyCoercedTypes,
                                   java.lang.Class[] optRangeCoercedTypes)
Method Detail

getIndex

public java.util.Map<java.lang.Object,java.lang.Object> getIndex()

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

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

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

toQueryPlan

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

getOptRangeCoercedTypes

public java.lang.Class[] getOptRangeCoercedTypes()

getOptKeyCoercedTypes

public java.lang.Class[] getOptKeyCoercedTypes()

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