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 + -
显示快捷键?