Repository: vxquery Updated Branches: refs/heads/master 8129616e9 -> 782ab8842
Less code for libjn:descendant-arrays Project: http://git-wip-us.apache.org/repos/asf/vxquery/repo Commit: http://git-wip-us.apache.org/repos/asf/vxquery/commit/782ab884 Tree: http://git-wip-us.apache.org/repos/asf/vxquery/tree/782ab884 Diff: http://git-wip-us.apache.org/repos/asf/vxquery/diff/782ab884 Branch: refs/heads/master Commit: 782ab8842971bbf9efe6a50ac78ee542339763da Parents: 8129616 Author: Christina Pavlopoulou <[email protected]> Authored: Fri Aug 12 17:24:17 2016 -0700 Committer: Preston Carman <[email protected]> Committed: Fri Aug 12 18:03:13 2016 -0700 ---------------------------------------------------------------------- .../LibjnDescendantArraysScalarEvaluator.java | 45 +++++++ ...nDescendantArraysScalarEvaluatorFactory.java | 121 +------------------ 2 files changed, 46 insertions(+), 120 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/vxquery/blob/782ab884/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluator.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluator.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluator.java new file mode 100644 index 0000000..f2a5524 --- /dev/null +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluator.java @@ -0,0 +1,45 @@ +/* +* 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.runtime.functions.json; + +import java.io.IOException; + +import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator; +import org.apache.hyracks.api.context.IHyracksTaskContext; +import org.apache.vxquery.datamodel.accessors.TaggedValuePointable; +import org.apache.vxquery.datamodel.accessors.jsonitem.ObjectPointable; + +public class LibjnDescendantArraysScalarEvaluator extends AbstractLibjnDescendantScalarEvaluator { + + public LibjnDescendantArraysScalarEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args) { + super(ctx, args); + } + + @Override + protected void processPair(TaggedValuePointable tvp, ObjectPointable op) throws IOException { + tvp.getValue(stringp); + op.getValue(stringp, tvp); + } + + @Override + protected void processArray(TaggedValuePointable tvp) throws IOException { + sb.addItem(tvp); + super.processArray(tvp); + } + +} + http://git-wip-us.apache.org/repos/asf/vxquery/blob/782ab884/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluatorFactory.java index 4899d9b..5692664 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluatorFactory.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnDescendantArraysScalarEvaluatorFactory.java @@ -16,25 +16,10 @@ */ package org.apache.vxquery.runtime.functions.json; -import java.io.IOException; - import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException; import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator; import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory; import org.apache.hyracks.api.context.IHyracksTaskContext; -import org.apache.hyracks.data.std.api.IPointable; -import org.apache.hyracks.data.std.primitive.UTF8StringPointable; -import org.apache.hyracks.data.std.util.ArrayBackedValueStorage; -import org.apache.vxquery.datamodel.accessors.SequencePointable; -import org.apache.vxquery.datamodel.accessors.TaggedValuePointable; -import org.apache.vxquery.datamodel.accessors.jsonitem.ArrayPointable; -import org.apache.vxquery.datamodel.accessors.jsonitem.ObjectPointable; -import org.apache.vxquery.datamodel.builders.sequence.SequenceBuilder; -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.base.AbstractTaggedValueArgumentScalarEvaluatorFactory; public class LibjnDescendantArraysScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory { @@ -48,110 +33,6 @@ public class LibjnDescendantArraysScalarEvaluatorFactory extends AbstractTaggedV @Override protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args) throws AlgebricksException { - final SequencePointable sp = (SequencePointable) SequencePointable.FACTORY.createPointable(); - final ArrayPointable ap = (ArrayPointable) ArrayPointable.FACTORY.createPointable(); - final UTF8StringPointable stringp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable(); - final SequenceBuilder sb = new SequenceBuilder(); - final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage(); - - return new AbstractTaggedValueArgumentScalarEvaluator(args) { - - @Override - protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException { - abvs.reset(); - sb.reset(abvs); - TaggedValuePointable tvp = args[0]; - if (tvp.getTag() == ValueTag.SEQUENCE_TAG) { - TaggedValuePointable tempTvp = ppool.takeOne(TaggedValuePointable.class); - tvp.getValue(sp); - int size = sp.getEntryCount(); - for (int i = 0; i < size; i++) { - sp.getEntry(i, tempTvp); - if (tempTvp.getTag() == ValueTag.ARRAY_TAG) { - nested(tempTvp, ap); - } - if (tempTvp.getTag() == ValueTag.OBJECT_TAG) { - insideObject(tempTvp); - } - } - ppool.giveBack(tempTvp); - } else if (tvp.getTag() == ValueTag.ARRAY_TAG) { - nested(tvp, ap); - } else if (tvp.getTag() == ValueTag.OBJECT_TAG) { - insideObject(tvp); - } else { - XDMConstants.setEmptySequence(tvp); - } - try { - sb.finish(); - result.set(abvs); - } catch (IOException e) { - throw new SystemException(ErrorCode.SYSE0001, e); - } - } - - public void nested(TaggedValuePointable tvp, ArrayPointable ap) throws SystemException { - TaggedValuePointable tempTvp = ppool.takeOne(TaggedValuePointable.class); - ArrayPointable tempAp = ppool.takeOne(ArrayPointable.class); - appendSequence(tvp, ap); - int size = ap.getEntryCount(); - for (int i = 0; i < size; i++) { - - ap.getEntry(i, tempTvp); - if (tempTvp.getTag() == ValueTag.ARRAY_TAG) { - nested(tempTvp, tempAp); - } - } - ppool.giveBack(tempTvp); - ppool.giveBack(tempAp); - } - - public void appendSequence(TaggedValuePointable tvp, ArrayPointable ap) throws SystemException { - tvp.getValue(ap); - try { - sb.addItem(tvp); - } catch (IOException e) { - throw new SystemException(ErrorCode.SYSE0001, e); - } - } - - public void insideObject(TaggedValuePointable tvp) throws SystemException { - TaggedValuePointable tempTvp = ppool.takeOne(TaggedValuePointable.class); - ObjectPointable op = ppool.takeOne(ObjectPointable.class); - SequencePointable sp = ppool.takeOne(SequencePointable.class); - tvp.getValue(op); - try { - op.getKeys(tvp); - if (tvp.getTag() == ValueTag.XS_STRING_TAG) { - tvp.getValue(stringp); - op.getValue(stringp, tempTvp); - checkFunction(tempTvp); - } else if (tvp.getTag() == ValueTag.SEQUENCE_TAG) { - tvp.getValue(sp); - int size = sp.getEntryCount(); - for (int i = 0; i < size; i++) { - sp.getEntry(i, tempTvp); - tempTvp.getValue(stringp); - op.getValue(stringp, tempTvp); - checkFunction(tempTvp); - } - } - } catch (IOException e1) { - throw new SystemException(ErrorCode.SYSE0001, e1); - } - ppool.giveBack(sp); - ppool.giveBack(op); - ppool.giveBack(tempTvp); - } - - public void checkFunction(TaggedValuePointable tvp) throws SystemException { - if (tvp.getTag() == ValueTag.OBJECT_TAG) { - insideObject(tvp); - } else { - nested(tvp, ap); - } - } - }; + return new LibjnDescendantArraysScalarEvaluator(ctx, args); } - }
