Class AbstractLRSProxyCollection

java.lang.Object
org.apache.openjpa.util.AbstractLRSProxyCollection
All Implemented Interfaces:
Iterable, Collection, Predicate, Set, ChangeTracker, CollectionChangeTracker, LRSProxy, Proxy
Direct Known Subclasses:
LRSProxyCollection

public abstract class AbstractLRSProxyCollection extends Object implements Set, LRSProxy, Predicate, CollectionChangeTracker
A collection proxy designed for collections backed by extremely large result sets in which each call to iterator() may perform a database query. Changes to the collection are tracked through a ChangeTracker. This collection has the following limitations:
  • The size method may return Integer.MAX_VALUE.
  • The collection cannot contain duplicate elements.
Author:
Abe White
  • Constructor Details

    • AbstractLRSProxyCollection

      public AbstractLRSProxyCollection(Class elementType, boolean ordered)
      Constructor.
      Parameters:
      elementType - the allowed type of elements, or null for no restrictions
      ordered - true if this collection is ordered
  • Method Details

    • setOwner

      public void setOwner(OpenJPAStateManager sm, int field)
      Description copied from interface: Proxy
      Reset the state of the proxy, and set the owning instance of the proxy and the name of the field it is assigned to. Set to null to indicate that the proxy is no longer managed.
      Specified by:
      setOwner in interface Proxy
    • getOwner

      public OpenJPAStateManager getOwner()
      Description copied from interface: Proxy
      Return the owning object.
      Specified by:
      getOwner in interface Proxy
    • getOwnerField

      public int getOwnerField()
      Description copied from interface: Proxy
      Return the owning field index.
      Specified by:
      getOwnerField in interface Proxy
    • getChangeTracker

      public ChangeTracker getChangeTracker()
      Description copied from interface: Proxy
      Return the change tracker for this proxy, or null if none.
      Specified by:
      getChangeTracker in interface Proxy
    • copy

      public Object copy(Object orig)
      Description copied from interface: Proxy
      Return an unproxied copy of the given instance. This method is used by proxy managers to create backup values for use in rollback.
      Specified by:
      copy in interface Proxy
    • add

      public boolean add(Object o)
      Specified by:
      add in interface Collection
      Specified by:
      add in interface Set
    • addAll

      public boolean addAll(Collection all)
      Specified by:
      addAll in interface Collection
      Specified by:
      addAll in interface Set
    • remove

      public boolean remove(Object o)
      Specified by:
      remove in interface Collection
      Specified by:
      remove in interface Set
    • removeAll

      public boolean removeAll(Collection all)
      Specified by:
      removeAll in interface Collection
      Specified by:
      removeAll in interface Set
    • retainAll

      public boolean retainAll(Collection all)
      Specified by:
      retainAll in interface Collection
      Specified by:
      retainAll in interface Set
    • clear

      public void clear()
      Specified by:
      clear in interface Collection
      Specified by:
      clear in interface Set
    • contains

      public boolean contains(Object o)
      Specified by:
      contains in interface Collection
      Specified by:
      contains in interface Set
    • containsAll

      public boolean containsAll(Collection all)
      Specified by:
      containsAll in interface Collection
      Specified by:
      containsAll in interface Set
    • toArray

      public Object[] toArray()
      Specified by:
      toArray in interface Collection
      Specified by:
      toArray in interface Set
    • toArray

      public Object[] toArray(Object[] a)
      Specified by:
      toArray in interface Collection
      Specified by:
      toArray in interface Set
    • size

      public int size()
      Specified by:
      size in interface Collection
      Specified by:
      size in interface Set
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface Collection
      Specified by:
      isEmpty in interface Set
    • iterator

      public Iterator iterator()
      Specified by:
      iterator in interface Collection
      Specified by:
      iterator in interface Iterable
      Specified by:
      iterator in interface Set
    • writeReplace

      protected Object writeReplace() throws ObjectStreamException
      Throws:
      ObjectStreamException
    • itr

      protected abstract Iterator itr()
      Implement this method to return an iterator over the contents of the collection. This method may be invoked multiple times. The returned iterator does not have to support the Iterator.remove() method, and may implement Closeable.
    • has

      protected abstract boolean has(Object o)
      Return whether the collection contains the given element.
    • count

      protected abstract int count()
      Return the number of elements in the collection, or Integer.MAX_VALUE.
    • test

      public boolean test(Object o)
      Specified by:
      test in interface Predicate
    • isTracking

      public boolean isTracking()
      Description copied from interface: ChangeTracker
      Return true if this tracker has an up-to-date view of all the changes to the container it is managing.
      Specified by:
      isTracking in interface ChangeTracker
    • startTracking

      public void startTracking()
      Description copied from interface: ChangeTracker
      Reset the state of the change tracker, and turn change tracking back on if it has been disabled.
      Specified by:
      startTracking in interface ChangeTracker
    • stopTracking

      public void stopTracking()
      Description copied from interface: ChangeTracker
      Tell the tracker to stop tracking changes for its container.
      Specified by:
      stopTracking in interface ChangeTracker
    • getAdded

      public Collection getAdded()
      Description copied from interface: ChangeTracker
      Return the collection of values that need to be added to the managed container.
      Specified by:
      getAdded in interface ChangeTracker
    • getRemoved

      public Collection getRemoved()
      Description copied from interface: ChangeTracker
      Return the set of values that need to be removed from the managed container.
      Specified by:
      getRemoved in interface ChangeTracker
    • getChanged

      public Collection getChanged()
      Description copied from interface: ChangeTracker
      Return the set of elements that have changed. In maps, this marks a possible change in value for a key. In collections, this marks an element that has been removed and re-added.
      Specified by:
      getChanged in interface ChangeTracker
    • added

      public void added(Object val)
      Description copied from interface: CollectionChangeTracker
      Record that the given element was added.
      Specified by:
      added in interface CollectionChangeTracker
    • removed

      public void removed(Object val)
      Description copied from interface: CollectionChangeTracker
      Record that the given element was removed.
      Specified by:
      removed in interface CollectionChangeTracker
    • getNextSequence

      public int getNextSequence()
      Description copied from interface: ChangeTracker
      The next element sequence value for this proxy at load time. If the data store keeps this proxy's data in sequence order but allows holes for removed objects, the implementation can set the next sequence at load time, then retrieve it and start from there for added objects at flush time. This value is set back to 0 if the proxy stops tracking changes. For ordered proxies, it is set to the proxy's size when the proxy starts tracking changes again.
      Specified by:
      getNextSequence in interface ChangeTracker
    • setNextSequence

      public void setNextSequence(int seq)
      Description copied from interface: ChangeTracker
      The maximum element sequence value for this proxy at load time. If the data store keeps this proxy's data in sequence order but allows holes for removed objects, the implementation can set the next sequence at load time, then retrieve it and start from there for added objects at flush time. This value is set back to 0 if the proxy stops tracking changes. For ordered proxies, it is set to the proxy's size when the proxy starts tracking changes again.
      Specified by:
      setNextSequence in interface ChangeTracker