org.objectweb.medor.datasource.rdb.lib
Class JDBCTupleCollection

java.lang.Object
  extended byorg.objectweb.medor.datasource.rdb.lib.JDBCTupleCollection
All Implemented Interfaces:
TupleCollection

public class JDBCTupleCollection
extends java.lang.Object
implements TupleCollection

This class encapsulates a resultset as a TupleCollection.

Author:
S.Chassande-Barrioz

Constructor Summary
JDBCTupleCollection(TupleStructure tupleStructure, java.sql.ResultSet rs, java.sql.PreparedStatement ps, RdbAdapter adapter, Logger logger)
           
 
Method Summary
 void close()
          It closes the TupleCollection, relaeases used resources (example : ResultSet).
 void first()
          Moves the cursor to the first Tuple of this TupleCollection
 TupleStructure getMetaData()
          Retrieves the number,types and stors properties of the data sources of this TupleCollection Object.
 int getRow()
          Retrieves the current row Number of this TupleCollection
 Tuple getTuple()
          Returns the Tuple value of the current row of this TupleCollection object.
 Tuple getTuple(int row)
          Returns the Tuple value of the designeted row of this TupleCollection object.
 boolean isEmpty()
          Tell whether the current TupleCollection Object is empty or no.
 boolean isLast()
          Checks whether the current row is the last row.
 boolean next()
          Moves the cursor down one row from its current position to the next row.
 boolean row(int i)
          Moves the cursor to the given row number in this TupleCollection object.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JDBCTupleCollection

public JDBCTupleCollection(TupleStructure tupleStructure,
                           java.sql.ResultSet rs,
                           java.sql.PreparedStatement ps,
                           RdbAdapter adapter,
                           Logger logger)
                    throws MedorException,
                           ExpressionException,
                           java.sql.SQLException
Parameters:
tupleStructure - is the TupleStructure describing the struture of the TupleCollection.
rs - is the encapsulated ResultSet. The resultset is already positioned on the first element.
ps - is the PreparedStatement which must be closed in same time than this tuple collection and the ResultSet.
adapter - is the RdbAdapter to use
logger -
Method Detail

getMetaData

public TupleStructure getMetaData()
                           throws MedorException
Description copied from interface: TupleCollection
Retrieves the number,types and stors properties of the data sources of this TupleCollection Object.

Specified by:
getMetaData in interface TupleCollection
Returns:
a TupleCollectionMetaData Object defining teh TupleCollection.
Throws:
MedorException - if a data source access error occurs

isLast

public boolean isLast()
               throws MedorException
Checks whether the current row is the last row.

This method relies on the resultSet.next() method, and not on the resultSet.isLast() method, since isLast is not supported by all JDBC drivers. Method next() of this class first checks whether resultSet.next() has already been called by isLast before calling it.

Specified by:
isLast in interface TupleCollection
Returns:
true if it was the last row, false otherwise
Throws:
MedorException - if there is a SQL exception

close

public void close()
           throws MedorException
Description copied from interface: TupleCollection
It closes the TupleCollection, relaeases used resources (example : ResultSet). The next uses of the TupleCollection will throw an exception.

Specified by:
close in interface TupleCollection
Throws:
MedorException

next

public boolean next()
             throws MedorException
Moves the cursor down one row from its current position to the next row.

Note that nothing is done in the case resultSet.next() was already called when calling isLast().

Specified by:
next in interface TupleCollection
Returns:
true if there was a next row, false if there is no next row.
Throws:
MedorException - if there is a SQL Exception.

first

public void first()
           throws MedorException
Moves the cursor to the first Tuple of this TupleCollection

Specified by:
first in interface TupleCollection
Throws:
MedorException - if data source access error

getRow

public int getRow()
           throws MedorException
Retrieves the current row Number of this TupleCollection

Specified by:
getRow in interface TupleCollection
Returns:
-1 if the iterator is out of bounds of the TupleCollection or if it is empty.
Throws:
MedorException - if data source access error.

getTuple

public Tuple getTuple()
               throws MedorException
Description copied from interface: TupleCollection
Returns the Tuple value of the current row of this TupleCollection object.

Specified by:
getTuple in interface TupleCollection
Returns:
the value of the current Tuple.
Throws:
MedorException - if data source access error.

getTuple

public Tuple getTuple(int row)
               throws MedorException
Description copied from interface: TupleCollection
Returns the Tuple value of the designeted row of this TupleCollection object.

Specified by:
getTuple in interface TupleCollection
Parameters:
row - :int
Returns:
the a Tuple Number row.
Throws:
MedorException - if data source access error.

isEmpty

public boolean isEmpty()
                throws MedorException
Description copied from interface: TupleCollection
Tell whether the current TupleCollection Object is empty or no.

Specified by:
isEmpty in interface TupleCollection
Returns:
true if the TupleCollection is empty.
Throws:
MedorException - if data source access error.

row

public boolean row(int i)
            throws MedorException
Description copied from interface: TupleCollection
Moves the cursor to the given row number in this TupleCollection object. The first row is row 1, the second is row 2, and so on.

Specified by:
row in interface TupleCollection
Returns:
true if move is possible
Throws:
MedorException - if row number is invelid or data source access error