Search in sources :

Example 1 with FunctionalProducer

use of com.vaticle.typedb.core.concurrent.producer.FunctionalProducer in project grakn by graknlabs.

the class GraphProcedure method producer.

@Override
public FunctionalProducer<VertexMap> producer(GraphManager graphMgr, Traversal.Parameters params, Set<Identifier.Variable.Retrievable> filter, int parallelisation) {
    if (LOG.isTraceEnabled()) {
        LOG.trace(params.toString());
        LOG.trace(this.toString());
    }
    assertWithinFilterBounds(filter);
    if (startVertex().id().isRetrievable() && filter.contains(startVertex().id().asVariable().asRetrievable())) {
        return async(startVertex().iterator(graphMgr, params).map(// TODO we can reduce the size of the distinct() set if the traversal engine doesn't overgenerate as much
        v -> new GraphIterator(graphMgr, v, this, params, filter).distinct()), parallelisation);
    } else {
        // TODO we can reduce the size of the distinct() set if the traversal engine doesn't overgenerate as much
        return async(startVertex().iterator(graphMgr, params).map(v -> new GraphIterator(graphMgr, v, this, params, filter)), parallelisation).distinct();
    }
}
Also used : Arrays(java.util.Arrays) ILLEGAL_STATE(com.vaticle.typedb.core.common.exception.ErrorMessage.Internal.ILLEGAL_STATE) Identifier(com.vaticle.typedb.core.traversal.common.Identifier) PlannerVertex(com.vaticle.typedb.core.traversal.planner.PlannerVertex) Producers.async(com.vaticle.typedb.core.concurrent.producer.Producers.async) LoggerFactory(org.slf4j.LoggerFactory) HashMap(java.util.HashMap) GraphPlanner(com.vaticle.typedb.core.traversal.planner.GraphPlanner) Reference(com.vaticle.typeql.lang.pattern.variable.Reference) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Map(java.util.Map) FunctionalProducer(com.vaticle.typedb.core.concurrent.producer.FunctionalProducer) Traversal(com.vaticle.typedb.core.traversal.Traversal) Label(com.vaticle.typedb.core.common.parameters.Label) Encoding(com.vaticle.typedb.core.graph.common.Encoding) GraphManager(com.vaticle.typedb.core.graph.GraphManager) VertexMap(com.vaticle.typedb.core.traversal.common.VertexMap) Logger(org.slf4j.Logger) FunctionalIterator(com.vaticle.typedb.core.common.iterator.FunctionalIterator) PlannerEdge(com.vaticle.typedb.core.traversal.planner.PlannerEdge) Predicate(com.vaticle.typedb.core.traversal.predicate.Predicate) Set(java.util.Set) GraphIterator(com.vaticle.typedb.core.traversal.scanner.GraphIterator) Objects(java.util.Objects) List(java.util.List) Iterators.iterate(com.vaticle.typedb.core.common.iterator.Iterators.iterate) TypeDBException(com.vaticle.typedb.core.common.exception.TypeDBException) Comparator(java.util.Comparator) GraphIterator(com.vaticle.typedb.core.traversal.scanner.GraphIterator)

Aggregations

ILLEGAL_STATE (com.vaticle.typedb.core.common.exception.ErrorMessage.Internal.ILLEGAL_STATE)1 TypeDBException (com.vaticle.typedb.core.common.exception.TypeDBException)1 FunctionalIterator (com.vaticle.typedb.core.common.iterator.FunctionalIterator)1 Iterators.iterate (com.vaticle.typedb.core.common.iterator.Iterators.iterate)1 Label (com.vaticle.typedb.core.common.parameters.Label)1 FunctionalProducer (com.vaticle.typedb.core.concurrent.producer.FunctionalProducer)1 Producers.async (com.vaticle.typedb.core.concurrent.producer.Producers.async)1 GraphManager (com.vaticle.typedb.core.graph.GraphManager)1 Encoding (com.vaticle.typedb.core.graph.common.Encoding)1 Traversal (com.vaticle.typedb.core.traversal.Traversal)1 Identifier (com.vaticle.typedb.core.traversal.common.Identifier)1 VertexMap (com.vaticle.typedb.core.traversal.common.VertexMap)1 GraphPlanner (com.vaticle.typedb.core.traversal.planner.GraphPlanner)1 PlannerEdge (com.vaticle.typedb.core.traversal.planner.PlannerEdge)1 PlannerVertex (com.vaticle.typedb.core.traversal.planner.PlannerVertex)1 Predicate (com.vaticle.typedb.core.traversal.predicate.Predicate)1 GraphIterator (com.vaticle.typedb.core.traversal.scanner.GraphIterator)1 Reference (com.vaticle.typeql.lang.pattern.variable.Reference)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1