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

      • moreResultSetRows

        protected boolean moreResultSetRows
        Whether there are still more rows to be processed in the ResultSet.
      • resultObjs

        protected List<E> resultObjs
        The Result Objects.
      • resultIds

        protected List resultIds
    • 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 Query
        rof - The factory to retrieve results from
        rs - The ResultSet from the Query Statement
        fp - FetchPlan
        candidates - Candidate elements
    • Method Detail

      • nextResultSetElement

        protected E nextResultSetElement()
        Accessor for the next object from the ResultSet.
        Returns:
        The next element from the ResultSet.
      • close

        public void close()
        Method to close the results, making the results unusable thereafter.
        Specified by:
        close in interface org.datanucleus.store.query.QueryResult<E>
        Overrides:
        close in class AbstractRDBMSQueryResult<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:
        closingConnection in class org.datanucleus.store.query.AbstractQueryResult<E>
      • iterator

        public Iterator<E> iterator()
        Accessor for an iterator for the results.
        Specified by:
        iterator in interface Collection<E>
        Specified by:
        iterator in interface Iterable<E>
        Specified by:
        iterator in interface List<E>
        Specified by:
        iterator in class org.datanucleus.store.query.AbstractQueryResult<E>
        Returns:
        The iterator
      • listIterator

        public ListIterator<E> listIterator()
        Accessor for an iterator for the results.
        Specified by:
        listIterator in interface List<E>
        Specified by:
        listIterator in class org.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.
        Specified by:
        contains in interface Collection<E>
        Specified by:
        contains in interface List<E>
        Overrides:
        contains in class org.datanucleus.store.query.AbstractQueryResult<E>
        Parameters:
        o - The object
        Returns:
        Whether it is contained here.
      • containsAll

        public boolean containsAll​(Collection c)
        Method to check if all of the specified objects are contained here.
        Specified by:
        containsAll in interface Collection<E>
        Specified by:
        containsAll in interface List<E>
        Overrides:
        containsAll in class org.datanucleus.store.query.AbstractQueryResult<E>
        Parameters:
        c - The collection of objects
        Returns:
        Whether they are all contained here.
      • get

        public E get​(int index)
        Method to retrieve a particular element from the list.
        Specified by:
        get in interface List<E>
        Specified by:
        get in class org.datanucleus.store.query.AbstractQueryResult<E>
        Parameters:
        index - The index of the element
        Returns:
        The element at index
      • isEmpty

        public boolean isEmpty()
        Accessor for whether there are any results.
        Specified by:
        isEmpty in interface Collection<E>
        Specified by:
        isEmpty in interface List<E>
        Overrides:
        isEmpty in class org.datanucleus.store.query.AbstractQueryResult<E>
        Returns:
        true if these results are empty.
      • 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 class org.datanucleus.store.query.AbstractQueryResult<E>
        Returns:
        The size
      • toArray

        public Object[] toArray()
        Method to return the results as an array.
        Specified by:
        toArray in interface Collection<E>
        Specified by:
        toArray in interface List<E>
        Overrides:
        toArray in class org.datanucleus.store.query.AbstractQueryResult<E>
        Returns:
        The array.
      • toArray

        public Object[] toArray​(Object[] a)
        Method to return the results as an array.
        Specified by:
        toArray in interface Collection<E>
        Specified by:
        toArray in interface List<E>
        Overrides:
        toArray in class org.datanucleus.store.query.AbstractQueryResult<E>
        Parameters:
        a - The array to copy into.
        Returns:
        The 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