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]

Reply via email to