haul 2002/10/28 05:52:01 Modified: src/blocks/databases/java/org/apache/cocoon/util JDBCTypeConversions.java Log: Be more smart on type conversions, esp. numeric types. Revision Changes Path 1.2 +32 -17 xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/util/JDBCTypeConversions.java Index: JDBCTypeConversions.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/util/JDBCTypeConversions.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- JDBCTypeConversions.java 18 Oct 2002 14:04:26 -0000 1.1 +++ JDBCTypeConversions.java 28 Oct 2002 13:52:01 -0000 1.2 @@ -64,6 +64,7 @@ import java.sql.Struct; import java.math.BigDecimal; import java.util.Map; +import java.util.Calendar; import java.util.HashMap; import java.util.Collections; import java.text.DateFormat; @@ -295,6 +296,8 @@ if (value instanceof BigDecimal) { bd = (BigDecimal) value; + } else if (value instanceof Number) { + bd = BigDecimal.valueOf(((Number)value).longValue()); } else { bd = new BigDecimal((String) value); } @@ -306,6 +309,8 @@ if (value instanceof Byte) { b = (Byte) value; + } else if (value instanceof Number) { + b = new Byte(((Number) value).byteValue()); } else { b = new Byte((String) value); } @@ -319,48 +324,50 @@ d = (Date) value; } else if (value instanceof java.util.Date) { d = new Date(((java.util.Date) value).getTime()); + } else if (value instanceof Calendar) { + d = new Date(((Calendar) value).getTimeInMillis()); } statement.setDate(position, d); break; case Types.DOUBLE: - Double db = null; + double db; - if (value instanceof Double) { - db = (Double) value; + if (value instanceof Number) { + db = (((Number) value).doubleValue()); } else { - db = new Double((String) value); + db = Double.parseDouble(String.valueOf(value)); } - - statement.setDouble(position, db.doubleValue()); + statement.setDouble(position, db); break; case Types.FLOAT: - Float f = null; + float f; - if (value instanceof Float) { - f = (Float) value; + if (value instanceof Number) { + f = (((Number) value).floatValue()); } else { - f = new Float((String) value); + f = Float.parseFloat(String.valueOf(value)); } - - statement.setFloat(position, f.floatValue()); + statement.setFloat(position, f); break; case Types.NUMERIC: - Long l = null; + long l; - if (value instanceof Long) { - l = (Long) value; + if (value instanceof Number) { + l = (((Number) value).longValue()); } else { - l = new Long((String) value); + l = Long.parseLong(String.valueOf(value)); } - statement.setLong(position, l.longValue()); + statement.setLong(position, l); break; case Types.SMALLINT: Short s = null; if (value instanceof Short) { s = (Short) value; + } else if (value instanceof Number) { + s = new Short(((Number) value).shortValue()); } else { s = new Short((String) value); } @@ -372,6 +379,10 @@ if (value instanceof Time) { t = (Time) value; + } else if (value instanceof java.util.Date){ + t = new Time(((java.util.Date) value).getTime()); + } else { + t = Time.valueOf(value.toString()); } statement.setTime(position, t); @@ -381,6 +392,10 @@ if (value instanceof Time) { ts = (Timestamp) value; + } else if (value instanceof java.util.Date) { + ts = new Timestamp(((java.util.Date) value).getTime()); + } else { + ts = Timestamp.valueOf(value.toString()); } statement.setTimestamp(position, ts);
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]