Class QueryResultAssociativeStore<KeyType,​ValueType>

  • Direct Known Subclasses:
    QueryResultMap

    public abstract class QueryResultAssociativeStore<KeyType,​ValueType>
    extends java.lang.Object
    • Field Detail

      • NOT_ALLOW_MODIFICATIONS

        protected static final java.lang.String NOT_ALLOW_MODIFICATIONS
        Error literal returned when associative store modification is attempted without a setter available
        See Also:
        Constant Field Values
    • Constructor Detail

      • QueryResultAssociativeStore

        public QueryResultAssociativeStore()
    • Method Detail

      • setLogger

        protected void setLogger​(org.apache.log4j.Logger logger)
        Parameters:
        logger - the logger to set
      • getCacheEntries

        protected abstract java.util.Collection<java.util.Map.Entry<KeyType,​ValueType>> getCacheEntries()
        Returns the entries in the cache as a collection.
        Returns:
        the entries
      • addCallbackOnQueryResultUpdate

        public void addCallbackOnQueryResultUpdate​(IQueryResultUpdateListener<KeyType,​ValueType> listener,
                                                   boolean fireNow)
        Registers a listener for this query result associative store that is invoked every time when a key-value pair is inserted or removed from the associative store.

        The listener can be unregistered via removeCallbackOnQueryResultUpdate(IQueryResultUpdateListener).

        Parameters:
        listener - the listener that will be notified of each key-value pair that is inserted or removed, starting from now.
        fireNow - if true, notifyPut will be immediately invoked on all current key-values as a one-time effect.
      • notifyListeners

        protected void notifyListeners​(Direction direction,
                                       KeyType key,
                                       ValueType value)
        This method notifies the listeners that the query result associative store has changed.
        Parameters:
        direction - the type of the change (insert or delete)
        key - the key of the pair that changed
        value - the value of the pair that changed
      • internalPut

        protected boolean internalPut​(KeyType key,
                                      ValueType value)
        Implementations of QueryResultAssociativeStore can put a new key-value pair into the associative store with this method. If the insertion of the key-value pair results in a change, the listeners are notified.

        No validation or null-checking is performed during the method!

        Parameters:
        key - the key which identifies where the new value is put
        value - the value that is put into the collection of the key
        Returns:
        true, if the insertion resulted in a change (the key-value pair was not yet in the associative store)
      • internalRemove

        protected boolean internalRemove​(KeyType key,
                                         ValueType value)
        Implementations of QueryResultAssociativeStore can remove a key-value pair from the associative store with this method. If the removal of the key-value pair results in a change, the listeners are notified.

        No validation or null-checking is performed during the method!

        Parameters:
        key - the key which identifies where the value is removed from
        value - the value that is removed from the collection of the key
        Returns:
        true, if the removal resulted in a change (the key-value pair was in the associative store)
      • internalCachePut

        protected abstract boolean internalCachePut​(KeyType key,
                                                    ValueType value)
      • internalCacheRemove

        protected abstract boolean internalCacheRemove​(KeyType key,
                                                       ValueType value)
      • internalCacheSize

        protected abstract int internalCacheSize()
      • internalCacheContainsEntry

        protected abstract boolean internalCacheContainsEntry​(KeyType key,
                                                              ValueType value)
      • getLogger

        protected org.apache.log4j.Logger getLogger()
        Returns:
        the logger
      • internalClear

        protected void internalClear()
      • modifyThroughQueryResultSetter

        protected boolean modifyThroughQueryResultSetter​(KeyType key,
                                                         ValueType value,
                                                         Direction direction)
        This method is used for calling the query result setter to put or remove a value by modifying the model.

        The given key-value pair is first validated (see IQueryResultSetter.validate(Object, Object), then the put or remove method is called (see IQueryResultSetter.put(Object, Object) and IQueryResultSetter.remove(Object, Object)). If the setter reported that the model has been changed, the change is checked.

        If the model modification did not change the result set in the desired way, a warning is logged.

        If the setter throws any Throwable, it is either rethrown in case of Error and logged otherwise.

        Parameters:
        key - the key of the pair to be inserted or removed
        value - the value of the pair to be inserted or removed
        direction - specifies whether a put or a remove is performed
        Returns:
        true, if the associative store changed according to the direction
      • checkModificationThroughQueryResultSetter

        protected boolean checkModificationThroughQueryResultSetter​(KeyType key,
                                                                    ValueType value,
                                                                    Direction direction,
                                                                    int expectedChange,
                                                                    int size)
        Checks whether the model modification performed by the IQueryResultSetter resulted in the insertion or removal of exactly the required key-value pair.
        Parameters:
        key - the key for the pair that was inserted or removed
        value - the value for the pair that was inserted or removed
        direction - the direction of the change
        size - the size of the cache before the change
        Returns:
        true, if the changes made by the query result setter were correct