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]