Changeset: 46dde2b2c991 for monetdb-java
URL: http://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=46dde2b2c991
Modified Files:
        src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
Branch: default
Log Message:

Small code improvements


diffs (266 lines):

diff --git a/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java 
b/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
@@ -83,7 +83,7 @@ public class MonetResultSet extends Mone
        /** The JDBC SQL types of the columns in this ResultSet. The content 
will be derived from the MonetDB types[] */
        private final int[] JdbcSQLTypes;
        /** The number of rows in this ResultSet */
-       final int tupleCount;   // default for the MonetVirtualResultSet
+       final int tupleCount;
 
        /** The parental Statement object */
        private final Statement statement;
@@ -326,7 +326,7 @@ public class MonetResultSet extends Mone
         */
        @Override
        public int findColumn(String columnName) throws SQLException {
-               if (columnName != null && columns != null) {
+               if (columnName != null) {
                        final int array_size = columns.length;
                        for (int i = 0; i < array_size; i++) {
                                if (columnName.equals(columns[i]))
@@ -1354,7 +1354,7 @@ public class MonetResultSet extends Mone
                                                return true;
                                        case Types.VARCHAR:
                                                String monettype = 
getColumnTypeName(column);
-                                               if (monettype != null) {
+                                               if (monettype != null && 
monettype.length() == 4) {
                                                        // data of type inet or 
uuid is not case sensitive
                                                        if 
("inet".equals(monettype)
                                                         || 
"uuid".equals(monettype))
@@ -1421,7 +1421,7 @@ public class MonetResultSet extends Mone
                                                return true;
                                        case Types.BIGINT:
                                                String monettype = 
getColumnTypeName(column);
-                                               if (monettype != null) {
+                                               if (monettype != null && 
monettype.length() == 3) {
                                                        // data of type oid or 
ptr is not signed
                                                        if 
("oid".equals(monettype)
                                                         || 
"ptr".equals(monettype))
@@ -1450,16 +1450,13 @@ public class MonetResultSet extends Mone
                        @Override
                        public int getColumnDisplaySize(int column) throws 
SQLException {
                                int ret = 1;
-
-                               if (header == null)
-                                       return ret;
-
-                               try {
-                                       ret = header.getColumnLengths()[column 
- 1];
-                               } catch (IndexOutOfBoundsException e) {
-                                       throw 
newSQLInvalidColumnIndexException(column);
+                               if (header != null) {
+                                       try {
+                                               ret = 
header.getColumnLengths()[column - 1];
+                                       } catch (IndexOutOfBoundsException e) {
+                                               throw 
newSQLInvalidColumnIndexException(column);
+                                       }
                                }
-
                                return ret;
                        }
 
@@ -1472,22 +1469,18 @@ public class MonetResultSet extends Mone
                         */
                        @Override
                        public String getSchemaName(int column) throws 
SQLException {
-                               String schema = "";
-
-                               if (header == null)
-                                       return schema;
-
-                               // figure the name out
-                               try {
-                                       schema = header.getTableNames()[column 
- 1];
-                                       if (schema != null) {
-                                               int dot = schema.indexOf('.');
-                                               return (dot >= 0) ? 
schema.substring(0, dot) : "";
+                               if (header != null) {
+                                       // figure the name out
+                                       try {
+                                               String schema = 
header.getTableNames()[column - 1];
+                                               if (schema != null) {
+                                                       int dot = 
schema.indexOf('.');
+                                                       return (dot >= 0) ? 
schema.substring(0, dot) : "";
+                                               }
+                                       } catch (IndexOutOfBoundsException e) {
+                                               throw 
newSQLInvalidColumnIndexException(column);
                                        }
-                               } catch (IndexOutOfBoundsException e) {
-                                       throw 
newSQLInvalidColumnIndexException(column);
                                }
-
                                return "";
                        }
 
@@ -1499,22 +1492,18 @@ public class MonetResultSet extends Mone
                         */
                        @Override
                        public String getTableName(int column) throws 
SQLException {
-                               String table = "";
-
-                               if (header == null)
-                                       return table;
-
-                               // figure the name out
-                               try {
-                                       table = header.getTableNames()[column - 
1];
-                                       if (table != null) {
-                                               int dot = table.indexOf('.');
-                                               return (dot >= 0) ? 
table.substring(dot + 1) : table;
+                               if (header != null) {
+                                       // figure the name out
+                                       try {
+                                               String table = 
header.getTableNames()[column - 1];
+                                               if (table != null) {
+                                                       int dot = 
table.indexOf('.');
+                                                       return (dot >= 0) ? 
table.substring(dot + 1) : table;
+                                               }
+                                       } catch (IndexOutOfBoundsException e) {
+                                               throw 
newSQLInvalidColumnIndexException(column);
                                        }
-                               } catch (IndexOutOfBoundsException e) {
-                                       throw 
newSQLInvalidColumnIndexException(column);
                                }
-
                                return "";
                        }
 
@@ -1709,11 +1698,12 @@ public class MonetResultSet extends Mone
                                        conn = getStatement().getConnection();
                                }
                                try {
+                                       String MonetDBType = types[column - 1];
                                        Class<?> type = null;
                                        if (conn != null) {
                                                Map<String,Class<?>> map = 
conn.getTypeMap();
-                                               if (map != null && 
map.containsKey(types[column - 1])) {
-                                                       type = 
(Class)map.get(types[column - 1]);
+                                               if (map != null && 
map.containsKey(MonetDBType)) {
+                                                       type = 
(Class)map.get(MonetDBType);
                                                }
                                        }
                                        if (type == null) {
@@ -1723,7 +1713,7 @@ public class MonetResultSet extends Mone
                                        if (type != null) {
                                                return type.getName();
                                        }
-                                       throw new SQLException("column type 
mapping null: " + types[column - 1], "M0M03");
+                                       throw new SQLException("column type 
mapping null: " + MonetDBType, "M0M03");
                                } catch (IndexOutOfBoundsException e) {
                                        throw 
newSQLInvalidColumnIndexException(column);
                                }
@@ -1820,7 +1810,6 @@ public class MonetResultSet extends Mone
        public Object getObject(int columnIndex) throws SQLException {
                // Many generic JDBC programs use getObject(colnr) to retrieve 
value objects from a resultset
                // For speed the implementation should be as fast as possible, 
so avoid method calls (by inlining code) where possible
-               final String MonetDBType;
                final int JdbcType;
                final String val;
                try {
@@ -1830,7 +1819,6 @@ public class MonetResultSet extends Mone
                                return null;
                        }
                        lastReadWasNull = false;
-                       MonetDBType = types[columnIndex - 1];
                        JdbcType = JdbcSQLTypes[columnIndex - 1];
                } catch (IndexOutOfBoundsException e) {
                        throw newSQLInvalidColumnIndexException(columnIndex);
@@ -1881,24 +1869,12 @@ public class MonetResultSet extends Mone
                                return Boolean.valueOf(val);
                        case Types.VARCHAR:
                        {
+
                                // The MonetDB types: inet, json, url and uuid 
are all mapped to Types.VARCHAR in MonetDriver.typeMap
                                // For these MonetDB types (except json, see 
comments below) we try to create objects of the corresponding class.
-                               // As in most cases when we get here the 
MonetDBtype will be "varchar". For efficiency we compare
-                               // the MonetDBtype first letter to see if we 
can skip the three .equals(MonetDBType) method calls.
-                               char firstletter = MonetDBType.charAt(0);
-                               if (firstletter == 'i') {
-                                       if ("inet".equals(MonetDBType)) {
-                                               try {
-                                                       
nl.cwi.monetdb.jdbc.types.INET inet_obj = new nl.cwi.monetdb.jdbc.types.INET();
-                                                       
inet_obj.fromString(val);
-                                                       return inet_obj;
-                                               } catch (Exception exc) {
-                                                       // ignore exception and 
just return the val String object
-                                                       return val;
-                                               }
-                                       }
-                               }
-                               else if (firstletter == 'u') {
+                               String MonetDBType = types[columnIndex - 1];
+                               switch (MonetDBType.length()) {
+                               case 3:
                                        if ("url".equals(MonetDBType)) {
                                                try {
                                                        
nl.cwi.monetdb.jdbc.types.URL url_obj = new nl.cwi.monetdb.jdbc.types.URL();
@@ -1912,6 +1888,18 @@ public class MonetResultSet extends Mone
                                                        return val;
                                                }
                                        }
+                                       break;
+                               case 4:
+                                       if ("inet".equals(MonetDBType)) {
+                                               try {
+                                                       
nl.cwi.monetdb.jdbc.types.INET inet_obj = new nl.cwi.monetdb.jdbc.types.INET();
+                                                       
inet_obj.fromString(val);
+                                                       return inet_obj;
+                                               } catch (Exception exc) {
+                                                       // ignore exception and 
just return the val String object
+                                                       return val;
+                                               }
+                                       } else
                                        if ("uuid".equals(MonetDBType)) {
                                                try {
                                                        return 
java.util.UUID.fromString(val);
@@ -1919,9 +1907,7 @@ public class MonetResultSet extends Mone
                                                        // ignore exception and 
just return the val String object
                                                        return val;
                                                }
-                                       }
-                               }
-//                             else if (firstletter == 'j') {
+//                                     } else
 //                                     if ("json".equals(MonetDBType)) {
                                                // There is no support for JSON 
in standard java class libraries.
                                                // Possibly we could use 
org.json.simple.JSONObject or other/faster libs
@@ -1930,8 +1916,9 @@ public class MonetResultSet extends Mone
                                                // Note that it would make our 
JDBC driver dependent of an external jar
                                                // and we don't want that so 
simply return it as String object
 //                                             return val;
-//                                     }
-//                             }
+                                       }
+                                       break;
+                               }
                                return val;
                        }
                        case Types.CHAR:
@@ -2636,20 +2623,17 @@ public class MonetResultSet extends Mone
                        throw newSQLInvalidColumnIndexException(columnIndex);
                }
 
-               // we know whether we have a time with or without
-               // time zone if the monet type ends with "tz"
-               boolean hasTimeZone = (MonetDBType != null) ? 
MonetDBType.endsWith("tz") : false;
                TimeZone ptz = cal.getTimeZone();
 
                // it is important to parse the time in the given timezone in
                // order to get a correct (UTC) time value, hence we need to
                // parse it first
-               if (hasTimeZone) {
-                       // MonetDB/SQL99:  Sign TwoDigitHours : Minutes
-                       ptz = TimeZone.getTimeZone("GMT" +
-                                       monetDate.substring(
-                                               monetDate.length() - 6,
-                                               monetDate.length()));
+               if (MonetDBType != null && ("timetz".equals(MonetDBType) || 
"timestamptz".equals(MonetDBType))) {
+                       int vallen = monetDate.length();
+                       if (vallen >= 6) {
+                               // MonetDB/SQL99:  Sign TwoDigitHours : Minutes
+                               ptz = TimeZone.getTimeZone("GMT" + 
monetDate.substring(vallen - 6, vallen));
+                       }
                }
 
                java.util.Date pdate = null;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to