Class ScrollableQueryResult<E>
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractList<E>
-
- org.datanucleus.store.query.AbstractQueryResult<E>
-
- org.datanucleus.store.rdbms.query.AbstractRDBMSQueryResult<E>
-
- org.datanucleus.store.rdbms.query.ScrollableQueryResult<E>
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Iterable<E>
,java.util.Collection<E>
,java.util.List<E>
,org.datanucleus.store.query.QueryResult<E>
public final class ScrollableQueryResult<E> extends AbstractRDBMSQueryResult<E> implements java.io.Serializable
Lazy collection results from a Query with the ResultSet scrollable. Supports the following query extensions (in addition to those supported by superclasses) :-- datanucleus.query.resultCacheType Type of caching of result objects. Supports strong, weak, soft, none
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
ScrollableQueryResult.QueryResultIterator
An Iterator results of a pm.query.execute().iterator()
-
Field Summary
Fields Modifier and Type Field Description (package private) int
endIndex
Position of last result (origin=0, set when known).protected java.util.Map<java.lang.Integer,java.lang.Object>
resultIdsByPosition
Map of persistable object id, keyed by the result position (0, 1, 2, ...).private java.util.Map<java.lang.Integer,E>
resultsObjsByIndex
Map of ResultSet object values, keyed by the list index ("0", "1", etc).(package private) int
startIndex
Position of first result (origin=0).-
Fields inherited from class org.datanucleus.store.rdbms.query.AbstractRDBMSQueryResult
applyRangeChecks, bulkLoadedMmds, bulkLoadedValueByMemberNumber, closeStatementWithResultSet, fp, rof, rs
-
-
Constructor Summary
Constructors Constructor Description ScrollableQueryResult(org.datanucleus.store.query.Query query, ResultObjectFactory<E> rof, java.sql.ResultSet rs, org.datanucleus.FetchPlan fp, java.util.Collection candidates)
Constructor of the result from a Query.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
cacheQueryResults()
void
close()
Method to close the results, making the results unusable thereafter.protected void
closingConnection()
Inform the query result that the connection is being closed so perform any operations now, or rest in peace.boolean
equals(java.lang.Object o)
E
get(int index)
Method to retrieve a particular element from the list.protected E
getObjectForIndex(int index)
Accessor for the result object at an index.protected int
getSizeUsingMethod()
Method to get the size using the "resultSizeMethod".int
hashCode()
void
initialise()
java.util.Iterator<E>
iterator()
Accessor for an iterator for the results.java.util.ListIterator<E>
listIterator()
Accessor for an iterator for the results.protected void
loadObjects(int start, int maxNumber)
Convenience method to load up rows starting at the specified position.java.lang.Object[]
toArray()
<T> T[]
toArray(T[] a)
private <T> T[]
toArrayInternal(T[] a)
protected java.lang.Object
writeReplace()
Handle serialisation by returning a java.util.ArrayList of all of the results for this query after disconnecting the query which has the consequence of enforcing the load of all objects.-
Methods inherited from class org.datanucleus.store.rdbms.query.AbstractRDBMSQueryResult
closeResults, disconnect, registerMemberBulkResultSet, setCloseStatementWithResultSet
-
Methods inherited from class org.datanucleus.store.query.AbstractQueryResult
add, add, addAll, addConnectionListener, assertIsOpen, clear, contains, containsAll, indexOf, isEmpty, isOpen, lastIndexOf, remove, set, size, subList
-
Methods inherited from class java.util.AbstractCollection
addAll, remove, removeAll, retainAll, toString
-
-
-
-
Field Detail
-
resultsObjsByIndex
private java.util.Map<java.lang.Integer,E> resultsObjsByIndex
Map of ResultSet object values, keyed by the list index ("0", "1", etc).
-
resultIdsByPosition
protected java.util.Map<java.lang.Integer,java.lang.Object> resultIdsByPosition
Map of persistable object id, keyed by the result position (0, 1, 2, ...).
-
startIndex
int startIndex
Position of first result (origin=0).
-
endIndex
int endIndex
Position of last result (origin=0, set when known).
-
-
Constructor Detail
-
ScrollableQueryResult
public ScrollableQueryResult(org.datanucleus.store.query.Query query, ResultObjectFactory<E> rof, java.sql.ResultSet rs, org.datanucleus.FetchPlan fp, java.util.Collection candidates)
Constructor of the result from a Query.- Parameters:
query
- The Queryrof
- The factory to retrieve results fromrs
- The ResultSet from the Query Statementfp
- FetchPlancandidates
- the Candidates collection. Pass this argument only when distinct = false
-
-
Method Detail
-
initialise
public void initialise()
- Specified by:
initialise
in classAbstractRDBMSQueryResult<E>
-
loadObjects
protected void loadObjects(int start, int maxNumber)
Convenience method to load up rows starting at the specified position. Optionally takes a maximum number of rows to process.- Parameters:
start
- Start rowmaxNumber
- Max number to process (-1 means no maximum)
-
getObjectForIndex
protected E getObjectForIndex(int index)
Accessor for the result object at an index. If the object has already been processed will return that object, otherwise will retrieve the object using the factory.- Parameters:
index
- The list index position- Returns:
- The result object
-
close
public void close()
Method to close the results, making the results unusable thereafter.- Specified by:
close
in interfaceorg.datanucleus.store.query.QueryResult<E>
- Overrides:
close
in classAbstractRDBMSQueryResult<E>
-
closingConnection
protected void closingConnection()
Inform the query result that the connection is being closed so perform any operations now, or rest in peace.- Specified by:
closingConnection
in classorg.datanucleus.store.query.AbstractQueryResult<E>
-
cacheQueryResults
protected void cacheQueryResults()
-
iterator
public java.util.Iterator<E> iterator()
Accessor for an iterator for the results.
-
listIterator
public java.util.ListIterator<E> listIterator()
Accessor for an iterator for the results.
-
equals
public boolean equals(java.lang.Object o)
- Specified by:
equals
in interfacejava.util.Collection<E>
- Specified by:
equals
in interfacejava.util.List<E>
- Overrides:
equals
in classAbstractRDBMSQueryResult<E>
-
hashCode
public int hashCode()
- Specified by:
hashCode
in interfacejava.util.Collection<E>
- Specified by:
hashCode
in interfacejava.util.List<E>
- Overrides:
hashCode
in classAbstractRDBMSQueryResult<E>
-
get
public E get(int index)
Method to retrieve a particular element from the list.
-
getSizeUsingMethod
protected int getSizeUsingMethod()
Method to get the size using the "resultSizeMethod". This implementation supports "LAST" method. Override this in subclasses to implement other methods.- Overrides:
getSizeUsingMethod
in classorg.datanucleus.store.query.AbstractQueryResult<E>
- Returns:
- The size
-
toArray
public java.lang.Object[] toArray()
-
toArray
public <T> T[] toArray(T[] a)
-
toArrayInternal
private <T> T[] toArrayInternal(T[] a)
-
writeReplace
protected java.lang.Object writeReplace() throws java.io.ObjectStreamException
Handle serialisation by returning a java.util.ArrayList of all of the results for this query after disconnecting the query which has the consequence of enforcing the load of all objects.- Returns:
- The object to serialise
- Throws:
java.io.ObjectStreamException
- thrown if an error occurs
-
-