Class ForwardQueryResult<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.ForwardQueryResult<E>
-
- All Implemented Interfaces:
Serializable,Iterable<E>,Collection<E>,List<E>,org.datanucleus.store.query.QueryResult<E>
public final class ForwardQueryResult<E> extends AbstractRDBMSQueryResult<E> implements Serializable
Lazy collection results from a Query with the ResultSet in a forward direction. In general the actual result elements are only loaded when accessed with the exception of non-transactional or optimistic contexts that load the elements at initialisation.If the query had a range defined and this was not handled in the datastore query then this QueryResult will skip the unrequired records and just return the range requested.
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanmoreResultSetRowsWhether there are still more rows to be processed in the ResultSet.protected ListresultIdsprotected List<E>resultObjsThe Result Objects.-
Fields inherited from class org.datanucleus.store.rdbms.query.AbstractRDBMSQueryResult
bulkLoadedValueByMemberNumber, closeStatementWithResultSet, fp, rof, rs
-
Fields inherited from class org.datanucleus.store.query.AbstractQueryResult
api, closed, connectionListeners, loadResultsAtCommit, query, resultSizeMethod, size
-
Fields inherited from class java.util.AbstractList
modCount
-
-
Constructor Summary
Constructors Constructor Description ForwardQueryResult(org.datanucleus.store.query.Query query, ResultObjectFactory<E> rof, ResultSet rs, org.datanucleus.FetchPlan fp, Collection candidates)Constructor of the result from a Query.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Method to close the results, making the results unusable thereafter.protected voidcloseResults()Internal method to close the ResultSet.protected voidclosingConnection()Method called to inform the query result that the connection is being closed so perform any required operations now, or rest in peace.booleancontains(Object o)Method to check if the specified object is contained in this result.booleancontainsAll(Collection c)Method to check if all of the specified objects are contained here.booleanequals(Object o)Eget(int index)Method to retrieve a particular element from the list.protected intgetSizeUsingMethod()Method to get the size using the "resultSizeMethod".inthashCode()voidinitialise()booleanisEmpty()Accessor for whether there are any results.Iterator<E>iterator()Accessor for an iterator for the results.ListIterator<E>listIterator()Accessor for an iterator for the results.protected EnextResultSetElement()Accessor for the next object from the ResultSet.Object[]toArray()Method to return the results as an array.Object[]toArray(Object[] a)Method to return the results as an array.protected 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
disconnect, registerMemberBulkResultSet, setCloseStatementWithResultSet
-
Methods inherited from class org.datanucleus.store.query.AbstractQueryResult
add, add, addAll, addConnectionListener, assertIsOpen, clear, indexOf, isOpen, lastIndexOf, remove, set, size, subList
-
Methods inherited from class java.util.AbstractList
listIterator, removeRange
-
Methods inherited from class java.util.AbstractCollection
addAll, remove, removeAll, retainAll, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArray
-
Methods inherited from interface java.util.List
addAll, remove, removeAll, replaceAll, retainAll, sort, spliterator
-
-
-
-
Constructor Detail
-
ForwardQueryResult
public ForwardQueryResult(org.datanucleus.store.query.Query query, ResultObjectFactory<E> rof, ResultSet rs, org.datanucleus.FetchPlan fp, 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- Candidate elements
-
-
Method Detail
-
initialise
public void initialise() throws SQLException- Specified by:
initialisein classAbstractRDBMSQueryResult<E>- Throws:
SQLException
-
nextResultSetElement
protected E nextResultSetElement()
Accessor for the next object from the ResultSet.- Returns:
- The next element from the ResultSet.
-
closeResults
protected void closeResults()
Internal method to close the ResultSet.- Overrides:
closeResultsin classAbstractRDBMSQueryResult<E>
-
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()
Method called to inform the query result that the connection is being closed so perform any required operations now, or rest in peace.- Specified by:
closingConnectionin classorg.datanucleus.store.query.AbstractQueryResult<E>
-
listIterator
public ListIterator<E> listIterator()
Accessor for an iterator for the results.- Specified by:
listIteratorin interfaceList<E>- Specified by:
listIteratorin classorg.datanucleus.store.query.AbstractQueryResult<E>- Returns:
- The iterator
-
contains
public boolean contains(Object o)
Method to check if the specified object is contained in this result.
-
containsAll
public boolean containsAll(Collection c)
Method to check if all of the specified objects are contained here.- Specified by:
containsAllin interfaceCollection<E>- Specified by:
containsAllin interfaceList<E>- Overrides:
containsAllin classorg.datanucleus.store.query.AbstractQueryResult<E>- Parameters:
c- The collection of objects- Returns:
- Whether they are all contained here.
-
equals
public boolean equals(Object o)
- Specified by:
equalsin interfaceCollection<E>- Specified by:
equalsin interfaceList<E>- Overrides:
equalsin classAbstractRDBMSQueryResult<E>
-
hashCode
public int hashCode()
- Specified by:
hashCodein interfaceCollection<E>- Specified by:
hashCodein interfaceList<E>- Overrides:
hashCodein classAbstractRDBMSQueryResult<E>
-
get
public E get(int index)
Method to retrieve a particular element from the list.
-
isEmpty
public boolean isEmpty()
Accessor for whether there are any results.
-
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 Object[] toArray()
Method to return the results as an array.
-
writeReplace
protected Object writeReplace() throws 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:
ObjectStreamException- Thrown if an error occurs
-
-