Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.openjpa.util
Class AbstractLRSProxyCollection

    java.lang.Object
      org.apache.openjpa.util.AbstractLRSProxyCollection

All Implemented Interfaces:
  Iterable, Collection, Set, org.apache.commons.collections.Predicate, ChangeTracker, CollectionChangeTracker, LRSProxy, Proxy

Direct Known Subclasses:
  LRSProxyCollection

    public abstract class AbstractLRSProxyCollection

extends Object
implements Set, LRSProxy, org.apache.commons.collections.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 Summary
`AbstractLRSProxyCollection(Class elementType, boolean ordered)` Constructor.

Method Summary
`boolean` | `add(Object o)`
`boolean` | `addAll(Collection all)`
`void` | `added(Object val)` Record that the given element was added.
`void` | `clear()`
`boolean` | `contains(Object o)`
`boolean` | `containsAll(Collection all)`
`Object` | `copy(Object orig)` Return an unproxied copy of the given instance.
`protected abstract int` | `count()` Return the number of elements in the collection, or `Integer.MAX_VALUE`.
`boolean` | `evaluate(Object o)`
`Collection` | `getAdded()` Return the collection of values that need to be added to the managed container.
`Collection` | `getChanged()` Return the set of elements that have changed.
`ChangeTracker` | `getChangeTracker()` Return the change tracker for this proxy, or null if none.
`int` | `getNextSequence()` The next element sequence value for this proxy at load time.
`OpenJPAStateManager` | `getOwner()` Return the owning object.
`int` | `getOwnerField()` Return the owning field index.
`Collection` | `getRemoved()` Return the set of values that need to be removed from the managed container.
`protected abstract boolean` | `has(Object o)` Return whether the collection contains the given element.
`boolean` | `isEmpty()`
`(package private) boolean` | `isIterated()` used in testing; we need to be able to make sure that OpenJPA does not iterate lrs fields during standard crud operations
`boolean` | `isTracking()` Return true if this tracker has an up-to-date view of all the changes to the container it is managing.
`Iterator` | `iterator()`
`protected abstract Iterator` | `itr()` Implement this method to return an iterator over the contents of the collection.
`boolean` | `remove(Object o)`
`boolean` | `removeAll(Collection all)`
`void` | `removed(Object val)` Record that the given element was removed.
`boolean` | `retainAll(Collection all)`
`(package private) void` | `setIterated(boolean it)` used in testing; we need to be able to make sure that OpenJPA does not iterate lrs fields during standard crud operations
`void` | `setNextSequence(int seq)` The maximum element sequence value for this proxy at load time.
`void` | `setOwner(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.
`int` | `size()`
`void` | `startTracking()` Reset the state of the change tracker, and turn change tracking back on if it has been disabled.
`void` | `stopTracking()` Tell the tracker to stop tracking changes for its container.
`Object[]` | `toArray()`
`Object[]` | `toArray(Object[] a)`
`protected Object` | `writeReplace()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface java.util.Set
`equals, hashCode`

Constructor Detail

### 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 Detail

### 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 `Iterable`
  Specified by:
    `iterator` in interface `Collection`
  Specified by:
    `iterator` in interface `Set`

### isIterated

    boolean isIterated()

  used in testing; we need to be able to make sure that OpenJPA does not iterate lrs fields during standard crud operations

### setIterated

    void setIterated(boolean it)

  used in testing; we need to be able to make sure that OpenJPA does not iterate lrs fields during standard crud operations

### 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`.

### evaluate

    public boolean evaluate(Object o)

  Specified by:
    `evaluate` in interface `org.apache.commons.collections.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`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2006-2013 Apache Software Foundation. All Rights Reserved.