Class ResultSetCursor<T extends PersistentDomainObject<T>>
java.lang.Object
org.tentackle.persist.ResultSetCursor<T>
- Type Parameters:
T- the retrieved type
- All Implemented Interfaces:
AutoCloseable, ScrollableResource<T>
public class ResultSetCursor<T extends PersistentDomainObject<T>>
extends Object
implements ScrollableResource<T>
A cursor for a
ResultSetWrapper.- Author:
- harald
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classAdds a closed flag to saveObject a roundtrip in remote sessions. -
Constructor Summary
ConstructorsConstructorDescriptionResultSetCursor(DomainContext context, RemoteResultSetCursor<T> remoteCursor) Creates a cursor for a remote session.
Constructor for pdo objects.ResultSetCursor(T pdo, ResultSetWrapper rs) Creates a cursor for a local session.ResultSetCursor(T pdo, ResultSetWrapper rs, JoinedSelect<T> js) Creates a cursor for a local session. -
Method Summary
Modifier and TypeMethodDescriptionvoidPositions the cursor after the last row.
Works even for empty cursors.protected voidAsserts that there are no joins in the query.protected voidAsserts that session is local.protected voidAsserts that session is remote.voidPositions the cursor before the first row.
Works even for empty cursors.voidclose()Closes the cursor.
The cursor is opened in its constructor.protected voidconfigureRemoteObject(T pdo) Configures the remotely retrieved PDO.fetch()Fetches the next objects up to the fetch size.
This method is provided to minimize the number of roundtrips especially for remote cursors.booleanfirst()Rewinds the cursor to the first row.get()Gets the data object of the current row.Gets the domain context.intGets the fetch direction.intGets the fetch size.Gets the join configuration.Gets the remote cursor.Gets the result set.intgetRow()Gets the current row.
Row numbers start at 1.Gets the session.booleanChecks whether the cursor is after the last row.booleanChecks whether the cursor is before the first row.booleanisClosed()Returns whether the cursor is closed.booleanlast()Positions the cursor on the last row.booleannext()Moves the cursor to the next row.
If there are no more rows the current row remains unchanged.booleanprevious()Moves the cursor to the previous row.
If we are already at the beginning, the cursor remains unchanged.booleanscroll(int rows) Moves the cursor a given number of rows.voidsetFetchDirection(int direction) Sets the fetch direction.voidsetFetchSize(int rows) Sets the fetch size.
This is the number of rows the cursor will fetch from the server in one batch.booleansetRow(int row) Sets the cursor to a given row.
Row numbers start at 1.toList()Returns the objects of this cursor as a list.protected voidAdds the rest of the cursor to a list.Returns the objects of this cursor as a list and closes this cursor.
-
Constructor Details
-
ResultSetCursor
Creates a cursor for a local session.- Parameters:
pdo- the PDO proxyrs- the result setjs- the join configuration, null if no joins
-
ResultSetCursor
Creates a cursor for a local session.- Parameters:
pdo- the PDO proxyrs- the result set
-
ResultSetCursor
Creates a cursor for a remote session.
Constructor for pdo objects.- Parameters:
context- the domain contextremoteCursor- the remote cursor
-
-
Method Details
-
getResultSet
-
getJoinedSelect
Gets the join configuration.- Returns:
- the join configuration, null if no joins
- Throws:
PersistenceException- if session is remote
-
getRemoteCursor
Gets the remote cursor.- Returns:
- the remote cursor
- Throws:
PersistenceException- if session is local
-
getSession
-
getDomainContext
-
close
public void close()Closes the cursor.
The cursor is opened in its constructor. Closing an already closed cursor is allowed.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceScrollableResource<T extends PersistentDomainObject<T>>
-
isClosed
public boolean isClosed()Returns whether the cursor is closed.- Specified by:
isClosedin interfaceScrollableResource<T extends PersistentDomainObject<T>>- Returns:
- true if closed
-
getRow
public int getRow()Gets the current row.
Row numbers start at 1.- Specified by:
getRowin interfaceScrollableResource<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:
setRowin interfaceScrollableResource<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:
firstin interfaceScrollableResource<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:
lastin interfaceScrollableResource<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:
nextin interfaceScrollableResource<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:
previousin interfaceScrollableResource<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:
scrollin interfaceScrollableResource<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 cursors.- Specified by:
beforeFirstin interfaceScrollableResource<T extends PersistentDomainObject<T>>
-
afterLast
public void afterLast()Positions the cursor after the last row.
Works even for empty cursors.- Specified by:
afterLastin interfaceScrollableResource<T extends PersistentDomainObject<T>>
-
isBeforeFirst
public boolean isBeforeFirst()Checks whether the cursor is before the first row.- Specified by:
isBeforeFirstin interfaceScrollableResource<T extends PersistentDomainObject<T>>- Returns:
- true if before first
-
isAfterLast
public boolean isAfterLast()Checks whether the cursor is after the last row.- Specified by:
isAfterLastin interfaceScrollableResource<T extends PersistentDomainObject<T>>- Returns:
- true if after last
-
get
Gets the data object of the current row.- Specified by:
getin interfaceScrollableResource<T extends PersistentDomainObject<T>>- Returns:
- the object, null if invalid row or no such object
-
toList
Returns the objects of this cursor as a list.- Specified by:
toListin interfaceScrollableResource<T extends PersistentDomainObject<T>>- Returns:
- the list
-
toListAndClose
Returns the objects of this cursor as a list and closes this cursor.- Specified by:
toListAndClosein interfaceScrollableResource<T extends PersistentDomainObject<T>>- Returns:
- the list
-
setFetchSize
public void setFetchSize(int rows) Sets the fetch size.
This is the number of rows the cursor will fetch from the server in one batch. A fetch size of 0 means server default.- Specified by:
setFetchSizein interfaceScrollableResource<T extends PersistentDomainObject<T>>- Parameters:
rows- the fetch size
-
getFetchSize
public int getFetchSize()Gets the fetch size.- Specified by:
getFetchSizein interfaceScrollableResource<T extends PersistentDomainObject<T>>- Returns:
- the fetch size
-
setFetchDirection
public void setFetchDirection(int direction) Sets the fetch direction.- Parameters:
direction- the direction, seeResultSet.setFetchDirection(int).
-
getFetchDirection
public int getFetchDirection()Gets the fetch direction.- Returns:
- the direction
-
fetch
Fetches the next objects up to the fetch size.
This method is provided to minimize the number of roundtrips especially for remote cursors. The cursor is closed at the end of the cursor.- Specified by:
fetchin interfaceScrollableResource<T extends PersistentDomainObject<T>>- Returns:
- the list of objects, null if no more objects found
-
toList
-
configureRemoteObject
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.
-