Package org.apache.openjpa.util
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 toiterator()may perform a database query. Changes to the collection are tracked through aChangeTracker. This collection has the following limitations:- The 
sizemethod may returnInteger.MAX_VALUE. - The collection cannot contain duplicate elements.
 
- Author:
 - Abe White
 
 
- 
- 
Constructor Summary
Constructors Constructor Description AbstractLRSProxyCollection(Class elementType, boolean ordered)Constructor. 
- 
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description booleanadd(Object o)booleanaddAll(Collection all)voidadded(Object val)Record that the given element was added.voidclear()booleancontains(Object o)booleancontainsAll(Collection all)Objectcopy(Object orig)Return an unproxied copy of the given instance.protected abstract intcount()Return the number of elements in the collection, orInteger.MAX_VALUE.CollectiongetAdded()Return the collection of values that need to be added to the managed container.CollectiongetChanged()Return the set of elements that have changed.ChangeTrackergetChangeTracker()Return the change tracker for this proxy, or null if none.intgetNextSequence()The next element sequence value for this proxy at load time.OpenJPAStateManagergetOwner()Return the owning object.intgetOwnerField()Return the owning field index.CollectiongetRemoved()Return the set of values that need to be removed from the managed container.protected abstract booleanhas(Object o)Return whether the collection contains the given element.booleanisEmpty()booleanisTracking()Return true if this tracker has an up-to-date view of all the changes to the container it is managing.Iteratoriterator()protected abstract Iteratoritr()Implement this method to return an iterator over the contents of the collection.booleanremove(Object o)booleanremoveAll(Collection all)voidremoved(Object val)Record that the given element was removed.booleanretainAll(Collection all)voidsetNextSequence(int seq)The maximum element sequence value for this proxy at load time.voidsetOwner(OpenJPAStateManager sm, int field)Reset the state of the proxy, and set the owning instance of the proxy and the name of the field it is assigned to.intsize()voidstartTracking()Reset the state of the change tracker, and turn change tracking back on if it has been disabled.voidstopTracking()Tell the tracker to stop tracking changes for its container.booleantest(Object o)Object[]toArray()Object[]toArray(Object[] a)protected ObjectwriteReplace()- 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 
- 
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArray 
- 
Methods inherited from interface java.util.Set
equals, hashCode, spliterator 
 - 
 
 - 
 
- 
- 
Constructor Detail
- 
AbstractLRSProxyCollection
public AbstractLRSProxyCollection(Class elementType, boolean ordered)
Constructor.- Parameters:
 elementType- the allowed type of elements, or null for no restrictionsordered- true if this collection is ordered
 
 - 
 
- 
Method Detail
- 
setOwner
public void setOwner(OpenJPAStateManager sm, int field)
Description copied from interface:ProxyReset 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. 
- 
getOwner
public OpenJPAStateManager getOwner()
Description copied from interface:ProxyReturn the owning object. 
- 
getOwnerField
public int getOwnerField()
Description copied from interface:ProxyReturn the owning field index.- Specified by:
 getOwnerFieldin interfaceProxy
 
- 
getChangeTracker
public ChangeTracker getChangeTracker()
Description copied from interface:ProxyReturn the change tracker for this proxy, or null if none.- Specified by:
 getChangeTrackerin interfaceProxy
 
- 
copy
public Object copy(Object orig)
Description copied from interface:ProxyReturn an unproxied copy of the given instance. This method is used by proxy managers to create backup values for use in rollback. 
- 
add
public boolean add(Object o)
- Specified by:
 addin interfaceCollection- Specified by:
 addin interfaceSet
 
- 
addAll
public boolean addAll(Collection all)
- Specified by:
 addAllin interfaceCollection- Specified by:
 addAllin interfaceSet
 
- 
remove
public boolean remove(Object o)
- Specified by:
 removein interfaceCollection- Specified by:
 removein interfaceSet
 
- 
removeAll
public boolean removeAll(Collection all)
- Specified by:
 removeAllin interfaceCollection- Specified by:
 removeAllin interfaceSet
 
- 
retainAll
public boolean retainAll(Collection all)
- Specified by:
 retainAllin interfaceCollection- Specified by:
 retainAllin interfaceSet
 
- 
clear
public void clear()
- Specified by:
 clearin interfaceCollection- Specified by:
 clearin interfaceSet
 
- 
contains
public boolean contains(Object o)
- Specified by:
 containsin interfaceCollection- Specified by:
 containsin interfaceSet
 
- 
containsAll
public boolean containsAll(Collection all)
- Specified by:
 containsAllin interfaceCollection- Specified by:
 containsAllin interfaceSet
 
- 
toArray
public Object[] toArray()
- Specified by:
 toArrayin interfaceCollection- Specified by:
 toArrayin interfaceSet
 
- 
toArray
public Object[] toArray(Object[] a)
- Specified by:
 toArrayin interfaceCollection- Specified by:
 toArrayin interfaceSet
 
- 
size
public int size()
- Specified by:
 sizein interfaceCollection- Specified by:
 sizein interfaceSet
 
- 
isEmpty
public boolean isEmpty()
- Specified by:
 isEmptyin interfaceCollection- Specified by:
 isEmptyin interfaceSet
 
- 
iterator
public Iterator iterator()
 
- 
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 theIterator.remove()method, and may implementCloseable. 
- 
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, orInteger.MAX_VALUE. 
- 
isTracking
public boolean isTracking()
Description copied from interface:ChangeTrackerReturn true if this tracker has an up-to-date view of all the changes to the container it is managing.- Specified by:
 isTrackingin interfaceChangeTracker
 
- 
startTracking
public void startTracking()
Description copied from interface:ChangeTrackerReset the state of the change tracker, and turn change tracking back on if it has been disabled.- Specified by:
 startTrackingin interfaceChangeTracker
 
- 
stopTracking
public void stopTracking()
Description copied from interface:ChangeTrackerTell the tracker to stop tracking changes for its container.- Specified by:
 stopTrackingin interfaceChangeTracker
 
- 
getAdded
public Collection getAdded()
Description copied from interface:ChangeTrackerReturn the collection of values that need to be added to the managed container.- Specified by:
 getAddedin interfaceChangeTracker
 
- 
getRemoved
public Collection getRemoved()
Description copied from interface:ChangeTrackerReturn the set of values that need to be removed from the managed container.- Specified by:
 getRemovedin interfaceChangeTracker
 
- 
getChanged
public Collection getChanged()
Description copied from interface:ChangeTrackerReturn 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:
 getChangedin interfaceChangeTracker
 
- 
added
public void added(Object val)
Description copied from interface:CollectionChangeTrackerRecord that the given element was added.- Specified by:
 addedin interfaceCollectionChangeTracker
 
- 
removed
public void removed(Object val)
Description copied from interface:CollectionChangeTrackerRecord that the given element was removed.- Specified by:
 removedin interfaceCollectionChangeTracker
 
- 
getNextSequence
public int getNextSequence()
Description copied from interface:ChangeTrackerThe 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:
 getNextSequencein interfaceChangeTracker
 
- 
setNextSequence
public void setNextSequence(int seq)
Description copied from interface:ChangeTrackerThe 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:
 setNextSequencein interfaceChangeTracker
 
 - 
 
 -