org.exolab.castor.persist.spi
Interface PersistenceQuery

All Known Implementing Classes:
MultiRSCallQuery, PostgreSQLCallQuery, ReturnedRSCallQuery, SQLEngine.SQLQuery

public interface PersistenceQuery

The persistence engine implements this interface in order to allow queries to be performed and multiple objects to be returned. This is an extension of Persistence.load(java.lang.Object, org.castor.persist.ProposedObject, java.lang.Object, org.exolab.castor.mapping.AccessMode) for dealing with complex queries.

The caller takes full responsibility to assure integrity of transactions and object caching and only relies on the engine to assist in assuring that through the mechanisms available to it.

A query may be created once and used multiple times by calling the execute(Object, AccessMode) method. Query parameters are set each time prior to executing the query.

See Persistence for information about locks, loading objects, identities and stamps.

Version:
$Revision: 1.3 $ $Date: 2005/07/15 21:59:16 $
Author:
Assaf Arkin
See Also:
Persistence

Method Summary
 boolean absolute(int row)
          moves the result of the query to the absolute position in the resultset
 void close()
          Close the query and release all resources held by the query.
 void execute(java.lang.Object conn, AccessMode accessMode)
          Execute the query with the give connection and lock type.
 void execute(java.lang.Object conn, AccessMode accessMode, boolean scrollable)
          same as above, but parameterized for scrollable resultsets.
 java.lang.Object fetch(ProposedObject proposedObject, java.lang.Object identity)
          Loades the object.
 int getParameterCount()
          Returns the number of parameters required for this query.
 java.lang.Class getParameterType(int index)
          Returns the type of a parameter required by this query.
 java.lang.Class getResultType()
          Returns the type of object returned by this query.
 java.lang.Object nextIdentity(java.lang.Object identity)
          Returns the identity of the next object to be returned.
 void setParameter(int index, java.lang.Object value)
          Sets the value of a paramter.
 int size()
          finds the size of the resulting resultset from the query.
 

Method Detail

getParameterCount

int getParameterCount()
Returns the number of parameters required for this query.

Returns:
Number of query parameters

getParameterType

java.lang.Class getParameterType(int index)
Returns the type of a parameter required by this query. May return null if the type is unknown.

Parameters:
index - The parameter index
Returns:
Type of parameter, or null

setParameter

void setParameter(int index,
                  java.lang.Object value)
Sets the value of a paramter. Will complain if the parameter is not of the specified type.

Parameters:
index - The parameter index
value - The parameter value

getResultType

java.lang.Class getResultType()
Returns the type of object returned by this query.

Returns:
The type of object returned by this query

execute

void execute(java.lang.Object conn,
             AccessMode accessMode)
             throws QueryException,
                    PersistenceException
Execute the query with the give connection and lock type. After a successful return the query results will be returned by calling nextIdentity(java.lang.Object) and fetch(org.castor.persist.ProposedObject, java.lang.Object). The query parameters will be reset. A new query may be issued by providing new query parameters and calling execute(Object, AccessMode).

Parameters:
conn - An open connection
accessMode - The access mode (null equals shared)
Throws:
QueryException - An invalid query
PersistenceException - An error reported by the persistence engine

execute

void execute(java.lang.Object conn,
             AccessMode accessMode,
             boolean scrollable)
             throws QueryException,
                    PersistenceException
same as above, but parameterized for scrollable resultsets.

Parameters:
conn - An open connection
accessMode - The access mode (null equals shared)
scrollable - The db cursor mode.
Throws:
QueryException - An invalid query
PersistenceException - An error reported by the persistence engine

nextIdentity

java.lang.Object nextIdentity(java.lang.Object identity)
                              throws PersistenceException
Returns the identity of the next object to be returned. Calling this method multiple time will skip objects. When the result set has been exhuasted, this method will return null.

Parameters:
identity - The identity of the previous object, null if this method is called for the first time
Returns:
The identity of the next object, null if the result set has been exhausted
Throws:
PersistenceException - An error reported by the persistence engine

fetch

java.lang.Object fetch(ProposedObject proposedObject,
                       java.lang.Object identity)
                       throws ObjectNotFoundException,
                              PersistenceException
Loades the object. This method must be called immediately after nextIdentity(java.lang.Object) with the same identity.

If the object is locked by another transaction this method will block until the lock is released, or a timeout occured. If a timeout occurs or the object has been deleted by the other transaction, this method will report an ObjectNotFoundException. The query may proceed to the next identity.

This method is equivalent to Persistence.load(java.lang.Object, org.castor.persist.ProposedObject, java.lang.Object, org.exolab.castor.mapping.AccessMode) with a known cache engine and access mode and acts on the query results rather than issuing a new query to load the object.

Parameters:
fields - The fields to load into
identity - The object's identity
Returns:
The object's stamp, or null
Throws:
ObjectNotFoundException - The object was not found in persistent storage
PersistenceException - A persistence error occured
See Also:
Persistence.load(java.lang.Object, org.castor.persist.ProposedObject, java.lang.Object, org.exolab.castor.mapping.AccessMode)

close

void close()
Close the query and release all resources held by the query.


absolute

boolean absolute(int row)
                 throws PersistenceException
moves the result of the query to the absolute position in the resultset

Parameters:
row - The row to move to
Throws:
PersistenceException - A persistence error occured

size

int size()
         throws PersistenceException
finds the size of the resulting resultset from the query.

Throws:
PersistenceException


Intalio Inc. (C) 1999-2004. All rights reserved http://www.intalio.com