crossconverters.java
来自「derby database source code.good for you.」· Java 代码 · 共 1,410 行 · 第 1/4 页
JAVA
1,410 行
} catch (java.sql.SQLException e) { throw new SqlException(agent_.logWriter_, e.getMessage()); } default: throw new SqlException(agent_.logWriter_, "Illegal Conversion"); } } // Convert from InputStream source to target type // In support of PS.setBinaryStream() final Object setObjectFromBinaryStream(int targetType, java.io.InputStream source, int length) throws SqlException { switch (targetType) { case Types.BINARY: case Types.VARBINARY: case Types.LONGVARBINARY: return setBytesFromStream(source, length); case Types.BLOB: return new Blob(agent_, source, length); default: throw new SqlException(agent_.logWriter_, "Illegal Conversion"); } } // create a byte[] by reading all of the bytes from inputStream private final byte[] setBytesFromStream(java.io.InputStream is, int length) throws SqlException { java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream(); int totalRead = 0; try { int read = is.read(); while (read != -1) { totalRead++; baos.write(read); read = is.read(); } if (length != totalRead) { throw new SqlException(agent_.logWriter_, "The InputStream object does not contain length bytes"); } } catch (java.io.IOException e) { throw new SqlException(agent_.logWriter_, e.getMessage()); } return baos.toByteArray(); } // Convert from Clob source to target type // In support of PS.setClob() final Object setObject(int targetType, java.sql.Clob source) throws SqlException { switch (targetType) { case Types.CLOB: return source; case Types.CHAR: case Types.VARCHAR: case Types.LONGVARCHAR: return source.toString(); default: throw new SqlException(agent_.logWriter_, "Illegal Conversion"); } } // The Java compiler uses static binding, so we can't rely on the strongly // typed setObject() methods above for each of the Java Object instance types. final Object setObject(int targetType, Object source) throws SqlException { if (source instanceof Boolean) { return setObject(targetType, ((Boolean) source).booleanValue()); } else if (source instanceof Integer) { return setObject(targetType, ((Integer) source).intValue()); } else if (source instanceof Long) { return setObject(targetType, ((Long) source).longValue()); } else if (source instanceof Float) { return setObject(targetType, ((Float) source).floatValue()); } else if (source instanceof Double) { return setObject(targetType, ((Double) source).doubleValue()); } else if (source instanceof java.math.BigDecimal) { return setObject(targetType, (java.math.BigDecimal) source); } else if (source instanceof java.sql.Date) { return setObject(targetType, (java.sql.Date) source); } else if (source instanceof java.sql.Time) { return setObject(targetType, (java.sql.Time) source); } else if (source instanceof java.sql.Timestamp) { return setObject(targetType, (java.sql.Timestamp) source); } else if (source instanceof String) { return setObject(targetType, (String) source); } else if (source instanceof byte[]) { return setObject(targetType, (byte[]) source); } else if (source instanceof java.sql.Blob) { return setObject(targetType, (java.sql.Blob) source); } else if (source instanceof java.sql.Clob) { return setObject(targetType, (java.sql.Clob) source); } else if (source instanceof java.sql.Array) { return setObject(targetType, (java.sql.Array) source); } else if (source instanceof java.sql.Ref) { return setObject(targetType, (java.sql.Ref) source); } else if (source instanceof Short) { return setObject(targetType, ((Short) source).shortValue()); } else if (source instanceof Byte) { return setObject(targetType, ((Byte) source).byteValue()); } else { throw new SqlException(agent_.logWriter_, "Invalid data conversion:" + " Parameter instance " + source + " is invalid for requested conversion."); } } // move all these to Cursor and rename to crossConvertFrom*To*() // --------------------------------------------------------------------------- // The following methods are used for output cross conversion. // --------------------------------------------------------------------------- //---------------------------- getBoolean*() methods ------------------------- final boolean getBooleanFromByte(byte source) throws SqlException { return source != 0; } final boolean getBooleanFromShort(short source) throws SqlException { return source != 0; } final boolean getBooleanFromInt(int source) throws SqlException { return source != 0; } final boolean getBooleanFromLong(long source) throws SqlException { return source != 0; } final boolean getBooleanFromFloat(float source) throws SqlException { return source != 0; } final boolean getBooleanFromDouble(double source) throws SqlException { return source != 0; } final boolean getBooleanFromBigDecimal(java.math.BigDecimal source) throws SqlException { return source.intValue() != 0; } // See differences.html for DNC getBoolean() semantics. final boolean getBooleanFromString(String source) throws SqlException { return !(source.trim().equals("0") || source.trim().equals("false")); } //---------------------------- getByte*() methods ---------------------------- final byte getByteFromShort(short source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Byte.MAX_VALUE || source < java.lang.Byte.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (byte) source; } final byte getByteFromInt(int source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Byte.MAX_VALUE || source < java.lang.Byte.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (byte) source; } final byte getByteFromLong(long source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Byte.MAX_VALUE || source < java.lang.Byte.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (byte) source; } final byte getByteFromFloat(float source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Byte.MAX_VALUE || source < java.lang.Byte.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (byte) source; } final byte getByteFromDouble(double source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Byte.MAX_VALUE || source < java.lang.Byte.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (byte) source; } final byte getByteFromBigDecimal(java.math.BigDecimal source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source.compareTo(bdMaxByteValue__) == 1 || source.compareTo(bdMinByteValue__) == -1)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (byte) source.intValue(); } final byte getByteFromBoolean(boolean source) throws SqlException { return source ? (byte) 1 : (byte) 0; } final byte getByteFromString(String source) throws SqlException { try { return parseByte(source); } catch (java.lang.NumberFormatException e) { throw new SqlException(agent_.logWriter_, e, "Invalid data conversion:" + " Parameter instance " + source + " is invalid for requested conversion to " + "byte."); } } //---------------------------- getShort*() methods --------------------------- final short getShortFromInt(int source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Short.MAX_VALUE || source < java.lang.Short.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (short) source; } final short getShortFromLong(long source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Short.MAX_VALUE || source < java.lang.Short.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (short) source; } final short getShortFromFloat(float source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Short.MAX_VALUE || source < java.lang.Short.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (short) source; } final short getShortFromDouble(double source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Short.MAX_VALUE || source < java.lang.Short.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (short) source; } final short getShortFromBigDecimal(java.math.BigDecimal source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source.compareTo(bdMaxShortValue__) == 1 || source.compareTo(bdMinShortValue__) == -1)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (short) source.intValue(); } final short getShortFromBoolean(boolean source) throws SqlException { return source ? (short) 1 : (short) 0; } final short getShortFromString(String source) throws SqlException { try { return parseShort(source); } catch (java.lang.NumberFormatException e) { throw new SqlException(agent_.logWriter_, e, "Invalid data conversion:" + " Parameter instance " + source + " is invalid for requested conversion to " + "short."); } } //---------------------------- getInt*() methods ----------------------------- final int getIntFromLong(long source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Integer.MAX_VALUE || source < java.lang.Integer.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (int) source; } final int getIntFromFloat(float source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Integer.MAX_VALUE || source < java.lang.Integer.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (int) source; } final int getIntFromDouble(double source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Integer.MAX_VALUE || source < java.lang.Integer.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (int) source; } final int getIntFromBigDecimal(java.math.BigDecimal source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source.compareTo(bdMaxIntValue__) == 1 || source.compareTo(bdMinIntValue__) == -1)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return source.intValue(); } final int getIntFromBoolean(boolean source) throws SqlException { return source ? (int) 1 : (int) 0; } final int getIntFromString(String source) throws SqlException { try { return parseInt(source); } catch (java.lang.NumberFormatException e) { throw new SqlException(agent_.logWriter_, e, "Invalid data conversion:" + " Parameter instance " + source + " is invalid for requested conversion to " + "int."); } } //---------------------------- getLong*() methods ---------------------------- final long getLongFromFloat(float source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Long.MAX_VALUE || source < java.lang.Long.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (long) source; } final long getLongFromDouble(double source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source > java.lang.Long.MAX_VALUE || source < java.lang.Long.MIN_VALUE)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return (long) source; } final long getLongFromBigDecimal(java.math.BigDecimal source) throws SqlException { if (Configuration.rangeCheckCrossConverters && (source.compareTo(bdMaxLongValue__) == 1 || source.compareTo(bdMinLongValue__) == -1)) { throw new LossOfPrecisionConversionException(agent_.logWriter_, String.valueOf(source)); } return source.longValue(); } final long getLongFromBoolean(boolean source) throws SqlException {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?