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.