code updated with changes
Project: http://git-wip-us.apache.org/repos/asf/vxquery/repo Commit: http://git-wip-us.apache.org/repos/asf/vxquery/commit/25cf3a99 Tree: http://git-wip-us.apache.org/repos/asf/vxquery/tree/25cf3a99 Diff: http://git-wip-us.apache.org/repos/asf/vxquery/diff/25cf3a99 Branch: refs/heads/master Commit: 25cf3a9945f5cc103a4c86637a9be0bf776ba226 Parents: fa890b2 Author: Shivani Mall <[email protected]> Authored: Mon Jun 22 12:35:22 2015 -0700 Committer: Shivani Mall <[email protected]> Committed: Mon Jun 22 12:35:22 2015 -0700 ---------------------------------------------------------------------- .../AbstractNodePositionalCheckEvaluator.java | 59 ++++++++++++++++++++ .../accessors/nodes/DocumentNodePointable.java | 1 - 2 files changed, 59 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/vxquery/blob/25cf3a99/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/AbstractNodePositionalCheckEvaluator.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/AbstractNodePositionalCheckEvaluator.java b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/AbstractNodePositionalCheckEvaluator.java new file mode 100644 index 0000000..2f0f671 --- /dev/null +++ b/vxquery-core/src/main/java/org/apache/vxquery/compiler/rewriter/rules/AbstractNodePositionalCheckEvaluator.java @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.vxquery.compiler.rewriter.rules; + +import org.apache.vxquery.datamodel.accessors.TaggedValuePointable; +import org.apache.vxquery.datamodel.accessors.TypedPointables; +import org.apache.vxquery.datamodel.values.ValueTag; +import org.apache.vxquery.datamodel.values.XDMConstants; +import org.apache.vxquery.exceptions.ErrorCode; +import org.apache.vxquery.exceptions.SystemException; +import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator; +import org.apache.vxquery.runtime.functions.util.FunctionHelper; + +import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator; +import edu.uci.ics.hyracks.data.std.api.IPointable; + +public abstract class AbstractNodePositionalCheckEvaluator extends AbstractTaggedValueArgumentScalarEvaluator { + + public AbstractNodePositionalCheckEvaluator(IScalarEvaluator[] args) { + super(args); + } + + private final TypedPointables tp = new TypedPointables(); + + @Override + protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException { + + if (args[0].getTag() != ValueTag.NODE_TREE_TAG) { + throw new SystemException(ErrorCode.FORG0006); + } + + if (args[1].getTag() != ValueTag.NODE_TREE_TAG) { + throw new SystemException(ErrorCode.FORG0006); + } + + if (nodeCompare(FunctionHelper.getLocalNodeId(args[0], tp), FunctionHelper.getLocalNodeId(args[1], tp))) { + XDMConstants.setTrue(result); + } else { + XDMConstants.setFalse(result); + } + } + + abstract protected boolean nodeCompare(int firstId, int secondId); +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/vxquery/blob/25cf3a99/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/nodes/DocumentNodePointable.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/nodes/DocumentNodePointable.java b/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/nodes/DocumentNodePointable.java index c3a2749..d2dc5d0 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/nodes/DocumentNodePointable.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/nodes/DocumentNodePointable.java @@ -64,5 +64,4 @@ public class DocumentNodePointable extends AbstractNodePointable { private int getContentSize(NodeTreePointable nodeTree) { return length - (getContentOffset(nodeTree) - start); } - } \ No newline at end of file
