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 classScrollableQueryResult.QueryResultIteratorAn Iterator results of a pm.query.execute().iterator()
-
Field Summary
Fields Modifier and Type Field Description (package private) intendIndexPosition of last result (origin=0, set when known).protected java.util.Map<java.lang.Integer,java.lang.Object>resultIdsByPositionMap of persistable object id, keyed by the result position (0, 1, 2, ...).private java.util.Map<java.lang.Integer,E>resultsObjsByIndexMap of ResultSet object values, keyed by the list index ("0", "1", etc).(package private) intstartIndexPosition 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 voidcacheQueryResults()voidclose()Method to close the results, making the results unusable thereafter.protected voidclosingConnection()Inform the query result that the connection is being closed so perform any operations now, or rest in peace.booleanequals(java.lang.Object o)Eget(int index)Method to retrieve a particular element from the list.protected EgetObjectForIndex(int index)Accessor for the result object at an index.protected intgetSizeUsingMethod()Method to get the size using the "resultSizeMethod".inthashCode()voidinitialise()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 voidloadObjects(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.ObjectwriteReplace()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:
initialisein 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:
closein interfaceorg.datanucleus.store.query.QueryResult<E>- Overrides:
closein 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:
closingConnectionin 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:
equalsin interfacejava.util.Collection<E>- Specified by:
equalsin interfacejava.util.List<E>- Overrides:
equalsin classAbstractRDBMSQueryResult<E>
-
hashCode
public int hashCode()
- Specified by:
hashCodein interfacejava.util.Collection<E>- Specified by:
hashCodein interfacejava.util.List<E>- Overrides:
hashCodein 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:
getSizeUsingMethodin 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.ObjectStreamExceptionHandle 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
-
-