Author: doebele
Date: Fri Sep 19 09:19:34 2014
New Revision: 1626155

URL: http://svn.apache.org/r1626155
Log:
EMPIREDB-208

Modified:
    
empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
    
empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java

Modified: 
empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
URL: 
http://svn.apache.org/viewvc/empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java?rev=1626155&r1=1626154&r2=1626155&view=diff
==============================================================================
--- 
empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
 (original)
+++ 
empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
 Fri Sep 19 09:19:34 2014
@@ -143,7 +143,7 @@ public abstract class DBDDLGenerator<T e
             case DECIMAL:
             {   sql.append(DATATYPE_DECIMAL);
                 int prec  = (int) size;
-                int scale = (int) ((size - prec) * 10 + 0.5);
+                int scale = c.getDecimalScale();
                 if (prec>0) {
                     // append precision and scale
                     sql.append("(");

Modified: 
empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java
URL: 
http://svn.apache.org/viewvc/empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java?rev=1626155&r1=1626154&r2=1626155&view=diff
==============================================================================
--- 
empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java 
(original)
+++ 
empire-db/trunk/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java 
Fri Sep 19 09:19:34 2014
@@ -58,6 +58,7 @@ public class DBTableColumn extends DBCol
     protected double    size;
     protected DataMode  dataMode;
     protected Object    defValue;
+    protected int              decimalScale = 0;
 
     /**
      * Constructs a DBTableColumn object set the specified parameters to this 
object.
@@ -208,6 +209,32 @@ public class DBTableColumn extends DBCol
         }
         // set now
         this.size = size;
+        // set scale
+       if (getDataType()==DataType.DECIMAL)
+       {       // set scale from size
+                   int reqPrec = (int)size;
+                   this.decimalScale = ((int)(size*10)-(reqPrec*10));
+       }
+    }
+    
+    /**
+     * Returns the scale of the Decimal or 0 if the DataType is not 
DataType.DECIMAL.
+     * @return the decimal scale
+     */
+    public int getDecimalScale()
+    {
+           return this.decimalScale;
+    }
+    
+    /**
+     * Sets the scale of a decimal. The DataType must be set to 
DataType.DECIMAL otherwise an exception is thrown. 
+     */
+    public void setDecimalScale(int scale)
+    {
+       if (getDataType()!=DataType.DECIMAL)
+               throw new NotSupportedException(this, "setDecimalScale");
+       // return scale
+           this.decimalScale = scale;
     }
 
     /**
@@ -457,7 +484,7 @@ public class DBTableColumn extends DBCol
             // check precision and scale
             double size = getSize();
             int reqPrec = (int)size;
-            int reqScale =((int)(size*10)-(reqPrec*10));
+            int reqScale = getDecimalScale();
             if ((prec-scale)>(reqPrec-reqScale) || scale>reqScale)
                 throw new FieldValueOutOfRangeException(this);
         }


Reply via email to