You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2015/02/08 17:56:26 UTC

svn commit: r1658211 - /ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/JdbcValueHandler.java

Author: adrianc
Date: Sun Feb  8 16:56:26 2015
New Revision: 1658211

URL: http://svn.apache.org/r1658211
Log:
Add SQL 2003 and JDBC 4 support to JdbcValueHandler.java.

Modified:
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/JdbcValueHandler.java

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/JdbcValueHandler.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/JdbcValueHandler.java?rev=1658211&r1=1658210&r2=1658211&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/JdbcValueHandler.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/JdbcValueHandler.java Sun Feb  8 16:56:26 2015
@@ -55,6 +55,8 @@ public abstract class JdbcValueHandler<T
          */
         Map<String, JdbcValueHandler<?>> result = new HashMap<String, JdbcValueHandler<?>>();
         // JDBC 1
+        result.put("Array", new ArrayJdbcValueHandler(Types.ARRAY));
+        result.put("java.sql.Array", new ArrayJdbcValueHandler(Types.ARRAY));
         result.put("byte[]", new ByteArrayJdbcValueHandler(Types.LONGVARBINARY));
         result.put("java.lang.Boolean", new BooleanJdbcValueHandler(Types.BOOLEAN));
         result.put("Boolean", new BooleanJdbcValueHandler(Types.BOOLEAN));
@@ -83,6 +85,9 @@ public abstract class JdbcValueHandler<T
         result.put("Blob", new BlobJdbcValueHandler(Types.BLOB));
         result.put("java.sql.Clob", new ClobJdbcValueHandler(Types.CLOB));
         result.put("Clob", new ClobJdbcValueHandler(Types.CLOB));
+        // JDBC 4
+        result.put("RowId", new RowIdJdbcValueHandler(Types.ARRAY));
+        result.put("java.sql.RowId", new RowIdJdbcValueHandler(Types.ARRAY));
         // Non-JDBC Types
         result.put("java.lang.Object", new ObjectJdbcValueHandler(Types.BLOB));
         result.put("Object", new ObjectJdbcValueHandler(Types.BLOB));
@@ -97,12 +102,19 @@ public abstract class JdbcValueHandler<T
         exception will be thrown.
          */
         Map<String, Integer> result = new HashMap<String, Integer>();
-        // SQL 99 Data Types
+        // SQL 2003 Data Types
+        result.put("ARRAY", Types.ARRAY);
+        result.put("BIGINT", Types.BIGINT);
         result.put("BIT", Types.BIT);
+        result.put("BINARY LARGE OBJECT", Types.BLOB);
         result.put("BLOB", Types.BLOB);
         result.put("BOOLEAN", Types.BOOLEAN);
         result.put("CHAR", Types.CHAR);
         result.put("CHARACTER", Types.CHAR);
+        result.put("CHAR VARYING", Types.VARCHAR);
+        result.put("CHARACTER VARYING", Types.VARCHAR);
+        result.put("CHAR LARGE OBJECT", Types.CLOB);
+        result.put("CHARACTER LARGE OBJECT", Types.CLOB);
         result.put("CLOB", Types.CLOB);
         result.put("DATE", Types.DATE);
         result.put("DEC", Types.DECIMAL);
@@ -112,14 +124,26 @@ public abstract class JdbcValueHandler<T
         result.put("FLOAT", Types.FLOAT);
         result.put("INT", Types.INTEGER);
         result.put("INTEGER", Types.INTEGER);
+        //result.put("INTERVAL", Types.?);
+        //result.put("MULTISET", Types.?);
+        result.put("NATIONAL CHAR", Types.NCHAR);
+        result.put("NATIONAL CHARACTER", Types.NCHAR);
+        result.put("NCHAR", Types.NCHAR);
+        result.put("NATIONAL CHAR VARYING", Types.NVARCHAR);
+        result.put("NATIONAL CHARACTER VARYING", Types.NVARCHAR);
+        result.put("NCHAR VARYING", Types.NVARCHAR);
+        result.put("NATIONAL CHARACTER LARGE OBJECT", Types.NCLOB);
+        result.put("NCHAR LARGE OBJECT", Types.NCLOB);
+        result.put("NCLOB", Types.NCLOB);
         result.put("NUMERIC", Types.NUMERIC);
         result.put("REAL", Types.REAL);
+        result.put("REF", Types.REF);
+        result.put("ROW", Types.ROWID);
+        result.put("ROWID", Types.ROWID);
         result.put("SMALLINT", Types.SMALLINT);
         result.put("TIME", Types.TIME);
         result.put("TIMESTAMP", Types.TIMESTAMP);
         result.put("VARCHAR", Types.VARCHAR);
-        result.put("CHAR VARYING", Types.VARCHAR);
-        result.put("CHARACTER VARYING", Types.VARCHAR);
         // DB2, MS SQL Data Types
         // Note: Do NOT map the DATETIME SQL data type, the
         // java-type will be used to select the correct data type
@@ -260,6 +284,31 @@ public abstract class JdbcValueHandler<T
     }
 
     /**
+     * A <code>java.sql.Array</code> JDBC value handler.
+     */
+    protected static class ArrayJdbcValueHandler extends JdbcValueHandler<java.sql.Array> {
+        protected ArrayJdbcValueHandler(int jdbcType) {
+            super(jdbcType);
+        }
+        @Override
+        public Class<java.sql.Array> getJavaClass() {
+            return java.sql.Array.class;
+        }
+        @Override
+        protected void castAndSetValue(PreparedStatement ps, int parameterIndex, java.sql.Array obj) throws SQLException {
+            ps.setArray(parameterIndex, obj);
+        }
+        @Override
+        public java.sql.Array getValue(ResultSet rs, int columnIndex) throws SQLException {
+            return rs.getArray(columnIndex);
+        }
+        @Override
+        protected JdbcValueHandler<java.sql.Array> newInstance(int sqlType) {
+            return new ArrayJdbcValueHandler(sqlType);
+        }
+    }
+
+    /**
      * A <code>java.math.BigDecimal</code> JDBC value handler.
      */
     protected static class BigDecimalJdbcValueHandler extends JdbcValueHandler<java.math.BigDecimal> {
@@ -604,6 +653,31 @@ public abstract class JdbcValueHandler<T
         }
     }
 
+    /**
+     * A <code>java.sql.RowId</code> JDBC value handler.
+     */
+    protected static class RowIdJdbcValueHandler extends JdbcValueHandler<java.sql.RowId> {
+        protected RowIdJdbcValueHandler(int jdbcType) {
+            super(jdbcType);
+        }
+        @Override
+        public Class<java.sql.RowId> getJavaClass() {
+            return java.sql.RowId.class;
+        }
+        @Override
+        protected void castAndSetValue(PreparedStatement ps, int parameterIndex, java.sql.RowId obj) throws SQLException {
+            ps.setRowId(parameterIndex, obj);
+        }
+        @Override
+        public java.sql.RowId getValue(ResultSet rs, int columnIndex) throws SQLException {
+            return rs.getRowId(columnIndex);
+        }
+        @Override
+        protected JdbcValueHandler<java.sql.RowId> newInstance(int sqlType) {
+            return new RowIdJdbcValueHandler(sqlType);
+        }
+    }
+
     /**
      * A <code>java.lang.Short</code> JDBC value handler.
      */