uk.ac.starlink.table.jdbc
Class StarResultSet

java.lang.Object
  extended by uk.ac.starlink.table.jdbc.StarResultSet

public class StarResultSet
extends java.lang.Object

Wraps the ResultSet class to provide the functions which are required to provide StarTable functionality.

Since:
23 Jul 2007

Constructor Summary
StarResultSet(java.sql.ResultSet rset)
          Constructs a StarResultSet with default type mapping behaviour.
StarResultSet(java.sql.ResultSet rset, TypeMapper typeMapper)
          Constructs a StarResultSet with given type mapping behaviour.
 
Method Summary
 RowSequence createRowSequence()
          Returns a sequential RowSequence based on this object.
 java.lang.Object getCell(int icol)
          Returns the object at a given column in the current row of this result set in a form suitable for use as the content of a StarTable cell.
 java.util.List<ValueInfo> getColumnAuxDataInfos()
          Returns an ordered list of ValueInfo objects representing the auxilliary metadata returned by this object's ColumnInfo objects.
 ColumnInfo[] getColumnInfos()
          Returns the array of column metadata objects corresponding to the columns in this result set.
 java.sql.ResultSet getResultSet()
          Returns the result set on which this table is based.
 java.lang.Object[] getRow()
          Returns the current row of this result set in a form suitable for use as the content of a StarTable.
 long getRowCount()
          Lazily counts the number of rows in this result set, if it has random access.
 boolean isRandom()
          Indicates whether this result set can be used for random access.
 void setRowIndex(long lrow)
          Sets the row index from which subsequent getCell(int) and getRow() calls will read.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StarResultSet

public StarResultSet(java.sql.ResultSet rset)
              throws java.sql.SQLException
Constructs a StarResultSet with default type mapping behaviour.

Parameters:
rset - result set
Throws:
java.sql.SQLException

StarResultSet

public StarResultSet(java.sql.ResultSet rset,
                     TypeMapper typeMapper)
              throws java.sql.SQLException
Constructs a StarResultSet with given type mapping behaviour.

Parameters:
rset - result set
typeMapper - handles conversion of JDBC types to cell types
Throws:
java.sql.SQLException
Method Detail

getResultSet

public java.sql.ResultSet getResultSet()
Returns the result set on which this table is based.

Returns:
result set

getColumnInfos

public ColumnInfo[] getColumnInfos()
Returns the array of column metadata objects corresponding to the columns in this result set.

Returns:
column info array (not a copy)

isRandom

public boolean isRandom()
Indicates whether this result set can be used for random access.

Returns:
true iff random access is possible

getRowCount

public long getRowCount()
Lazily counts the number of rows in this result set, if it has random access. Otherwise, returns -1 (unknown), since a count may be very expensive. If the count cannot be calculated for a random access table for some reason, zero is returned and a warning is logged.

Returns:
row count

getColumnAuxDataInfos

public java.util.List<ValueInfo> getColumnAuxDataInfos()
Returns an ordered list of ValueInfo objects representing the auxilliary metadata returned by this object's ColumnInfo objects.

Returns:
an unmodifiable ordered set of known metadata keys
See Also:
StarTable.getColumnAuxDataInfos()

setRowIndex

public void setRowIndex(long lrow)
                 throws java.io.IOException
Sets the row index from which subsequent getCell(int) and getRow() calls will read. Callers may need to worry about synchronization.

Parameters:
lrow - row index (0-based)
Throws:
java.lang.UnsupportedOperationException - for non-random result sets
java.io.IOException

getCell

public java.lang.Object getCell(int icol)
                         throws java.io.IOException
Returns the object at a given column in the current row of this result set in a form suitable for use as the content of a StarTable cell. Callers may need to worry about synchronization.

Parameters:
icol - the column to use (first column is 0)
Returns:
the cell value
Throws:
java.io.IOException

getRow

public java.lang.Object[] getRow()
                          throws java.io.IOException
Returns the current row of this result set in a form suitable for use as the content of a StarTable. Callers may need to worry about synchronization.

Returns:
array of cell values in current row
Throws:
java.io.IOException

createRowSequence

public RowSequence createRowSequence()
                              throws java.io.IOException
Returns a sequential RowSequence based on this object. This assumes that the cursor is currently at the beginning of the result set - no checking is performed here.

Returns:
row sequence
Throws:
java.io.IOException