All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.unipop.process.reduce.UniGraphCountStep Maven / Gradle / Ivy

//package org.unipop.process.count;
//
//import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
//import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
//import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
//import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
//import org.apache.tinkerpop.gremlin.structure.Direction;
//import org.apache.tinkerpop.gremlin.structure.Element;
//import org.apache.tinkerpop.gremlin.structure.Vertex;
//import org.unipop.query.UniQuery;
//import org.unipop.query.controller.ControllerManager;
//
//import java.util.*;
//import java.util.stream.Collectors;
//
///**
// * Created by Gilad on 02/11/2015.
// */
//public class UniGraphCountStep extends ReducingBarrierStep {
//    //region Constructor
//    public UniGraphCountStep(Traversal.Admin traversal, Class elementClass, List hasContainers, Object[] ids, String[] edgeLabels, Optional direction, ControllerManager controllerManager) {
//        super(traversal);
//        this.hasContainers = hasContainers;
//        this.controllerManager = controllerManager;
//        this.direction = direction.get();
//        this.elementClass = elementClass;
//        this.bulk = new ArrayList<>();
//
//        List countControllers = controllerManager.getControllers(CountController.class);
//        List edgeCountControllers = controllerManager.getControllers(EdgeCountController.class);
//        UniQuery uniQuery = new UniQuery(null, edgeLabels,ids, hasContainers, 0);
//
//        this.setSeedSupplier(() -> {
//            if (!this.previousStep.equals(EmptyStep.instance())) {
//                return 0L;
//            }
//            return countControllers.stream().collect(Collectors.summingLong(controller -> controller.count(uniQuery)));
//        });
//
//
//        this.setBiFunction((seed, traverser) -> {
//            E element = traverser.get();
//            bulk.add(element);
//
//
//            Long bulkElementCount = 0L;
//            //TODO: configure bulk size dynamically
//            if (bulk.size() > 100 || !this.starts.hasNext()) {
//                Vertex[] vertices = bulk.toArray(new Vertex[0]);
//                bulkElementCount = edgeCountControllers.stream().collect(Collectors.summingLong(edgeController ->
//                        edgeController.count(vertices, this.direction, edgeLabels, uniQuery)));
//                bulk.clear();
//            }
//
//            return seed + bulkElementCount;
//        });
//    }
//    //endregion
//
//    private final List hasContainers;
//    //region Fields
//    private ControllerManager controllerManager;
//    private Direction direction;
//    private Class elementClass;
//    private Collection bulk;
//    //endregion
//}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy