You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by pr...@apache.org on 2012/08/21 02:32:52 UTC

svn commit: r1375347 - /incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java

Author: prestonc
Date: Tue Aug 21 00:32:52 2012
New Revision: 1375347

URL: http://svn.apache.org/viewvc?rev=1375347&view=rev
Log:
Added an option to convert decimal string with or without the "e" symbol.

Modified:
    incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java

Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java?rev=1375347&r1=1375346&r2=1375347&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java Tue Aug 21 00:32:52 2012
@@ -47,7 +47,7 @@ public class CastToDecimalOperation exte
 
         UTF8StringPointable stringp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         stringp.set(abvsInner.getByteArray(), abvsInner.getStartOffset() + 1, abvsInner.getLength() - 1);
-        convertString(stringp, dOut);
+        convertStringExtra(stringp, dOut, true);
     }
 
     @Override
@@ -58,7 +58,7 @@ public class CastToDecimalOperation exte
 
         UTF8StringPointable stringp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
         stringp.set(abvsInner.getByteArray(), abvsInner.getStartOffset() + 1, abvsInner.getLength() - 1);
-        convertString(stringp, dOut);
+        convertStringExtra(stringp, dOut, true);
     }
 
     @Override
@@ -70,6 +70,11 @@ public class CastToDecimalOperation exte
 
     @Override
     public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        convertStringExtra(stringp, dOut, false);
+    }
+
+    private void convertStringExtra(UTF8StringPointable stringp, DataOutput dOut, boolean connoicalForm)
+            throws SystemException, IOException {
         ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
         charIterator.reset();
         byte decimalPlace = 0;
@@ -97,7 +102,7 @@ public class CastToDecimalOperation exte
                 count++;
             } else if (c == Character.valueOf('.') && pastDecimal == false) {
                 pastDecimal = true;
-            } else if (c == Character.valueOf('E') || c == Character.valueOf('e')) {
+            } else if (c == Character.valueOf('E') || c == Character.valueOf('e') && connoicalForm) {
                 break;
             } else {
                 throw new SystemException(ErrorCode.FORG0001);
@@ -105,7 +110,7 @@ public class CastToDecimalOperation exte
         } while ((c = charIterator.next()) != ICharacterIterator.EOS_CHAR);
 
         // Parse the exponent.
-        if (c == Character.valueOf('E') || c == Character.valueOf('e')) {
+        if (c == Character.valueOf('E') || c == Character.valueOf('e') && connoicalForm) {
             int moveOffset = 0;
             boolean negativeOffset = false;
             // Check for the negative sign.