![JAR search and dependency download from the Maven repository](/logo.png)
org.unipop.process.vertex.UniGraphVertexStep Maven / Gradle / Ivy
package org.unipop.process.vertex;
import org.apache.tinkerpop.gremlin.process.traversal.step.Profiling;
import org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics;
import org.apache.tinkerpop.gremlin.structure.util.Attachable;
import org.javatuples.Pair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.unipop.process.UniPredicatesStep;
import org.unipop.process.order.Orderable;
import org.unipop.query.StepDescriptor;
import org.unipop.process.predicate.ReceivesPredicatesHolder;
import org.apache.tinkerpop.gremlin.process.traversal.*;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.*;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.structure.*;
import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
import org.apache.tinkerpop.gremlin.util.iterator.EmptyIterator;
import org.unipop.util.ConversionUtils;
import org.unipop.query.controller.ControllerManager;
import org.unipop.query.predicates.PredicatesHolder;
import org.unipop.query.predicates.PredicatesHolderFactory;
import org.unipop.query.search.DeferredVertexQuery;
import org.unipop.query.search.SearchVertexQuery;
import org.unipop.schema.reference.DeferredVertex;
import org.unipop.structure.UniGraph;
import org.unipop.structure.UniVertex;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class UniGraphVertexStep extends UniPredicatesStep implements ReceivesPredicatesHolder, Orderable, Profiling{
private static final Logger logger = LoggerFactory.getLogger(UniGraphVertexStep.class);
private final boolean returnsVertex;
private final Direction direction;
private Class returnClass;
private String[] edgeLabels = new String[0];
private int limit;
private PredicatesHolder predicates = PredicatesHolderFactory.empty();
private StepDescriptor stepDescriptor;
private List controllers;
private List deferredVertexControllers;
private List> orders;
public UniGraphVertexStep(VertexStep vertexStep, UniGraph graph, ControllerManager controllerManager) {
super(vertexStep.getTraversal(), graph);
vertexStep.getLabels().forEach(this::addLabel);
this.direction = vertexStep.getDirection();
this.returnClass = vertexStep.getReturnClass();
this.returnsVertex = vertexStep.returnsVertex();
if (vertexStep.getEdgeLabels().length > 0) {
this.edgeLabels = vertexStep.getEdgeLabels();
HasContainer labelsPredicate = new HasContainer(T.label.getAccessor(), P.within(vertexStep.getEdgeLabels()));
this.predicates = PredicatesHolderFactory.predicate(labelsPredicate);
} else this.predicates = PredicatesHolderFactory.empty();
this.controllers = controllerManager.getControllers(SearchVertexQuery.SearchVertexController.class);
this.deferredVertexControllers = controllerManager.getControllers(DeferredVertexQuery.DeferredVertexController.class);
this.stepDescriptor = new StepDescriptor(this);
limit = -1;
}
@Override
protected Iterator> process(List> traversers) {
Map
© 2015 - 2025 Weber Informatics LLC | Privacy Policy