Package groovy.sql

# Class GroovyResultSetExtension

java.lang.Object
groovy.lang.GroovyObjectSupport
groovy.sql.GroovyResultSetExtension

All Implemented Interfaces:
  `GroovyObject`

public class GroovyResultSetExtension extends GroovyObjectSupport
GroovyResultSetExtension implements additional logic for ResultSet. Due to the version incompatibility between java6 and java5 those methods were moved here from the original GroovyResultSet class. The methods in this class are used by the proxy GroovyResultSetProxy, which will try to invoke methods on this class before invoking it on ResultSet.

This class is not intended to be used directly. Should be used through GroovyResultSetProxy only!

See Also:
  - `GroovyResultSet`
  - `GroovyResultSetProxy`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `GroovyResultSetExtension(ResultSet set)`
  Creates a GroovyResultSet implementation.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `add(Map values)`
  Adds a new row to the result set
  `void`
  `eachRow(Closure closure)`
  Call the closure once for each row in the result set.
  `Object`
  `getAt(int index)`
  Supports integer based subscript operators for accessing at numbered columns starting at zero.
  `Object`
  `getProperty(String columnName)`
  Gets the value of the designated column in the current row of as an `Object`.
  `protected ResultSet`
  `getResultSet()`
  Gets the current result set.
  `Object`
  `invokeMethod(String name, Object args)`
  Delegates the method call to the underlying `ResultSet`.
  `boolean`
  `next()`
  Moves the cursor down one row from its current position.
  `protected int`
  `normalizeIndex(int index)`
  Takes a zero based index and convert it into an SQL based 1 based index.
  `boolean`
  `previous()`
  Moves the cursor to the previous row in this `getResultSet()` object.
  `void`
  `putAt(int index, Object newValue)`
  Supports integer based subscript operators for updating the values of numbered columns starting at zero.
  `void`
  `setProperty(String columnName, Object newValue)`
  Updates the designated column with an `Object` value.
  `String`
  `toString()`
  Returns a string representation of the current row.

  ### Methods inherited from class groovy.lang.GroovyObjectSupport

  `getMetaClass, setMetaClass`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### GroovyResultSetExtension

    public GroovyResultSetExtension(ResultSet set)
    Creates a GroovyResultSet implementation.
    Parameters:
      `set` - the result set

- ## Method Details

  - ### getResultSet

    protected ResultSet getResultSet() throws SQLException
    Gets the current result set.
    Returns:
      the result set
    Throws:
      `SQLException` - if the result set can not be returned

  - ### toString

    public String toString()
    Returns a string representation of the current row.
    Overrides:
      `toString` in class `Object`
    Returns:
      a string containing column names and current-row values

  - ### invokeMethod

    public Object invokeMethod(String name, Object args)
    Delegates the method call to the underlying `ResultSet`.
    Parameters:
      `name` - the method name
      `args` - the method arguments
    Returns:
      the delegated result

  - ### getProperty

    public Object getProperty(String columnName)
    Gets the value of the designated column in the current row of as an `Object`.
    Parameters:
      `columnName` - the SQL name of the column
    Returns:
      the returned column value
    Throws:
      `MissingPropertyException` - if an SQLException happens while getting the object
    See Also:
      - `GroovyObject.getProperty(java.lang.String)`
      - `ResultSet.getObject(java.lang.String)`

  - ### setProperty

    public void setProperty(String columnName, Object newValue)
    Updates the designated column with an `Object` value.
    Parameters:
      `columnName` - the SQL name of the column
      `newValue` - the updated value
    Throws:
      `MissingPropertyException` - if an SQLException happens while setting the new value
    See Also:
      - `GroovyObject.setProperty(java.lang.String, java.lang.Object)`
      - `ResultSet.updateObject(java.lang.String, java.lang.Object)`

  - ### getAt

    public Object getAt(int index) throws SQLException
    Supports integer based subscript operators for accessing at numbered columns starting at zero. Negative indices are supported, they will count from the last column backwards.
    Parameters:
      `index` - is the number of the column to look at starting at 1
    Returns:
      the returned column value
    Throws:
      `SQLException` - if something goes wrong
    See Also:
      - `ResultSet.getObject(int)`

  - ### putAt

    public void putAt(int index, Object newValue) throws SQLException
    Supports integer based subscript operators for updating the values of numbered columns starting at zero. Negative indices are supported, they will count from the last column backwards.
    Parameters:
      `index` - is the number of the column to look at starting at 1
      `newValue` - the updated value
    Throws:
      `SQLException` - if something goes wrong
    See Also:
      - `ResultSet.updateObject(java.lang.String, java.lang.Object)`

  - ### add

    public void add(Map values) throws SQLException
    Adds a new row to the result set
    Parameters:
      `values` - a map containing the mappings for column names and values
    Throws:
      `SQLException` - if something goes wrong
    See Also:
      - `ResultSet.insertRow()`
      - `ResultSet.updateObject(java.lang.String, java.lang.Object)`
      - `ResultSet.moveToInsertRow()`

  - ### normalizeIndex

    protected int normalizeIndex(int index) throws SQLException
    Takes a zero based index and convert it into an SQL based 1 based index. A negative index will count backwards from the last column.
    Parameters:
      `index` - the raw requested index (may be negative)
    Returns:
      a JDBC index
    Throws:
      `SQLException` - if some exception occurs finding out the column count

  - ### eachRow

    public void eachRow(Closure closure) throws SQLException
    Call the closure once for each row in the result set.
    Parameters:
      `closure` - the closure to perform on each row
    Throws:
      `SQLException` - if something goes wrong

  - ### next

    public boolean next() throws SQLException
    Moves the cursor down one row from its current position. A `getResultSet()` cursor is initially positioned before the first row; the first call to the method `next` makes the first row the current row; the second call makes the second row the current row, and so on.

    If an input stream is open for the current row, a call to the method `next` will implicitly close it. A `getResultSet()` object's warning chain is cleared when a new row is read.

    Returns:
      `true` if the new current row is valid; `false` if there are no more rows
    Throws:
      `SQLException` - if a database access error occurs

  - ### previous

    public boolean previous() throws SQLException
    Moves the cursor to the previous row in this `getResultSet()` object.
    Returns:
      `true` if the cursor is on a valid row; `false` if it is off the result set
    Throws:
      `SQLException` - if a database access error occurs or the result set type is `TYPE_FORWARD_ONLY`
    Since:
      1.2