Exemple #1
0
 @Override
 public JDBCInfo getJDBCTypeAndString(ColumnType type) {
   switch (type.spec) {
     case STRING:
       if (type.isUnconstrained()) {
         return jdbcInfo("VARCHAR(255)", Types.VARCHAR);
       } else if (type.isClob() || type.length > 2000) {
         return jdbcInfo("CLOB", Types.CLOB);
       } else {
         return jdbcInfo("VARCHAR(%d)", type.length, Types.VARCHAR);
       }
     case BOOLEAN:
       return jdbcInfo("SMALLINT", Types.BIT);
     case LONG:
       return jdbcInfo("BIGINT", Types.BIGINT);
     case DOUBLE:
       return jdbcInfo("DOUBLE", Types.DOUBLE);
     case TIMESTAMP:
       return jdbcInfo("TIMESTAMP", Types.TIMESTAMP);
     case BLOBID:
       return jdbcInfo("VARCHAR(250)", Types.VARCHAR);
       // -----
     case NODEID:
     case NODEIDFK:
     case NODEIDFKNP:
     case NODEIDFKMUL:
     case NODEIDFKNULL:
     case NODEIDPK:
     case NODEVAL:
       return jdbcInfo("VARCHAR(36)", Types.VARCHAR);
     case SYSNAME:
     case SYSNAMEARRAY:
       return jdbcInfo("VARCHAR(250)", Types.VARCHAR);
     case TINYINT:
       return jdbcInfo("SMALLINT", Types.TINYINT);
     case INTEGER:
       return jdbcInfo("INTEGER", Types.INTEGER);
     case AUTOINC:
       return jdbcInfo("INTEGER", Types.INTEGER); // TODO
     case FTINDEXED:
       return jdbcInfo("CLOB", Types.CLOB);
     case FTSTORED:
       return jdbcInfo("CLOB", Types.CLOB);
     case CLUSTERNODE:
       return jdbcInfo("VARCHAR(25)", Types.VARCHAR);
     case CLUSTERFRAGS:
       return jdbcInfo("VARCHAR(4000)", Types.VARCHAR);
     default:
       throw new AssertionError(type);
   }
 }
Exemple #2
0
 @Override
 public void setToPreparedStatement(
     PreparedStatement ps, int index, Serializable value, Column column) throws SQLException {
   switch (column.getJdbcType()) {
     case Types.VARCHAR:
     case Types.CLOB:
       setToPreparedStatementString(ps, index, value, column);
       return;
     case Types.BIT:
       ps.setBoolean(index, ((Boolean) value).booleanValue());
       return;
     case Types.SMALLINT:
       ps.setInt(index, ((Long) value).intValue());
       return;
     case Types.INTEGER:
     case Types.BIGINT:
       ps.setLong(index, ((Number) value).longValue());
       return;
     case Types.DOUBLE:
       ps.setDouble(index, ((Double) value).doubleValue());
       return;
     case Types.TIMESTAMP:
       ps.setTimestamp(index, getTimestampFromCalendar((Calendar) value));
       return;
     case Types.ARRAY:
       int jdbcBaseType = column.getJdbcBaseType();
       String jdbcBaseTypeName = column.getSqlBaseTypeString();
       if (jdbcBaseType == Types.TIMESTAMP) {
         value = getTimestampFromCalendar((Serializable[]) value);
       }
       Array array = ps.getConnection().createArrayOf(jdbcBaseTypeName, (Object[]) value);
       ps.setArray(index, array);
       return;
     case Types.OTHER:
       ColumnType type = column.getType();
       if (type.isId()) {
         setId(ps, index, value);
         return;
       } else if (type == ColumnType.FTSTORED) {
         ps.setString(index, (String) value);
         return;
       }
       throw new SQLException("Unhandled type: " + column.getType());
     default:
       throw new SQLException("Unhandled JDBC type: " + column.getJdbcType());
   }
 }
Exemple #3
0
 @Override
 @SuppressWarnings("boxing")
 public Serializable getFromResultSet(ResultSet rs, int index, Column column) throws SQLException {
   int jdbcType = rs.getMetaData().getColumnType(index);
   if (column.getJdbcType() == Types.ARRAY && jdbcType != Types.ARRAY) {
     jdbcType = column.getJdbcBaseType();
   } else {
     jdbcType = column.getJdbcType();
   }
   switch (jdbcType) {
     case Types.VARCHAR:
     case Types.CLOB:
       return getFromResultSetString(rs, index, column);
     case Types.BIT:
       return rs.getBoolean(index);
     case Types.SMALLINT:
     case Types.INTEGER:
     case Types.BIGINT:
       return rs.getLong(index);
     case Types.DOUBLE:
       return rs.getDouble(index);
     case Types.TIMESTAMP:
       return getCalendarFromTimestamp(rs.getTimestamp(index));
     case Types.ARRAY:
       Array array = rs.getArray(index);
       if (array == null) {
         return null;
       }
       if (array.getBaseType() == Types.TIMESTAMP) {
         return getCalendarFromTimestamp((Timestamp[]) array.getArray());
       } else {
         return (Serializable) array.getArray();
       }
     case Types.OTHER:
       ColumnType type = column.getType();
       if (type.isId()) {
         return getId(rs, index);
       }
       throw new SQLException("Unhandled type: " + column.getType());
   }
   throw new SQLException(
       "Unhandled JDBC type: "
           + column.getJdbcType()
           + " for type "
           + column.getType().toString());
 }
Exemple #4
0
 @Override
 public JDBCInfo getJDBCTypeAndString(ColumnType type) {
   switch (type.spec) {
     case STRING:
       if (type.isUnconstrained()) {
         return jdbcInfo("varchar", Types.VARCHAR);
       } else if (type.isClob()) {
         return jdbcInfo("text", Types.CLOB);
       } else {
         return jdbcInfo("varchar(%d)", type.length, Types.VARCHAR);
       }
     case ARRAY_STRING:
       if (type.isUnconstrained()) {
         return jdbcInfo("varchar[]", Types.ARRAY, "varchar", Types.VARCHAR);
       } else if (type.isClob()) {
         return jdbcInfo("text[]", Types.ARRAY, "text", Types.CLOB);
       } else {
         return jdbcInfo("varchar(%d)[]", type.length, Types.ARRAY, "varchar", Types.VARCHAR);
       }
     case BOOLEAN:
       return jdbcInfo("bool", Types.BIT);
     case ARRAY_BOOLEAN:
       return jdbcInfo("bool[]", Types.ARRAY, "bool", Types.BOOLEAN);
     case LONG:
       return jdbcInfo("int8", Types.BIGINT);
     case ARRAY_LONG:
       return jdbcInfo("int8[]", Types.ARRAY, "int8", Types.BIGINT);
     case DOUBLE:
       return jdbcInfo("float8", Types.DOUBLE);
     case ARRAY_DOUBLE:
       return jdbcInfo("float8[]", Types.ARRAY, "float8", Types.DOUBLE);
     case TIMESTAMP:
       return jdbcInfo("timestamp", Types.TIMESTAMP);
     case ARRAY_TIMESTAMP:
       return jdbcInfo("timestamp[]", Types.ARRAY, "timestamp", Types.TIMESTAMP);
     case BLOBID:
       return jdbcInfo("varchar(250)", Types.VARCHAR);
     case ARRAY_BLOBID:
       return jdbcInfo("varchar(250)[]", Types.ARRAY, "varchar", Types.VARCHAR);
       // -----
     case NODEID:
     case NODEIDFK:
     case NODEIDFKNP:
     case NODEIDFKMUL:
     case NODEIDFKNULL:
     case NODEIDPK:
     case NODEVAL:
       switch (idType) {
         case VARCHAR:
           return jdbcInfo("varchar(36)", Types.VARCHAR);
         case UUID:
           return jdbcInfo("uuid", Types.OTHER);
         case SEQUENCE:
           return jdbcInfo("int8", Types.BIGINT);
       }
     case NODEARRAY:
       switch (idType) {
         case VARCHAR:
           return jdbcInfo("varchar(36)[]", Types.ARRAY, "varchar", Types.VARCHAR);
         case UUID:
           return jdbcInfo("uuid[]", Types.ARRAY, "uuid", Types.OTHER);
         case SEQUENCE:
           return jdbcInfo("int8[]", Types.ARRAY, "int8", Types.BIGINT);
       }
     case SYSNAME:
       return jdbcInfo("varchar(250)", Types.VARCHAR);
     case SYSNAMEARRAY:
       return jdbcInfo("varchar(250)[]", Types.ARRAY, "varchar", Types.VARCHAR);
     case TINYINT:
       return jdbcInfo("int2", Types.SMALLINT);
     case INTEGER:
       return jdbcInfo("int4", Types.INTEGER);
     case ARRAY_INTEGER:
       return jdbcInfo("int4[]", Types.ARRAY, "int4", Types.INTEGER);
     case AUTOINC:
       return jdbcInfo("serial", Types.INTEGER);
     case FTINDEXED:
       if (compatibilityFulltextTable) {
         return jdbcInfo("tsvector", Types.OTHER);
       } else {
         return jdbcInfo("text", Types.CLOB);
       }
     case FTSTORED:
       if (compatibilityFulltextTable) {
         return jdbcInfo("tsvector", Types.OTHER);
       } else {
         return jdbcInfo("text", Types.CLOB);
       }
     case CLUSTERNODE:
       return jdbcInfo("int4", Types.INTEGER);
     case CLUSTERFRAGS:
       return jdbcInfo("varchar[]", Types.ARRAY, "varchar", Types.VARCHAR);
   }
   throw new AssertionError(type);
 }