From: Gautam J. <ga...@us...> - 2007-09-14 00:52:19
|
Update of /cvsroot/jaffa/JaffaCore/source/java/org/jaffa/persistence/engines/jdbcengine/querygenerator In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv15179/source/java/org/jaffa/persistence/engines/jdbcengine/querygenerator Modified Files: TypeDefs.java Log Message: Modified the setAppObject() method of the TypeDefs class to perform the necessary datatype conversion before setting a value on the PreparedStatement. This change has been necessitated by the recent optimization to primary-key based queries, which may break existing code containing the use of erroneous datatypes in queries, and which worked well using regular Statements. Index: TypeDefs.java =================================================================== RCS file: /cvsroot/jaffa/JaffaCore/source/java/org/jaffa/persistence/engines/jdbcengine/querygenerator/TypeDefs.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** TypeDefs.java 14 Sep 2006 01:20:22 -0000 1.11 --- TypeDefs.java 14 Sep 2007 00:52:04 -0000 1.12 *************** *** 72,75 **** --- 72,76 ---- import org.jaffa.datatypes.DateTime; import org.jaffa.datatypes.Currency; + import org.jaffa.datatypes.DataTypeMapper; import org.jaffa.persistence.engines.jdbcengine.IStoredProcedure; import org.jaffa.util.StringHelper; *************** *** 483,489 **** throws SQLException { if (value == null) ! pstmt.setObject(parameterIndex, null, Types.BIT); ! else pstmt.setBoolean(parameterIndex, ((Boolean) value).booleanValue()); } --- 484,493 ---- throws SQLException { if (value == null) ! pstmt.setObject(parameterIndex, value, Types.BIT); ! else { ! if (!(value instanceof Boolean)) ! value = DataTypeMapper.instance().map(value, Boolean.class); pstmt.setBoolean(parameterIndex, ((Boolean) value).booleanValue()); + } } *************** *** 577,585 **** throws SQLException { if (value == null) ! pstmt.setObject(parameterIndex, null, Types.VARCHAR); ! else if ( ((Boolean) value).booleanValue() ) ! pstmt.setObject(parameterIndex, m_no_quote_true, Types.VARCHAR); ! else ! pstmt.setObject(parameterIndex, m_no_quote_false, Types.VARCHAR); } --- 581,593 ---- throws SQLException { if (value == null) ! pstmt.setObject(parameterIndex, value, Types.VARCHAR); ! else { ! if (!(value instanceof Boolean)) ! value = DataTypeMapper.instance().map(value, Boolean.class); ! if ( ((Boolean) value).booleanValue() ) ! pstmt.setObject(parameterIndex, m_no_quote_true, Types.VARCHAR); ! else ! pstmt.setObject(parameterIndex, m_no_quote_false, Types.VARCHAR); ! } } *************** *** 652,655 **** --- 660,665 ---- public void setAppObject(PreparedStatement pstmt, int parameterIndex, Object value, String engineType) throws SQLException { + if (value != null && !(value instanceof String)) + value = DataTypeMapper.instance().map(value, String.class); pstmt.setString(parameterIndex, (String) value); } *************** *** 741,744 **** --- 751,756 ---- public void setAppObject(PreparedStatement pstmt, int parameterIndex, Object value, String engineType) throws SQLException { + if (value != null && !(value instanceof Long)) + value = DataTypeMapper.instance().map(value, Long.class); pstmt.setObject(parameterIndex, value, Types.BIGINT); } *************** *** 820,823 **** --- 832,837 ---- public void setAppObject(PreparedStatement pstmt, int parameterIndex, Object value, String engineType) throws SQLException { + if (value != null && !(value instanceof Double)) + value = DataTypeMapper.instance().map(value, Double.class); pstmt.setObject(parameterIndex, value, Types.DOUBLE); } *************** *** 908,913 **** if (value == null) pstmt.setObject(parameterIndex, value, Types.DATE); ! else pstmt.setObject(parameterIndex, ((DateOnly) value).sqlDate(), Types.DATE); } --- 922,930 ---- if (value == null) pstmt.setObject(parameterIndex, value, Types.DATE); ! else { ! if (!(value instanceof DateOnly)) ! value = DataTypeMapper.instance().map(value, DateOnly.class); pstmt.setObject(parameterIndex, ((DateOnly) value).sqlDate(), Types.DATE); + } } *************** *** 998,1003 **** if (value == null) pstmt.setObject(parameterIndex, value, Types.TIMESTAMP); ! else pstmt.setObject(parameterIndex, ((DateTime) value).timestamp(), Types.TIMESTAMP); } --- 1015,1023 ---- if (value == null) pstmt.setObject(parameterIndex, value, Types.TIMESTAMP); ! else { ! if (!(value instanceof DateTime)) ! value = DataTypeMapper.instance().map(value, DateTime.class); pstmt.setObject(parameterIndex, ((DateTime) value).timestamp(), Types.TIMESTAMP); + } } *************** *** 1078,1085 **** public void setAppObject(PreparedStatement pstmt, int parameterIndex, Object value, String engineType) throws SQLException { ! if (value != null) pstmt.setObject(parameterIndex, ((Currency) value).getValue(), Types.DOUBLE); ! else ! pstmt.setObject(parameterIndex, null, Types.DOUBLE); } --- 1098,1108 ---- public void setAppObject(PreparedStatement pstmt, int parameterIndex, Object value, String engineType) throws SQLException { ! if (value == null) ! pstmt.setObject(parameterIndex, value, Types.DOUBLE); ! else { ! if (!(value instanceof Currency)) ! value = DataTypeMapper.instance().map(value, Currency.class); pstmt.setObject(parameterIndex, ((Currency) value).getValue(), Types.DOUBLE); ! } } *************** *** 1162,1165 **** --- 1185,1190 ---- public void setAppObject(PreparedStatement pstmt, int parameterIndex, Object value, String engineType) throws SQLException { + if (value != null && !(value instanceof byte[])) + value = DataTypeMapper.instance().map(value, byte[].class); pstmt.setBytes(parameterIndex, (byte[]) value); } *************** *** 1235,1238 **** --- 1260,1265 ---- throws SQLException { if (value != null) { + if (!(value instanceof String)) + value = DataTypeMapper.instance().map(value, String.class); String str = (String) value; Reader reader = new BufferedReader(new StringReader(str)); *************** *** 1312,1315 **** --- 1339,1344 ---- throws SQLException { if (value != null) { + if (!(value instanceof byte[])) + value = DataTypeMapper.instance().map(value, byte[].class); byte[] bytes = (byte[]) value; InputStream stream = new BufferedInputStream(new ByteArrayInputStream(bytes)); *************** *** 1388,1391 **** --- 1417,1422 ---- throws SQLException { if (value != null) { + if (!(value instanceof String)) + value = DataTypeMapper.instance().map(value, String.class); if ("oracle".equalsIgnoreCase(engineType)) { Clob clob = createClob(pstmt.getConnection(), (String) value); *************** *** 1478,1481 **** --- 1509,1514 ---- throws SQLException { if (value != null) { + if (!(value instanceof byte[])) + value = DataTypeMapper.instance().map(value, byte[].class); if ("oracle".equalsIgnoreCase(engineType)) { Blob blob = createBlob(pstmt.getConnection(), (byte[]) value); |