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/22 00:02:57 UTC
svn commit: r1375820 -
/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java
Author: prestonc
Date: Tue Aug 21 22:02:56 2012
New Revision: 1375820
URL: http://svn.apache.org/viewvc?rev=1375820&view=rev
Log:
Added a few missing types in the fn:boolean function.
Modified:
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java?rev=1375820&r1=1375819&r2=1375820&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java Tue Aug 21 22:02:56 2012
@@ -2,6 +2,7 @@ package org.apache.vxquery.runtime.funct
import org.apache.vxquery.datamodel.accessors.SequencePointable;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
import org.apache.vxquery.datamodel.values.ValueTag;
import org.apache.vxquery.datamodel.values.XDMConstants;
import org.apache.vxquery.exceptions.ErrorCode;
@@ -14,8 +15,12 @@ import edu.uci.ics.hyracks.algebricks.ru
import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
import edu.uci.ics.hyracks.data.std.api.IPointable;
+import edu.uci.ics.hyracks.data.std.primitive.BytePointable;
+import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
+import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
+import edu.uci.ics.hyracks.data.std.primitive.ShortPointable;
import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
public class FnBooleanScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
@@ -31,6 +36,11 @@ public class FnBooleanScalarEvaluatorFac
final SequencePointable seqp = new SequencePointable();
final LongPointable lp = (LongPointable) LongPointable.FACTORY.createPointable();
final IntegerPointable ip = (IntegerPointable) IntegerPointable.FACTORY.createPointable();
+ final ShortPointable sp = (ShortPointable) ShortPointable.FACTORY.createPointable();
+ final BytePointable bp = (BytePointable) BytePointable.FACTORY.createPointable();
+ final XSDecimalPointable decp = (XSDecimalPointable) XSDecimalPointable.FACTORY.createPointable();
+ final DoublePointable dp = (DoublePointable) DoublePointable.FACTORY.createPointable();
+ final FloatPointable fp = (FloatPointable) FloatPointable.FACTORY.createPointable();
final UTF8StringPointable utf8p = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
return new AbstractTaggedValueArgumentScalarEvaluator(args) {
@Override
@@ -52,8 +62,24 @@ public class FnBooleanScalarEvaluatorFac
return;
}
+ case ValueTag.XS_DECIMAL_TAG: {
+ tvp.getValue(decp);
+ if (decp.longValue() == 0) {
+ XDMConstants.setFalse(result);
+ return;
+ }
+ XDMConstants.setTrue(result);
+ return;
+ }
+
+ case ValueTag.XS_INTEGER_TAG:
case ValueTag.XS_LONG_TAG:
- case ValueTag.XS_INTEGER_TAG: {
+ case ValueTag.XS_NEGATIVE_INTEGER_TAG:
+ case ValueTag.XS_NON_POSITIVE_INTEGER_TAG:
+ case ValueTag.XS_NON_NEGATIVE_INTEGER_TAG:
+ case ValueTag.XS_POSITIVE_INTEGER_TAG:
+ case ValueTag.XS_UNSIGNED_INT_TAG:
+ case ValueTag.XS_UNSIGNED_LONG_TAG: {
tvp.getValue(lp);
if (lp.longValue() == 0) {
XDMConstants.setFalse(result);
@@ -63,7 +89,8 @@ public class FnBooleanScalarEvaluatorFac
return;
}
- case ValueTag.XS_INT_TAG: {
+ case ValueTag.XS_INT_TAG:
+ case ValueTag.XS_UNSIGNED_SHORT_TAG: {
tvp.getValue(ip);
if (ip.intValue() == 0) {
XDMConstants.setFalse(result);
@@ -73,6 +100,48 @@ public class FnBooleanScalarEvaluatorFac
return;
}
+ case ValueTag.XS_SHORT_TAG:
+ case ValueTag.XS_UNSIGNED_BYTE_TAG: {
+ tvp.getValue(sp);
+ if (sp.shortValue() == 0) {
+ XDMConstants.setFalse(result);
+ return;
+ }
+ XDMConstants.setTrue(result);
+ return;
+ }
+
+ case ValueTag.XS_BYTE_TAG: {
+ tvp.getValue(bp);
+ if (bp.byteValue() == 0) {
+ XDMConstants.setFalse(result);
+ return;
+ }
+ XDMConstants.setTrue(result);
+ return;
+ }
+
+ case ValueTag.XS_DOUBLE_TAG: {
+ tvp.getValue(dp);
+ if (dp.doubleValue() == 0 || Double.isNaN(dp.doubleValue())) {
+ XDMConstants.setFalse(result);
+ return;
+ }
+ XDMConstants.setTrue(result);
+ return;
+ }
+
+ case ValueTag.XS_FLOAT_TAG: {
+ tvp.getValue(fp);
+ if (fp.floatValue() == 0 || Float.isNaN(fp.floatValue())) {
+ XDMConstants.setFalse(result);
+ return;
+ }
+ XDMConstants.setTrue(result);
+ return;
+ }
+
+ case ValueTag.XS_ANY_URI_TAG:
case ValueTag.XS_STRING_TAG: {
tvp.getValue(utf8p);
if (utf8p.getUTFLength() == 0) {