EMPIREDB-384 DBCmdParam type conversion
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBCmdParam.java b/empire-db/src/main/java/org/apache/empire/db/DBCmdParam.java
index b5503fb..e9961cc 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBCmdParam.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBCmdParam.java
@@ -18,6 +18,7 @@
  */

 package org.apache.empire.db;

 

+import java.math.BigDecimal;

 import java.util.Set;

 

 import org.apache.empire.commons.ObjectUtils;

@@ -60,6 +61,11 @@
         // check null

         if (value == null)

             return null;

+        // check for enum

+        if (value instanceof Enum<?>)

+        {   // convert enum

+            return ObjectUtils.getEnumValue((Enum<?>)value, type.isNumeric());

+        }

         // check type

         switch (type)

         {

@@ -77,12 +83,16 @@
                 return new DBClobData(value.toString());

             case BOOL:

             	return ObjectUtils.getBoolean(value);

+            case INTEGER:

+                return (value instanceof Number) ? value : ObjectUtils.toLong(value);

+            case FLOAT:

+                return (value instanceof Number) ? value : ObjectUtils.toDouble(value);

+            case DECIMAL:

+                return (value instanceof Number) ? value : ObjectUtils.toDecimal(value);

+            case CHAR:

+            case VARCHAR:

+                return (value instanceof String) ? value : value.toString();

             default:

-                // check for enum

-                if (value instanceof Enum<?>)

-                {   // convert enum

-                    return ObjectUtils.getEnumValue((Enum<?>)value, type.isNumeric());

-                }

                 // use as is

                 return value;

         }