Class ResultSetCursor<T extends PersistentDomainObject<T>>

java.lang.Object
org.tentackle.persist.ResultSetCursor<T>
Type Parameters:
T - the retrieved type
All Implemented Interfaces:
AutoCloseable, org.tentackle.misc.ScrollableResource<T>

public class ResultSetCursor<T extends PersistentDomainObject<T>> extends Object implements org.tentackle.misc.ScrollableResource<T>
A cursor for a ResultSetWrapper.
Author:
harald
  • Constructor Details

    • ResultSetCursor

      public ResultSetCursor(T pdo, ResultSetWrapper rs, JoinedSelect<T> js)
      Creates a cursor for a local session.
      Parameters:
      pdo - the PDO proxy
      rs - the result set
      js - the join configuration, null if no joins
    • ResultSetCursor

      public ResultSetCursor(T pdo, ResultSetWrapper rs)
      Creates a cursor for a local session.
      Parameters:
      pdo - the PDO proxy
      rs - the result set
    • ResultSetCursor

      public ResultSetCursor(DomainContext context, RemoteResultSetCursor<T> remoteCursor)
      Creates a cursor for a remote session.
      Constructor for pdo objects.
      Parameters:
      context - the domain context
      remoteCursor - the remote cursor
  • Method Details

    • getResultSet

      public ResultSetWrapper getResultSet()
      Gets the result set.
      Returns:
      the result set
    • getJoinedSelect

      public JoinedSelect<T> getJoinedSelect()
      Gets the join configuration.
      Returns:
      the join configuration, null if no joins
      Throws:
      org.tentackle.session.PersistenceException - if session is remote
    • getRemoteCursor

      public RemoteResultSetCursor<T> getRemoteCursor()
      Gets the remote cursor.
      Returns:
      the remote cursor
      Throws:
      org.tentackle.session.PersistenceException - if session is local
    • getSession

      public org.tentackle.session.Session getSession()
      Gets the session.
      Returns:
      the session
    • getDomainContext

      public DomainContext getDomainContext()
      Gets the domain context.
      Returns:
      the context
    • close

      public void close()
      Closes the cursor.
      The cursor is opened in its constructor. Closing an already closed cursor is allowed.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
    • isClosed

      public boolean isClosed()
      Returns whether the cursor is closed.
      Specified by:
      isClosed in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Returns:
      true if closed
    • getRow

      public int getRow()
      Gets the current row.
      Row numbers start at 1.
      Specified by:
      getRow in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Returns:
      the current row, 0 if before first row
    • setRow

      public boolean setRow(int row)
      Sets the cursor to a given row.
      Row numbers start at 1.
      Specified by:
      setRow in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Parameters:
      row - the row number (must be ≥ 0)
      Returns:
      true if done, false if no such row and the cursor is now before the first row or after the last row
    • first

      public boolean first()
      Rewinds the cursor to the first row.
      Specified by:
      first in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Returns:
      true if rewound, false if cursor is empty
    • last

      public boolean last()
      Positions the cursor on the last row.
      Specified by:
      last in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Returns:
      true if positioned, false if cursor is empty
    • next

      public boolean next()
      Moves the cursor to the next row.
      If there are no more rows the current row remains unchanged.
      Specified by:
      next in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Returns:
      true if moved, false if no more rows
    • previous

      public boolean previous()
      Moves the cursor to the previous row.
      If we are already at the beginning, the cursor remains unchanged.
      Specified by:
      previous in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Returns:
      true if advanced, false if already at the beginning
    • scroll

      public boolean scroll(int rows)
      Moves the cursor a given number of rows.
      Specified by:
      scroll in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Parameters:
      rows - the number of rows to move, negative to move backwards
      Returns:
      true if moved, false if no such row and the cursor is now positioned before the first row or after the last row
    • beforeFirst

      public void beforeFirst()
      Positions the cursor before the first row.
      Works even for empty cursoresources.rs.
      Specified by:
      beforeFirst in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
    • afterLast

      public void afterLast()
      Positions the cursor after the last row.
      Works even for empty cursoresources.rs.
      Specified by:
      afterLast in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
    • isBeforeFirst

      public boolean isBeforeFirst()
      Checks whether the cursor is before the first row.
      Specified by:
      isBeforeFirst in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Returns:
      true if before first
    • isAfterLast

      public boolean isAfterLast()
      Checks whether the cursor is after the last row.
      Specified by:
      isAfterLast in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Returns:
      true if after last
    • get

      public T get()
      Gets the data object of the current row.
      Specified by:
      get in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Returns:
      the object, null if invalid row or no such object
    • toList

      public List<T> toList()
      Returns the objects of this cursor as a list.
      Specified by:
      toList in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Returns:
      the list
    • toListAndClose

      public List<T> toListAndClose()
      Returns the objects of this cursor as a list and closes this cursor.
      Specified by:
      toListAndClose in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Returns:
      the list
    • setFetchSize

      public void setFetchSize(int rows)
      Sets the fetchsize.
      This is the number of rows the cursor will fetch from the server in one batch. A fetchsize of 0 means server default.
      Specified by:
      setFetchSize in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Parameters:
      rows - the fetchsize
    • getFetchSize

      public int getFetchSize()
      Gets the fetchsize.
      Specified by:
      getFetchSize in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Returns:
      the fetchsize
    • setFetchDirection

      public void setFetchDirection(int direction)
      Sets the fetch direction.
      Parameters:
      direction - the direction, see ResultSet.setFetchDirection(int).
    • getFetchDirection

      public int getFetchDirection()
      Gets the fetch direction.
      Returns:
      the direction
    • fetch

      public ResultSetCursor.FetchList<T> fetch()
      Fetches the next objects up to the fetchsize.
      This method is provided to minimize the number of roundtrips especially for remote cursoresources.rs. The cursor is closed at the end of the cursor.
      Specified by:
      fetch in interface org.tentackle.misc.ScrollableResource<T extends PersistentDomainObject<T>>
      Returns:
      the list of objects, null if no more objects found
    • toList

      protected void toList(List<T> list)
      Adds the rest of the cursor to a list.
      Parameters:
      list - the list
    • configureRemoteObject

      protected void configureRemoteObject(T pdo)
      Configures the remotely retrieved PDO.
      Parameters:
      pdo - the PDO
    • assertSessionIsRemote

      protected void assertSessionIsRemote()
      Asserts that session is remote.
    • assertSessionIsLocal

      protected void assertSessionIsLocal()
      Asserts that session is local.
    • assertNoJoins

      protected void assertNoJoins()
      Asserts that there are no joins in the query.