com.ziclix.python.sql
Class Jython22DataHandler

java.lang.Object
  extended by com.ziclix.python.sql.DataHandler
      extended by 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.

Version:
$Revision: 3708 $
Author:
brian zimmer, last revised by $Author: pjenvey $

Constructor Summary
Jython22DataHandler()
          Handle most generic Java data types.
 
Method Summary
 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 Detail

Jython22DataHandler

public Jython22DataHandler()
Handle most generic Java data types.

Method Detail

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


Jython homepage