You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2015/03/19 19:26:53 UTC
[35/40] incubator-tinkerpop git commit: the traversal steps provided
by TinkerPop are the foundation for all dsl. GraphTraversal is just a dsl of
traversal. Refactored the process API to reflect this concept. Fixed #592.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxGlobalStep.java
deleted file mode 100644
index c6990cc..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxGlobalStep.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.util.ReducingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
-
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.function.BiFunction;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class MaxGlobalStep<S extends Number> extends ReducingBarrierStep<S, S> implements MapReducer {
-
- public MaxGlobalStep(final Traversal.Admin traversal) {
- super(traversal);
- this.setSeedSupplier(new ConstantSupplier<>(null));
- this.setBiFunction(MaxGlobalBiFunction.<S>instance());
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-
- @Override
- public MapReduce<MapReduce.NullObject, Number, MapReduce.NullObject, Number, Number> getMapReduce() {
- return MaxGlobalMapReduce.instance();
- }
-
- /////
-
- private static class MaxGlobalBiFunction<S extends Number> implements BiFunction<S, Traverser<S>, S>, Serializable {
-
- private static final MaxGlobalBiFunction INSTANCE = new MaxGlobalBiFunction();
-
- private MaxGlobalBiFunction() {
-
- }
-
- @Override
- public S apply(final S mutatingSeed, final Traverser<S> traverser) {
- return mutatingSeed != null && mutatingSeed.doubleValue() >= traverser.get().doubleValue() ? mutatingSeed : traverser.get();
- }
-
- public final static <S extends Number> MaxGlobalBiFunction<S> instance() {
- return INSTANCE;
- }
- }
-
- ///////////
-
- private static class MaxGlobalMapReduce extends StaticMapReduce<MapReduce.NullObject, Number, MapReduce.NullObject, Number, Number> {
-
- private static final MaxGlobalMapReduce INSTANCE = new MaxGlobalMapReduce();
-
- private MaxGlobalMapReduce() {
-
- }
-
- @Override
- public boolean doStage(final MapReduce.Stage stage) {
- return true;
- }
-
- @Override
- public void map(final Vertex vertex, final MapEmitter<NullObject, Number> emitter) {
- vertex.<TraverserSet<Number>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(traverser -> emitter.emit(traverser.get())));
- }
-
- @Override
- public void combine(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
- this.reduce(key, values, emitter);
- }
-
- @Override
- public void reduce(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
- if (values.hasNext()) {
- Number max = -Double.MAX_VALUE;
- while (values.hasNext()) {
- final Number value = values.next();
- if (value.doubleValue() > max.doubleValue())
- max = value;
- }
- emitter.emit(max);
- }
- }
-
- @Override
- public String getMemoryKey() {
- return REDUCING;
- }
-
- @Override
- public Number generateFinalResult(final Iterator<KeyValue<NullObject, Number>> keyValues) {
- return keyValues.hasNext() ? keyValues.next().getValue() : Double.NaN;
- }
-
- public static final MaxGlobalMapReduce instance() {
- return INSTANCE;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java
deleted file mode 100644
index dcafe1a..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MaxLocalStep.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-public final class MaxLocalStep<E extends Number, S extends Iterable<E>> extends MapStep<S, E> {
-
- public MaxLocalStep(final Traversal.Admin traversal) {
- super(traversal);
- }
-
- @Override
- protected E map(final Traverser.Admin<S> traverser) {
- Number result;
- final Iterator<E> iterator = traverser.get().iterator();
- if (iterator.hasNext()) {
- result = iterator.next();
- while (iterator.hasNext()) {
- final Number curr = iterator.next();
- if (result.doubleValue() < curr.doubleValue()) result = curr;
- }
- } else {
- result = Double.NaN;
- }
- return (E) result;
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanGlobalStep.java
deleted file mode 100644
index 51fc509..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanGlobalStep.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.util.ReducingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.util.function.MeanNumberSupplier;
-
-import java.io.Serializable;
-import java.util.EnumSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.function.BiFunction;
-import java.util.function.Supplier;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-public final class MeanGlobalStep<S extends Number, E extends Number> extends ReducingBarrierStep<S, E> implements MapReducer {
-
- private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT, TraverserRequirement.BULK);
-
- public MeanGlobalStep(final Traversal.Admin traversal) {
- super(traversal);
- this.setSeedSupplier((Supplier) MeanNumberSupplier.instance());
- this.setBiFunction((BiFunction) MeanGlobalBiFunction.instance());
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return REQUIREMENTS;
- }
-
- @Override
- public MapReduce<Number, Long, Number, Long, Double> getMapReduce() {
- return MeanGlobalMapReduce.instance();
- }
-
- /////
-
- private static class MeanGlobalBiFunction<S extends Number> implements BiFunction<S, Traverser<S>, S>, Serializable {
-
- private static final MeanGlobalBiFunction INSTANCE = new MeanGlobalBiFunction();
-
- private MeanGlobalBiFunction() {
-
- }
-
- @Override
- public S apply(final S mutatingSeed, final Traverser<S> traverser) {
- return (S) ((MeanNumber) mutatingSeed).add(traverser.get(), traverser.bulk());
- }
-
- public final static <S extends Number> MeanGlobalBiFunction<S> instance() {
- return INSTANCE;
- }
- }
-
- ///////////
-
- private static final class MeanGlobalMapReduce extends StaticMapReduce<Number, Long, Number, Long, Double> {
-
- private static final MeanGlobalMapReduce INSTANCE = new MeanGlobalMapReduce();
-
- private MeanGlobalMapReduce() {
-
- }
-
- @Override
- public boolean doStage(final MapReduce.Stage stage) {
- return true;
- }
-
- @Override
- public void map(final Vertex vertex, final MapEmitter<Number, Long> emitter) {
- vertex.<TraverserSet<Number>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(traverser -> emitter.emit(traverser.get(), traverser.bulk())));
- }
-
- @Override
- public void combine(final Number key, final Iterator<Long> values, final ReduceEmitter<Number, Long> emitter) {
- this.reduce(key, values, emitter);
- }
-
- @Override
- public void reduce(final Number key, final Iterator<Long> values, final ReduceEmitter<Number, Long> emitter) {
- long counter = 0;
- while (values.hasNext()) {
- counter = counter + values.next();
- }
- emitter.emit(key, counter);
- }
-
- @Override
- public String getMemoryKey() {
- return REDUCING;
- }
-
- @Override
- public Double generateFinalResult(final Iterator<KeyValue<Number, Long>> keyValues) {
- if (keyValues.hasNext()) {
- KeyValue<Number, Long> pair = keyValues.next();
- double result = pair.getKey().doubleValue() * pair.getValue();
- long counter = pair.getValue();
- while (keyValues.hasNext()) {
- pair = keyValues.next();
- result += pair.getKey().doubleValue() * pair.getValue();
- counter += pair.getValue();
- }
- return result / counter;
- }
- return Double.NaN;
- }
-
- public static final MeanGlobalMapReduce instance() {
- return INSTANCE;
- }
- }
-
- ///
-
- public static final class MeanNumber extends Number implements Comparable<Number>, FinalGet<Double> {
-
- private long count;
- private double sum;
-
- public MeanNumber() {
- this(0.0d, 0l);
- }
-
- public MeanNumber(final double number, final long count) {
- this.count = count;
- this.sum = number * count;
- }
-
- public MeanNumber add(final Number amount, final long count) {
- this.count += count;
- this.sum += amount.doubleValue() * count;
- return this;
- }
-
- public MeanNumber add(final MeanNumber other) {
- this.count += other.count;
- this.sum += other.sum;
- return this;
- }
-
- @Override
- public int intValue() {
- return (int) (this.sum / this.count);
- }
-
- @Override
- public long longValue() {
- return (long) (this.sum / this.count);
- }
-
- @Override
- public float floatValue() {
- return (float) (this.sum / this.count);
- }
-
- @Override
- public double doubleValue() {
- return this.sum / this.count;
- }
-
- @Override
- public String toString() {
- return Double.toString(this.doubleValue());
- }
-
- @Override
- public int compareTo(final Number number) {
- return Double.valueOf(this.doubleValue()).compareTo(number.doubleValue());
- }
-
- @Override
- public boolean equals(final Object object) {
- return object instanceof Number && Double.valueOf(this.doubleValue()).equals(((Number) object).doubleValue());
- }
-
- @Override
- public int hashCode() {
- return Double.valueOf(this.doubleValue()).hashCode();
- }
-
- @Override
- public Double getFinal() {
- return this.doubleValue();
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java
deleted file mode 100644
index 6953334..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MeanLocalStep.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-public final class MeanLocalStep<E extends Number, S extends Iterable<E>> extends MapStep<S, Double> {
-
- public MeanLocalStep(final Traversal.Admin traversal) {
- super(traversal);
- }
-
- @Override
- protected Double map(final Traverser.Admin<S> traverser) {
- final Iterator<E> iterator = traverser.get().iterator();
- if (iterator.hasNext()) {
- Long counter = 1L;
- Double result = iterator.next().doubleValue();
- while (iterator.hasNext()) {
- result += iterator.next().doubleValue();
- counter++;
- }
- return result / counter;
- } else {
- return Double.NaN;
- }
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinGlobalStep.java
deleted file mode 100644
index 999ed5e..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinGlobalStep.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.util.ReducingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
-
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.function.BiFunction;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class MinGlobalStep<S extends Number> extends ReducingBarrierStep<S, S> implements MapReducer {
-
- public MinGlobalStep(final Traversal.Admin traversal) {
- super(traversal);
- this.setSeedSupplier(new ConstantSupplier<>(null));
- this.setBiFunction(MinGlobalBiFunction.instance());
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-
- @Override
- public MapReduce<MapReduce.NullObject, Number, MapReduce.NullObject, Number, Number> getMapReduce() {
- return MinGlobalMapReduce.instance();
- }
-
- /////
-
- private static class MinGlobalBiFunction<S extends Number> implements BiFunction<S, Traverser<S>, S>, Serializable {
-
- private static final MinGlobalBiFunction INSTANCE = new MinGlobalBiFunction();
-
- private MinGlobalBiFunction() {
-
- }
-
- @Override
- public S apply(final S mutatingSeed, final Traverser<S> traverser) {
- return mutatingSeed != null && mutatingSeed.doubleValue() <= traverser.get().doubleValue() ? mutatingSeed : traverser.get();
- }
-
- public final static <S extends Number> MinGlobalBiFunction<S> instance() {
- return INSTANCE;
- }
- }
-
- ///////////
-
- private static class MinGlobalMapReduce extends StaticMapReduce<MapReduce.NullObject, Number, MapReduce.NullObject, Number, Number> {
-
- private static final MinGlobalMapReduce INSTANCE = new MinGlobalMapReduce();
-
- private MinGlobalMapReduce() {
-
- }
-
- @Override
- public boolean doStage(final MapReduce.Stage stage) {
- return true;
- }
-
- @Override
- public void map(final Vertex vertex, final MapEmitter<NullObject, Number> emitter) {
- vertex.<TraverserSet<Number>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(traverser -> emitter.emit(traverser.get())));
- }
-
- @Override
- public void combine(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
- this.reduce(key, values, emitter);
- }
-
- @Override
- public void reduce(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
- if (values.hasNext()) {
- Number min = Double.MAX_VALUE;
- while (values.hasNext()) {
- final Number value = values.next();
- if (value.doubleValue() < min.doubleValue())
- min = value;
- }
- emitter.emit(min);
- }
- }
-
- @Override
- public String getMemoryKey() {
- return REDUCING;
- }
-
- @Override
- public Number generateFinalResult(final Iterator<KeyValue<NullObject, Number>> keyValues) {
- return keyValues.hasNext() ? keyValues.next().getValue() : Double.NaN;
- }
-
- public static final MinGlobalMapReduce instance() {
- return INSTANCE;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java
deleted file mode 100644
index 2dc970f..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/MinLocalStep.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-public final class MinLocalStep<E extends Number, S extends Iterable<E>> extends MapStep<S, E> {
-
- public MinLocalStep(final Traversal.Admin traversal) {
- super(traversal);
- }
-
- @Override
- protected E map(final Traverser.Admin<S> traverser) {
- Number result;
- final Iterator<E> iterator = traverser.get().iterator();
- if (iterator.hasNext()) {
- result = iterator.next();
- while (iterator.hasNext()) {
- final Number curr = iterator.next();
- if (result.doubleValue() > curr.doubleValue()) result = curr;
- }
- } else {
- result = Double.NaN;
- }
- return (E) result;
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/OrderGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/OrderGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/OrderGlobalStep.java
deleted file mode 100644
index acd1f9a..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/OrderGlobalStep.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.ComparatorHolder;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.util.CollectingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.structure.Order;
-import org.apache.tinkerpop.gremlin.util.function.ChainedComparator;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class OrderGlobalStep<S> extends CollectingBarrierStep<S> implements ComparatorHolder<S> {
-
- private final List<Comparator<S>> comparators = new ArrayList<>();
-
- public OrderGlobalStep(final Traversal.Admin traversal) {
- super(traversal);
- }
-
- @Override
- public void barrierConsumer(final TraverserSet<S> traverserSet) {
- traverserSet.sort(this.comparators.isEmpty() ? new ComparatorTraverser(Order.incr) : new ChainedComparator(ComparatorTraverser.convertComparator((List) this.comparators)));
- }
-
- @Override
- public void addComparator(final Comparator<S> comparator) {
- this.comparators.add(comparator);
- }
-
- @Override
- public List<Comparator<S>> getComparators() {
- return this.comparators.isEmpty() ? Arrays.asList((Comparator) Order.incr) : this.comparators;
- }
-
- @Override
- public String toString() {
- return TraversalHelper.makeStepString(this, this.comparators);
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-
- /////
-
- private static class ComparatorTraverser<S> implements Comparator<Traverser<S>>, Serializable {
-
- private final Comparator<S> comparator;
-
- public ComparatorTraverser(final Comparator<S> comparator) {
- this.comparator = comparator;
- }
-
- @Override
- public int compare(final Traverser<S> traverserA, final Traverser<S> traverserB) {
- return this.comparator.compare(traverserA.get(), traverserB.get());
- }
-
- public static <S> List<ComparatorTraverser<S>> convertComparator(final List<Comparator<S>> comparators) {
- return comparators.stream().map(comparator -> new ComparatorTraverser<>(comparator)).collect(Collectors.toList());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/OrderLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/OrderLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/OrderLocalStep.java
deleted file mode 100644
index 1bcb26f..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/OrderLocalStep.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.ComparatorHolder;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class OrderLocalStep<S, M> extends MapStep<S, S> implements ComparatorHolder<M> {
-
- private final List<Comparator<M>> comparators = new ArrayList<>();
- private Comparator<M> chainedComparator = null;
-
- public OrderLocalStep(final Traversal.Admin traversal) {
- super(traversal);
- }
-
- @Override
- protected S map(final Traverser.Admin<S> traverser) {
- final S start = traverser.get();
- if (start instanceof Collection)
- return (S) OrderLocalStep.sortCollection((List) start, this.chainedComparator);
- else if (start instanceof Map)
- return (S) OrderLocalStep.sortMap((Map) start, this.chainedComparator);
- else
- return start;
- }
-
- @Override
- public void addComparator(final Comparator<M> comparator) {
- this.comparators.add(comparator);
- this.chainedComparator = this.comparators.stream().reduce((a, b) -> a.thenComparing(b)).get();
- }
-
- @Override
- public List<Comparator<M>> getComparators() {
- return this.comparators;
- }
-
- @Override
- public String toString() {
- return TraversalHelper.makeStepString(this, this.comparators);
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-
- /////////////
-
- private static final <A> List<A> sortCollection(final Collection<A> collection, final Comparator<?> comparator) {
- if (collection instanceof List) {
- Collections.sort((List) collection, (Comparator) comparator);
- return (List<A>) collection;
- } else {
- final List<A> list = new ArrayList<>(collection);
- Collections.sort(list, (Comparator) comparator);
- return list;
- }
- }
-
- private static final <K, V> Map<K, V> sortMap(final Map<K, V> map, final Comparator<?> comparator) {
- final List<Map.Entry<K, V>> entries = new ArrayList<>(map.entrySet());
- Collections.sort(entries, (Comparator) comparator);
- final LinkedHashMap<K, V> sortedMap = new LinkedHashMap<>();
- entries.forEach(entry -> sortedMap.put(entry.getKey(), entry.getValue()));
- return sortedMap;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PathStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PathStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PathStep.java
deleted file mode 100644
index 0f03fab..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PathStep.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Path;
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.util.path.MutablePath;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class PathStep<S> extends MapStep<S, Path> implements TraversalParent {
-
- private TraversalRing<Object, Object> traversalRing;
-
- public PathStep(final Traversal.Admin traversal) {
- super(traversal);
- this.traversalRing = new TraversalRing<>();
- }
-
- @Override
- protected Path map(final Traverser.Admin<S> traverser) {
- final Path path;
- if (this.traversalRing.isEmpty())
- path = traverser.path();
- else {
- path = MutablePath.make();
- traverser.path().forEach((object, labels) -> path.extend(TraversalUtil.apply(object, this.traversalRing.next()), labels.toArray(new String[labels.size()])));
- }
- this.traversalRing.reset();
- return path;
- }
-
- @Override
- public PathStep<S> clone() {
- final PathStep<S> clone = (PathStep<S>) super.clone();
- clone.traversalRing = new TraversalRing<>();
- for (final Traversal.Admin<Object, Object> traversal : this.traversalRing.getTraversals()) {
- clone.traversalRing.addTraversal(clone.integrateChild(traversal.clone()));
- }
- return clone;
- }
-
- @Override
- public void reset() {
- super.reset();
- this.traversalRing.reset();
- }
-
- @Override
- public List<Traversal.Admin<Object, Object>> getLocalChildren() {
- return this.traversalRing.getTraversals();
- }
-
- @Override
- public void addLocalChild(final Traversal.Admin<?, ?> pathTraversal) {
- this.traversalRing.addTraversal(this.integrateChild(pathTraversal));
- }
-
- @Override
- public String toString() {
- return TraversalHelper.makeStepString(this, this.traversalRing);
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.PATH);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertiesStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertiesStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertiesStep.java
deleted file mode 100644
index f1360bc..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertiesStep.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.PropertyType;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class PropertiesStep<E> extends FlatMapStep<Element, E> {
-
- protected final String[] propertyKeys;
- protected final PropertyType returnType;
-
- public PropertiesStep(final Traversal.Admin traversal, final PropertyType propertyType, final String... propertyKeys) {
- super(traversal);
- this.returnType = propertyType;
- this.propertyKeys = propertyKeys;
- }
-
- @Override
- protected Iterator<E> flatMap(final Traverser.Admin<Element> traverser) {
- return this.returnType.equals(PropertyType.VALUE) ?
- traverser.get().values(this.propertyKeys) :
- (Iterator) traverser.get().properties(this.propertyKeys);
- }
-
- public PropertyType getReturnType() {
- return this.returnType;
- }
-
- public String[] getPropertyKeys() {
- return this.propertyKeys;
- }
-
- @Override
- public String toString() {
- return TraversalHelper.makeStepString(this, Arrays.asList(this.propertyKeys), this.returnType.name().toLowerCase());
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertyElementStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertyElementStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertyElementStep.java
deleted file mode 100644
index 2d425d6..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertyElementStep.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-
-import java.util.Collections;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class PropertyElementStep<E> extends MapStep<Property<E>, Element> {
-
- public PropertyElementStep(final Traversal.Admin traversal) {
- super(traversal);
- }
-
- @Override
- protected Element map(final Traverser.Admin<Property<E>> traverser) {
- return traverser.get().element();
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-
- // TODO: reverse()
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertyMapStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertyMapStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertyMapStep.java
deleted file mode 100644
index dcef117..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertyMapStep.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.T;
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.PropertyType;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class PropertyMapStep<E> extends MapStep<Element, Map<String, E>> { // TODO: Map<Object,E> cause of T.
-
- protected final String[] propertyKeys;
- protected final PropertyType returnType;
- protected final boolean includeTokens;
-
- public PropertyMapStep(final Traversal.Admin traversal, final boolean includeTokens, final PropertyType propertyType, final String... propertyKeys) {
- super(traversal);
- this.includeTokens = includeTokens;
- this.propertyKeys = propertyKeys;
- this.returnType = propertyType;
- }
-
- @Override
- protected Map<String, E> map(final Traverser.Admin<Element> traverser) {
- if (this.returnType.equals(PropertyType.VALUE)) {
- final Element element = traverser.get();
- final Map map = traverser.get() instanceof Vertex ?
- (Map) ElementHelper.vertexPropertyValueMap((Vertex) element, propertyKeys) :
- (Map) ElementHelper.propertyValueMap(element, propertyKeys);
- if (includeTokens) {
- if (element instanceof VertexProperty) {
- map.put(T.id, element.id());
- map.put(T.key, ((VertexProperty) element).key());
- map.put(T.value, ((VertexProperty) element).value());
- } else {
- map.put(T.id, element.id());
- map.put(T.label, element.label());
- }
- }
- return map;
-
- } else {
- return traverser.get() instanceof Vertex ?
- (Map) ElementHelper.vertexPropertyMap((Vertex) traverser.get(), propertyKeys) :
- (Map) ElementHelper.propertyMap(traverser.get(), propertyKeys);
- }
- }
-
- public PropertyType getReturnType() {
- return this.returnType;
- }
-
- public String toString() {
- return TraversalHelper.makeStepString(this, Arrays.asList(this.propertyKeys), this.returnType.name().toLowerCase());
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertyValueStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertyValueStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertyValueStep.java
deleted file mode 100644
index 63957cf..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/PropertyValueStep.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.structure.Property;
-
-import java.util.Collections;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class PropertyValueStep<E> extends MapStep<Property<E>, E> {
-
- public PropertyValueStep(final Traversal.Admin traversal) {
- super(traversal);
- }
-
- @Override
- protected E map(final Traverser.Admin<Property<E>> traverser) {
- return traverser.get().value();
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/RangeLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/RangeLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/RangeLocalStep.java
deleted file mode 100644
index 86f0cb9..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/RangeLocalStep.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.*;
-
-/**
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-public final class RangeLocalStep<S> extends MapStep<S, S> {
-
- private final long low;
- private final long high;
-
- public RangeLocalStep(final Traversal.Admin traversal, final long low, final long high) {
- super(traversal);
- if (low != -1 && high != -1 && low > high) {
- throw new IllegalArgumentException("Not a legal range: [" + low + ", " + high + ']');
- }
- this.low = low;
- this.high = high;
- }
-
- @Override
- protected S map(final Traverser.Admin<S> traverser) {
- final S start = traverser.get();
- if (start instanceof Map) {
- final Map map = (Map) start;
- final long capacity = (this.high != -1 ? this.high : map.size()) - this.low;
- final Map result = new LinkedHashMap((int) Math.min(capacity, map.size()));
- long c = 0L;
- for (final Object obj : map.entrySet()) {
- final Map.Entry entry = (Map.Entry) obj;
- if (c >= this.low) {
- if (c < this.high || this.high == -1) {
- result.put(entry.getKey(), entry.getValue());
- } else break;
- }
- c++;
- }
- return (S) result;
- } else if (start instanceof Collection) {
- final Collection collection = (Collection) start;
- final Collection result = (collection instanceof Set) ? new LinkedHashSet() : new LinkedList();
- long c = 0L;
- for (final Object item : collection) {
- if (c >= this.low) {
- if (c < this.high || this.high == -1) {
- result.add(item);
- } else break;
- }
- c++;
- }
- return (S) result;
- }
- return start;
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SackStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SackStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SackStep.java
deleted file mode 100644
index d24cbc4..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SackStep.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.Collections;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class SackStep<S, E> extends MapStep<S, E> {
-
- public SackStep(final Traversal.Admin traversal) {
- super(traversal);
- }
-
- @Override
- protected E map(final Traverser.Admin<S> traverser) {
- return traverser.sack();
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.SACK);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SampleLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SampleLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SampleLocalStep.java
deleted file mode 100644
index 6bf09fb..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SampleLocalStep.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.FastNoSuchElementException;
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.util.BulkSet;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-
-/**
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-public final class SampleLocalStep<S> extends MapStep<S, S> {
-
- private static final Random RANDOM = new Random();
-
- private final int amountToSample;
-
- public SampleLocalStep(final Traversal.Admin traversal, final int amountToSample) {
- super(traversal);
- this.amountToSample = amountToSample;
- }
-
- @Override
- protected S map(final Traverser.Admin<S> traverser) {
- final S start = traverser.get();
- if (start instanceof Map) {
- return mapMap((Map) start);
- } else if (start instanceof Collection) {
- return mapCollection((Collection) start);
- } else if (RANDOM.nextDouble() > 0.5d) {
- throw FastNoSuchElementException.instance();
- }
- return start;
- }
-
- private S mapCollection(final Collection collection) {
- final int size = collection.size();
- if (size <= this.amountToSample) {
- return (S) collection;
- }
- final double individualWeight = 1.0d / size;
- final Collection result = new BulkSet();
- double runningWeight = 0.0d;
- int runningAmountToSample = 0;
- while (runningAmountToSample < this.amountToSample) {
- for (final Object item : collection) {
- runningWeight = runningWeight + individualWeight;
- if (RANDOM.nextDouble() <= (runningWeight / size)) {
- result.add(item);
- if (++runningAmountToSample == this.amountToSample) {
- break;
- }
- }
- }
- }
- return (S) result;
- }
-
- private S mapMap(final Map map) {
- final int size = map.size();
- if (size <= this.amountToSample) {
- return (S) map;
- }
- final double individualWeight = 1.0d / size;
- final Map result = new HashMap(this.amountToSample);
- double runningWeight = 0.0d;
- while (result.size() < this.amountToSample) {
- for (final Object obj : map.entrySet()) {
- runningWeight = runningWeight + individualWeight;
- final Map.Entry entry = (Map.Entry) obj;
- if (RANDOM.nextDouble() <= (runningWeight / size)) {
- result.put(entry.getKey(), entry.getValue());
- if (result.size() == this.amountToSample) {
- break;
- }
- }
- }
- }
- return (S) result;
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SelectOneStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SelectOneStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SelectOneStep.java
deleted file mode 100644
index 0e4f8d5..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SelectOneStep.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.util.CollectingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.lambda.IdentityTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class SelectOneStep<S, E> extends MapStep<S, E> implements TraversalParent, EngineDependent {
-
- private final String selectLabel;
- private Traversal.Admin<Object, Object> selectTraversal = new IdentityTraversal<>();
- private boolean requiresPaths = false;
-
- public SelectOneStep(final Traversal.Admin traversal, final String selectLabel) {
- super(traversal);
- this.selectLabel = selectLabel;
- }
-
- @Override
- protected E map(final Traverser.Admin<S> traverser) {
- final S start = traverser.get();
- if (start instanceof Map && ((Map) start).containsKey(this.selectLabel))
- return (E) TraversalUtil.apply(((Map) start).get(this.selectLabel), this.selectTraversal);
- else
- return (E) TraversalUtil.apply(traverser.path().<Object>get(this.selectLabel), this.selectTraversal);
- }
-
- @Override
- public void onEngine(final TraversalEngine traversalEngine) {
- this.requiresPaths = traversalEngine.isComputer() ?
- TraversalHelper.getLabelsUpTo(this, this.traversal.asAdmin()).stream().filter(this.selectLabel::equals).findAny().isPresent() :
- TraversalHelper.getStepsUpTo(this, this.traversal.asAdmin()).stream()
- .filter(step -> step instanceof CollectingBarrierStep)
- .filter(step -> TraversalHelper.getLabelsUpTo(step, this.traversal.asAdmin()).stream().filter(this.selectLabel::equals).findAny().isPresent()
- || (step.getLabel().isPresent() && this.selectLabel.equals(step.getLabel().get()))) // TODO: get rid of this (there is a test case to check it)
- .findAny().isPresent() ||
- TraversalHelper.getStepsUpTo(this, this.traversal.asAdmin()).stream().
- filter(step -> step instanceof TraversalParent).findAny().isPresent();
- }
-
- @Override
- public String toString() {
- return TraversalHelper.makeStepString(this, this.selectLabel, this.selectTraversal);
- }
-
- @Override
- public SelectOneStep<S, E> clone() {
- final SelectOneStep<S, E> clone = (SelectOneStep<S, E>) super.clone();
- clone.selectTraversal = this.selectTraversal.clone();
- return clone;
- }
-
- @Override
- public List<Traversal.Admin<Object, Object>> getLocalChildren() {
- return Collections.singletonList(this.selectTraversal);
- }
-
- @Override
- public void addLocalChild(final Traversal.Admin<?, ?> selectTraversal) {
- this.selectTraversal = this.integrateChild(selectTraversal);
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- final Set<TraverserRequirement> requirements = this.getSelfAndChildRequirements(TraverserRequirement.OBJECT, TraverserRequirement.PATH_ACCESS);
- if (this.requiresPaths) requirements.add(TraverserRequirement.PATH);
- return requirements;
- }
-}
-
-
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SelectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SelectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SelectStep.java
deleted file mode 100644
index 707950e..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SelectStep.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Path;
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.util.CollectingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class SelectStep<S, E> extends MapStep<S, Map<String, E>> implements TraversalParent, EngineDependent {
-
- protected TraversalRing<Object, Object> traversalRing = new TraversalRing<>();
- private final List<String> selectLabels;
- private boolean requiresPaths = false;
-
- public SelectStep(final Traversal.Admin traversal, final String... selectLabels) {
- super(traversal);
- this.selectLabels = selectLabels.length == 0 ? TraversalHelper.getLabelsUpTo(this, this.traversal) : Arrays.asList(selectLabels);
- }
-
- @Override
- protected Map<String, E> map(final Traverser.Admin<S> traverser) {
- final S start = traverser.get();
- final Map<String, E> bindings = new LinkedHashMap<>();
-
- ////// PROCESS STEP BINDINGS
- final Path path = traverser.path();
- this.selectLabels.forEach(label -> {
- if (path.hasLabel(label))
- bindings.put(label, (E) TraversalUtil.apply(path.<Object>get(label), this.traversalRing.next()));
- });
-
- ////// PROCESS MAP BINDINGS
- if (start instanceof Map) {
- if (this.selectLabels.isEmpty())
- ((Map<String, Object>) start).forEach((k, v) -> bindings.put(k, (E) TraversalUtil.apply(v, this.traversalRing.next())));
- else
- this.selectLabels.forEach(label -> {
- if (((Map) start).containsKey(label))
- bindings.put(label, (E) TraversalUtil.apply(((Map) start).get(label), this.traversalRing.next()));
- });
- }
-
- this.traversalRing.reset();
- return bindings;
- }
-
- @Override
- public void reset() {
- super.reset();
- this.traversalRing.reset();
- }
-
- @Override
- public void onEngine(final TraversalEngine traversalEngine) {
- this.requiresPaths = traversalEngine.isComputer() ?
- TraversalHelper.getLabelsUpTo(this, this.traversal.asAdmin()).stream().filter(this.selectLabels::contains).findAny().isPresent() :
- TraversalHelper.getStepsUpTo(this, this.traversal.asAdmin()).stream()
- .filter(step -> step instanceof CollectingBarrierStep)
- .filter(step -> TraversalHelper.getLabelsUpTo(step, this.traversal.asAdmin()).stream().filter(this.selectLabels::contains).findAny().isPresent()
- || (step.getLabel().isPresent() && this.selectLabels.contains(step.getLabel().get()))) // TODO: get rid of this (there is a test case to check it)
- .findAny().isPresent() ||
- TraversalHelper.getStepsUpTo(this, this.traversal.asAdmin()).stream().
- filter(step -> step instanceof TraversalParent).findAny().isPresent();
- }
-
- @Override
- public String toString() {
- return TraversalHelper.makeStepString(this, this.selectLabels, this.traversalRing);
- }
-
- @Override
- public SelectStep<S, E> clone() {
- final SelectStep<S, E> clone = (SelectStep<S, E>) super.clone();
- clone.traversalRing = new TraversalRing<>();
- for (final Traversal.Admin<Object, Object> traversal : this.traversalRing.getTraversals()) {
- clone.traversalRing.addTraversal(clone.integrateChild(traversal.clone()));
- }
- return clone;
- }
-
- @Override
- public List<Traversal.Admin<Object, Object>> getLocalChildren() {
- return this.traversalRing.getTraversals();
- }
-
- @Override
- public void addLocalChild(final Traversal.Admin<?, ?> selectTraversal) {
- this.traversalRing.addTraversal(this.integrateChild(selectTraversal));
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- final Set<TraverserRequirement> requirements = this.getSelfAndChildRequirements(TraverserRequirement.OBJECT, TraverserRequirement.PATH_ACCESS);
- if (this.requiresPaths) requirements.add(TraverserRequirement.PATH);
- return requirements;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumGlobalStep.java
deleted file mode 100644
index 920c18c..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumGlobalStep.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.util.ReducingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
-
-import java.io.Serializable;
-import java.util.EnumSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.function.BiFunction;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class SumGlobalStep extends ReducingBarrierStep<Number, Double> implements MapReducer {
-
- private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(
- TraverserRequirement.BULK,
- TraverserRequirement.OBJECT
- );
-
- public SumGlobalStep(final Traversal.Admin traversal) {
- super(traversal);
- this.setSeedSupplier(new ConstantSupplier<>(0.0d));
- this.setBiFunction(SumGlobalBiFunction.instance());
- }
-
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return REQUIREMENTS;
- }
-
- @Override
- public MapReduce<MapReduce.NullObject, Number, MapReduce.NullObject, Number, Number> getMapReduce() {
- return SumGlobalMapReduce.instance();
- }
-
- /////
-
- private static class SumGlobalBiFunction<S extends Number> implements BiFunction<Double, Traverser<S>, Double>, Serializable {
-
- private static final SumGlobalBiFunction INSTANCE = new SumGlobalBiFunction();
-
- private SumGlobalBiFunction() {
-
- }
-
- @Override
- public Double apply(final Double mutatingSeed, final Traverser<S> traverser) {
- return mutatingSeed + (traverser.get().doubleValue() * traverser.bulk());
- }
-
- public final static <S extends Number> SumGlobalBiFunction<S> instance() {
- return INSTANCE;
- }
- }
-
- ///////////
-
- private static class SumGlobalMapReduce extends StaticMapReduce<MapReduce.NullObject, Number, MapReduce.NullObject, Number, Number> {
-
- private static final SumGlobalMapReduce INSTANCE = new SumGlobalMapReduce();
-
- private SumGlobalMapReduce() {
-
- }
-
- @Override
- public boolean doStage(final MapReduce.Stage stage) {
- return true;
- }
-
- @Override
- public void map(final Vertex vertex, final MapEmitter<NullObject, Number> emitter) {
- vertex.<TraverserSet<Number>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(traverser -> emitter.emit(traverser.get().doubleValue() * traverser.bulk())));
- }
-
- @Override
- public void combine(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
- this.reduce(key, values, emitter);
- }
-
- @Override
- public void reduce(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
- if (values.hasNext()) {
- Number sum = values.next();
- while (values.hasNext()) {
- sum = sum.doubleValue() + values.next().doubleValue();
- }
- emitter.emit(sum);
- }
- }
-
- @Override
- public String getMemoryKey() {
- return REDUCING;
- }
-
- @Override
- public Number generateFinalResult(final Iterator<KeyValue<NullObject, Number>> keyValues) {
- return keyValues.hasNext() ? keyValues.next().getValue() : 0.0d;
- }
-
- public static final SumGlobalMapReduce instance() {
- return INSTANCE;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java
deleted file mode 100644
index d88a209..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/map/SumLocalStep.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.tinkerpop.gremlin.process.graph.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-public final class SumLocalStep<E extends Number, S extends Iterable<E>> extends MapStep<S, E> {
-
- public SumLocalStep(final Traversal.Admin traversal) {
- super(traversal);
- }
-
- @Override
- protected E map(final Traverser.Admin<S> traverser) {
- Number result;
- final Iterator<E> iterator = traverser.get().iterator();
- if (iterator.hasNext()) {
- result = iterator.next();
- while (iterator.hasNext()) {
- result = result.doubleValue() + iterator.next().doubleValue();
- }
- } else {
- result = 0.0d;
- }
- return (E) result;
- }
-
- @Override
- public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.OBJECT);
- }
-}