org.apache.cayenne.access
Class IncrementalFaultList

java.lang.Object
  extended by org.apache.cayenne.access.IncrementalFaultList
All Implemented Interfaces:
java.lang.Iterable, java.util.Collection, java.util.List

public class IncrementalFaultList
extends java.lang.Object
implements java.util.List

A synchronized list that serves as a container of DataObjects. It is returned when a paged query is performed by DataContext. On creation, only the first "page" is fully resolved, for the rest of the objects only their ObjectIds are read. Pages following the first page are resolved on demand only. On access to an element, the list would ensure that this element as well as all its siblings on the same page are fully resolved.

The list can hold DataRows or DataObjects. Attempts to add any other object types will result in an exception.

Performance note: certain operations like toArray would trigger full list fetch.

Author:
Andrus Adamchik

Field Summary
protected  DataContext dataContext
           
protected  java.util.List elements
           
protected  SelectQuery internalQuery
           
protected  int maxFetchSize
          Defines the upper limit on the size of fetches.
protected  int pageSize
           
protected  ObjEntity rootEntity
           
protected  int rowWidth
          Stores a hint allowing to distinguish data rows from unfetched ids when the query fetches data rows.
protected  int unfetchedObjects
           
 
Constructor Summary
IncrementalFaultList(DataContext dataContext, Query query)
          Creates a new IncrementalFaultList using a given DataContext and query.
IncrementalFaultList(IncrementalFaultList list)
          Creates a new list copying settings from another list.
 
Method Summary
 void add(int index, java.lang.Object element)
           
 boolean add(java.lang.Object o)
           
 boolean addAll(java.util.Collection c)
           
 boolean addAll(int index, java.util.Collection c)
           
 void clear()
           
 boolean contains(java.lang.Object o)
           
 boolean containsAll(java.util.Collection c)
           
protected  void fillIn(Query query)
          Performs initialization of the internal list of objects.
 java.lang.Object get(int index)
           
 DataContext getDataContext()
          Returns the dataContext.
 int getMaxFetchSize()
          Get the upper bound on the number of records to resolve in one round trip to the database.
 int getPageSize()
          Returns the pageSize.
 int getUnfetchedObjects()
          Returns a total number of objects that are not resolved yet.
 int indexOf(java.lang.Object o)
           
 boolean isEmpty()
           
 java.util.Iterator iterator()
          Return an iterator for this list.
 int lastIndexOf(java.lang.Object o)
           
 java.util.ListIterator listIterator()
          Returns a list iterator for this list.
 java.util.ListIterator listIterator(int index)
          Returns a list iterator of the elements in this list (in proper sequence), starting at the specified position in this list.
 int pageIndex(int elementIndex)
          Returns zero-based index of the virtual "page" for a given array element index.
 java.lang.Object remove(int index)
           
 boolean remove(java.lang.Object o)
           
 boolean removeAll(java.util.Collection c)
           
 void resolveAll()
          Will resolve all unread objects.
protected  void resolveInterval(int fromIndex, int toIndex)
          Resolves a sublist of objects starting at fromIndex up to but not including toIndex.
 boolean retainAll(java.util.Collection c)
           
 java.lang.Object set(int index, java.lang.Object element)
           
 void setMaxFetchSize(int fetchSize)
           
 int size()
           
 java.util.List subList(int fromIndex, int toIndex)
           
 java.lang.Object[] toArray()
           
 java.lang.Object[] toArray(java.lang.Object[] a)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.List
equals, hashCode
 

Field Detail

pageSize

protected int pageSize

elements

protected java.util.List elements

dataContext

protected DataContext dataContext

rootEntity

protected ObjEntity rootEntity

internalQuery

protected SelectQuery internalQuery

unfetchedObjects

protected int unfetchedObjects

rowWidth

protected int rowWidth
Stores a hint allowing to distinguish data rows from unfetched ids when the query fetches data rows.


maxFetchSize

protected int maxFetchSize
Defines the upper limit on the size of fetches. This is needed to avoid where clause size limitations.

Constructor Detail

IncrementalFaultList

public IncrementalFaultList(IncrementalFaultList list)
Creates a new list copying settings from another list. Elements WILL NOT be copied or fetched.


IncrementalFaultList

public IncrementalFaultList(DataContext dataContext,
                            Query query)
Creates a new IncrementalFaultList using a given DataContext and query.

Parameters:
dataContext - DataContext used by IncrementalFaultList to fill itself with objects.
query - Main query used to retrieve data. Must have "pageSize" property set to a value greater than zero.
Method Detail

fillIn

protected void fillIn(Query query)
Performs initialization of the internal list of objects. Only the first page is fully resolved. For the rest of the list, only ObjectIds are read.

Since:
1.0.6

resolveAll

public void resolveAll()
Will resolve all unread objects.


resolveInterval

protected void resolveInterval(int fromIndex,
                               int toIndex)
Resolves a sublist of objects starting at fromIndex up to but not including toIndex. Internally performs bound checking and trims indexes accordingly.


pageIndex

public int pageIndex(int elementIndex)
Returns zero-based index of the virtual "page" for a given array element index.


getMaxFetchSize

public int getMaxFetchSize()
Get the upper bound on the number of records to resolve in one round trip to the database. This setting governs the size/complexity of the where clause generated to retrieve the next page of records. If the fetch size is less than the page size, then multiple fetches will be made to resolve a page.

Returns:
int

setMaxFetchSize

public void setMaxFetchSize(int fetchSize)

getDataContext

public DataContext getDataContext()
Returns the dataContext.

Returns:
DataContext

getPageSize

public int getPageSize()
Returns the pageSize.

Returns:
int

listIterator

public java.util.ListIterator listIterator()
Returns a list iterator for this list. DataObjects are resolved a page (according to getPageSize()) at a time as necessary - when retrieved with next() or previous().

Specified by:
listIterator in interface java.util.List

listIterator

public java.util.ListIterator listIterator(int index)
Returns a list iterator of the elements in this list (in proper sequence), starting at the specified position in this list. The specified index indicates the first element that would be returned by an initial call to the next method. An initial call to the previous method would return the element with the specified index minus one. DataObjects are resolved a page at a time (according to getPageSize()) as necessary - when retrieved with next() or previous().

Specified by:
listIterator in interface java.util.List

iterator

public java.util.Iterator iterator()
Return an iterator for this list. DataObjects are resolved a page (according to getPageSize()) at a time as necessary - when retrieved with next().

Specified by:
iterator in interface java.lang.Iterable
Specified by:
iterator in interface java.util.Collection
Specified by:
iterator in interface java.util.List

add

public void add(int index,
                java.lang.Object element)
Specified by:
add in interface java.util.List
See Also:
List.add(int, Object)

add

public boolean add(java.lang.Object o)
Specified by:
add in interface java.util.Collection
Specified by:
add in interface java.util.List
See Also:
Collection.add(Object)

addAll

public boolean addAll(java.util.Collection c)
Specified by:
addAll in interface java.util.Collection
Specified by:
addAll in interface java.util.List
See Also:
Collection.addAll(Collection)

addAll

public boolean addAll(int index,
                      java.util.Collection c)
Specified by:
addAll in interface java.util.List
See Also:
List.addAll(int, Collection)

clear

public void clear()
Specified by:
clear in interface java.util.Collection
Specified by:
clear in interface java.util.List
See Also:
Collection.clear()

contains

public boolean contains(java.lang.Object o)
Specified by:
contains in interface java.util.Collection
Specified by:
contains in interface java.util.List
See Also:
Collection.contains(Object)

containsAll

public boolean containsAll(java.util.Collection c)
Specified by:
containsAll in interface java.util.Collection
Specified by:
containsAll in interface java.util.List
See Also:
Collection.containsAll(Collection)

get

public java.lang.Object get(int index)
Specified by:
get in interface java.util.List
See Also:
List.get(int)

indexOf

public int indexOf(java.lang.Object o)
Specified by:
indexOf in interface java.util.List
See Also:
List.indexOf(Object)

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface java.util.Collection
Specified by:
isEmpty in interface java.util.List
See Also:
Collection.isEmpty()

lastIndexOf

public int lastIndexOf(java.lang.Object o)
Specified by:
lastIndexOf in interface java.util.List
See Also:
List.lastIndexOf(Object)

remove

public java.lang.Object remove(int index)
Specified by:
remove in interface java.util.List
See Also:
List.remove(int)

remove

public boolean remove(java.lang.Object o)
Specified by:
remove in interface java.util.Collection
Specified by:
remove in interface java.util.List
See Also:
Collection.remove(Object)

removeAll

public boolean removeAll(java.util.Collection c)
Specified by:
removeAll in interface java.util.Collection
Specified by:
removeAll in interface java.util.List
See Also:
Collection.removeAll(Collection)

retainAll

public boolean retainAll(java.util.Collection c)
Specified by:
retainAll in interface java.util.Collection
Specified by:
retainAll in interface java.util.List
See Also:
Collection.retainAll(Collection)

set

public java.lang.Object set(int index,
                            java.lang.Object element)
Specified by:
set in interface java.util.List
See Also:
List.set(int, Object)

size

public int size()
Specified by:
size in interface java.util.Collection
Specified by:
size in interface java.util.List
See Also:
Collection.size()

subList

public java.util.List subList(int fromIndex,
                              int toIndex)
Specified by:
subList in interface java.util.List

toArray

public java.lang.Object[] toArray()
Specified by:
toArray in interface java.util.Collection
Specified by:
toArray in interface java.util.List

toArray

public java.lang.Object[] toArray(java.lang.Object[] a)
Specified by:
toArray in interface java.util.Collection
Specified by:
toArray in interface java.util.List
See Also:
Collection.toArray(Object[])

getUnfetchedObjects

public int getUnfetchedObjects()
Returns a total number of objects that are not resolved yet.



Copyright © 2001-2006 Apache.org All Rights Reserved.