Package com.ziclix.python.sql

# Class Jython22DataHandler

java.lang.Object
com.ziclix.python.sql.DataHandler
com.ziclix.python.sql.Jython22DataHandler

public class Jython22DataHandler extends DataHandler
A copy of the DataHandler class as it was before Jython 2.5. By that version, some backward-incompatible changes was made, as returning datetime.* objects for DATE, TIME and TIMESTAMP columns, instead of java.sql.* classes.

Author:
  brian zimmer

## Constructor Summary

Constructors
Constructor
Description
`Jython22DataHandler()`
Handle most generic Java data types.

## Method Summary

Modifier and Type
Method
Description
`PyObject`
`__chain__()`
Returns a list of datahandlers chained together through the use of delegation.
`String`
`getMetaDataName(PyObject name)`
Some database vendors are case sensitive on calls to DatabaseMetaData, most notably Oracle.
`Procedure`
`getProcedure(PyCursor cursor, PyObject name)`
A factory method for determing the correct procedure class to use per the cursor type.
`PyObject`
`getPyObject(CallableStatement stmt, int col, int type)`
Given a CallableStatement, column and type, return the appropriate Jython object.
`PyObject`
`getPyObject(ResultSet set, int col, int type)`
Given a ResultSet, column and type, return the appropriate Jython object.
`PyObject`
`getRowId(Statement stmt)`
Returns the row id of the last executed statement.
`void`
`postExecute(Statement stmt)`
A callback after successfully executing the statement.
`void`
`preExecute(Statement stmt)`
A callback prior to each execution of the statement.
`void`
`registerOut(CallableStatement statement, int index, int colType, int dataType, String dataTypeName)`
Called when a stored procedure or function is executed and OUT parameters need to be registered with the statement.
`void`
`setJDBCObject(PreparedStatement stmt, int index, PyObject object)`
Any .execute() which uses prepared statements will receive a callback for deciding how to map the PyObject to the appropriate JDBC type.
`void`
`setJDBCObject(PreparedStatement stmt, int index, PyObject object, int type)`
Any .execute() which uses prepared statements will receive a callback for deciding how to map the PyObject to the appropriate JDBC type.

### Methods inherited from class com.ziclix.python.sql.DataHandler

`checkNull, getSystemDataHandler, read, read, toString`

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

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

## Constructor Details

### Jython22DataHandler

public Jython22DataHandler()
Handle most generic Java data types.

## Method Details

### getMetaDataName

public String getMetaDataName(PyObject name)
Some database vendors are case sensitive on calls to DatabaseMetaData, most notably Oracle. This callback allows a DataHandler to affect the name.

Overrides:
  `getMetaDataName` in class `DataHandler`

### getProcedure

public Procedure getProcedure(PyCursor cursor, PyObject name) throws SQLException
A factory method for determing the correct procedure class to use per the cursor type.

Overrides:
  `getProcedure` in class `DataHandler`
Parameters:
  `cursor` - an open cursor
  `name` - the name of the procedure to invoke
Returns:
  an instance of a Procedure
Throws:
  `SQLException`

### getRowId

public PyObject getRowId(Statement stmt) throws SQLException
Returns the row id of the last executed statement.

Overrides:
  `getRowId` in class `DataHandler`
Parameters:
  `stmt` - the current statement
Returns:
  the row id of the last executed statement or None
Throws:
  `SQLException` - thrown if an exception occurs

### preExecute

public void preExecute(Statement stmt) throws SQLException
A callback prior to each execution of the statement. If the statement is a PreparedStatement, all the parameters will have been set.

Overrides:
  `preExecute` in class `DataHandler`
Throws:
  `SQLException`

### postExecute

public void postExecute(Statement stmt) throws SQLException
A callback after successfully executing the statement.

Overrides:
  `postExecute` in class `DataHandler`
Throws:
  `SQLException`

### setJDBCObject

public void setJDBCObject(PreparedStatement stmt, int index, PyObject object) throws SQLException
Any .execute() which uses prepared statements will receive a callback for deciding how to map the PyObject to the appropriate JDBC type.

Overrides:
  `setJDBCObject` in class `DataHandler`
Parameters:
  `stmt` - the current PreparedStatement
  `index` - the index for which this object is bound
  `object` - the PyObject in question
Throws:
  `SQLException`

### setJDBCObject

public void setJDBCObject(PreparedStatement stmt, int index, PyObject object, int type) throws SQLException
Any .execute() which uses prepared statements will receive a callback for deciding how to map the PyObject to the appropriate JDBC type. The type is the JDBC type as obtained from java.sql.Types.

Overrides:
  `setJDBCObject` in class `DataHandler`
Parameters:
  `stmt` - the current PreparedStatement
  `index` - the index for which this object is bound
  `object` - the PyObject in question
  `type` - the java.sql.Types for which this PyObject should be bound
Throws:
  `SQLException`

### getPyObject

public PyObject getPyObject(ResultSet set, int col, int type) throws SQLException
Given a ResultSet, column and type, return the appropriate Jython object.

Note: DO NOT iterate the ResultSet.

Overrides:
  `getPyObject` in class `DataHandler`
Parameters:
  `set` - the current ResultSet set to the current row
  `col` - the column number (adjusted properly for JDBC)
  `type` - the column type
Throws:
  `SQLException` - if the type is unmappable

### getPyObject

public PyObject getPyObject(CallableStatement stmt, int col, int type) throws SQLException
Given a CallableStatement, column and type, return the appropriate Jython object.

Overrides:
  `getPyObject` in class `DataHandler`
Parameters:
  `stmt` - the CallableStatement
  `col` - the column number (adjusted properly for JDBC)
  `type` - the column type
Throws:
  `SQLException` - if the type is unmappable

### registerOut

public void registerOut(CallableStatement statement, int index, int colType, int dataType, String dataTypeName) throws SQLException
Called when a stored procedure or function is executed and OUT parameters need to be registered with the statement.

Overrides:
  `registerOut` in class `DataHandler`
Parameters:
  `statement` -
  `index` - the JDBC offset column number
  `colType` - the column as from DatabaseMetaData (eg, procedureColumnOut)
  `dataType` - the JDBC datatype from Types
  `dataTypeName` - the JDBC datatype name
Throws:
  `SQLException`

### __chain__

public PyObject __chain__()
Returns a list of datahandlers chained together through the use of delegation.

Overrides:
  `__chain__` in class `DataHandler`
Returns:
  a list of datahandlers