Class MapEventFilter<K,V>

All Implemented Interfaces:
ExternalizableLite, PortableObject, Filter<MapEvent<K,V>>, Serializable
Direct Known Subclasses:
CacheEventFilter

public class MapEventFilter<K,V> extends ExternalizableHelper implements Filter<MapEvent<K,V>>, ExternalizableLite, PortableObject
Filter which evaluates the content of a MapEvent object according to the specified criteria. This filter is intended to be used by various ObservableMap listeners that are interested in particular subsets of MapEvent notifications emitted by the map.

Usage examples:

  • a filter that evaluates to true if an Employee object is inserted into a cache with a value of Married property set to true.
       new MapEventFilter(MapEventFilter.E_INSERT,
           new EqualsFilter("isMarried", Boolean.TRUE));
     
  • a filter that evaluates to true if any object is removed from a cache.
       new MapEventFilter(MapEventFilter.E_DELETED);
     
  • a filter that evaluates to true if there is an update to an Employee object where either an old or new value of LastName property equals to "Smith"
       new MapEventFilter(MapEventFilter.E_UPDATED,
           new EqualsFilter("LastName", "Smith"));
     
  • a filter that is used to keep a cached keySet result based on some map filter up-to-date.
       final Set    setKeys   = new HashSet();
       final Filter filterEvt = new MapEventFilter(filterMap);
       MapListener  listener  = new AbstractMapListener()
           {
           public void entryInserted(MapEvent evt)
               {
               setKeys.add(evt.getKey());
               }
    
           public void entryDeleted(MapEvent evt)
               {
               setKeys.remove(evt.getKey());
               }
           };
    
       map.addMapListener(listener, filterEvt, true);
       setKeys.addAll(map.keySet(filterMap));
     
Since:
Coherence 2.3
Author:
gg 2003.09.22
See Also:
  • Field Details

    • E_INSERTED

      public static final int E_INSERTED
      This value indicates that ENTRY_INSERTED events should be evaluated. The event will be fired if there is no filter specified or the filter evaluates to true for a new value.
      See Also:
    • E_UPDATED

      public static final int E_UPDATED
      This value indicates that ENTRY_UPDATED events should be evaluated. The event will be fired if there is no filter specified or the filter evaluates to true when applied to either old or new value.
      See Also:
    • E_DELETED

      public static final int E_DELETED
      This value indicates that ENTRY_DELETED events should be evaluated. The event will be fired if there is no filter specified or the filter evaluates to true for an old value.
      See Also:
    • E_UPDATED_ENTERED

      public static final int E_UPDATED_ENTERED
      This value indicates that ENTRY_UPDATED events should be evaluated, but only if filter evaluation is false for the old value and true for the new value. This corresponds to an item that was not in a keySet filter result changing such that it would now be in that keySet filter result.
      Since:
      Coherence 3.1
      See Also:
    • E_UPDATED_LEFT

      public static final int E_UPDATED_LEFT
      This value indicates that ENTRY_UPDATED events should be evaluated, but only if filter evaluation is true for the old value and false for the new value. This corresponds to an item that was in a keySet filter result changing such that it would no longer be in that keySet filter result.
      Since:
      Coherence 3.1
      See Also:
    • E_UPDATED_WITHIN

      public static final int E_UPDATED_WITHIN
      This value indicates that ENTRY_UPDATED events should be evaluated, but only if filter evaluation is true for both the old and the new value. This corresponds to an item that was in a keySet filter result changing but not leaving the keySet filter result.
      Since:
      Coherence 3.1
      See Also:
    • E_ALL

      public static final int E_ALL
      This value indicates that all events should be evaluated.
      See Also:
    • E_KEYSET

      public static final int E_KEYSET
      This value indicates that all events that would affect the result of a QueryMap.keySet(com.tangosol.util.Filter) query should be evaluated.
      Since:
      Coherence 3.1
      See Also:
    • m_nMask

      protected int m_nMask
      The event mask.
    • m_filter

      protected Filter<V> m_filter
      The event value(s) filter.
  • Constructor Details

    • MapEventFilter

      public MapEventFilter()
      Default constructor (necessary for the ExternalizableLite interface).
    • MapEventFilter

      public MapEventFilter(int nMask)
      Construct a MapEventFilter that evaluates MapEvent objects based on the specified combination of event types.

      Using this constructor is equivalent to: new MapEventFilter(nMask, null);

      Parameters:
      nMask - any combination of E_INSERTED, E_UPDATED and E_DELETED, E_UPDATED_ENTERED, E_UPDATED_WITHIN, E_UPDATED_LEFT
      Since:
      Coherence 3.1
    • MapEventFilter

      public MapEventFilter(Filter<V> filter)
      Construct a MapEventFilter that evaluates MapEvent objects that would affect the results of a keySet filter issued by a previous call to QueryMap.keySet(com.tangosol.util.Filter). It is possible to easily implement continuous query functionality.

      Using this constructor is equivalent to: new MapEventFilter(E_KEYSET, filter);

      Parameters:
      filter - the filter passed previously to a keySet() query method
      Since:
      Coherence 3.1
    • MapEventFilter

      public MapEventFilter(int nMask, Filter<V> filter)
      Construct a MapEventFilter that evaluates MapEvent objects based on the specified combination of event types.
      Parameters:
      nMask - combination of any of the E_* values
      filter - (optional) the filter used for evaluating event values
  • Method Details

    • evaluate

      public boolean evaluate(MapEvent<K,V> event)
      Apply the test to the input argument.
      Specified by:
      evaluate in interface Filter<K>
      Parameters:
      event - the input argument to evaluate
      Returns:
      true if the input argument matches the filter, otherwise false
    • getEventMask

      public int getEventMask()
      Obtain the event mask. The mask value is concatenation of any of the E_* values.
      Returns:
      the event mask
    • getFilter

      public Filter<V> getFilter()
      Obtain the Filter object used to evaluate the event value(s).
      Returns:
      the filter used to evaluate the event value(s)
    • equals

      public boolean equals(Object o)
      Compare the MapEventFilter with another object to determine equality.
      Overrides:
      equals in class Object
      Returns:
      true iff this MapEventFilter and the passed object are equivalent filters
    • hashCode

      public int hashCode()
      Determine a hash value for the MapEventFilter object according to the general Object.hashCode() contract.
      Overrides:
      hashCode in class Object
      Returns:
      an integer hash value for this MapEventFilter object
    • getDescription

      protected String getDescription()
      Get the filter's description.
      Returns:
      this filter's description
    • toString

      public String toString()
      Return a human-readable description for this Filter.
      Overrides:
      toString in class Object
      Returns:
      a String description of the Filter
    • readExternal

      public void readExternal(DataInput in) throws IOException
      Restore the contents of this object by loading the object's state from the passed DataInput object.
      Specified by:
      readExternal in interface ExternalizableLite
      Parameters:
      in - the DataInput stream to read data from in order to restore the state of this object
      Throws:
      IOException - if an I/O exception occurs
    • writeExternal

      public void writeExternal(DataOutput out) throws IOException
      Save the contents of this object by storing the object's state into the passed DataOutput object.
      Specified by:
      writeExternal in interface ExternalizableLite
      Parameters:
      out - the DataOutput stream to write the state of this object to
      Throws:
      IOException - if an I/O exception occurs
    • readExternal

      public void readExternal(PofReader in) throws IOException
      Restore the contents of a user type instance by reading its state using the specified PofReader object.
      Specified by:
      readExternal in interface PortableObject
      Parameters:
      in - the PofReader from which to read the object's state
      Throws:
      IOException - if an I/O error occurs
    • writeExternal

      public void writeExternal(PofWriter out) throws IOException
      Save the contents of a POF user type instance by writing its state using the specified PofWriter object.
      Specified by:
      writeExternal in interface PortableObject
      Parameters:
      out - the PofWriter to which to write the object's state
      Throws:
      IOException - if an I/O error occurs