private GraphTraversal createFilterForLabel()

in src/main/java/com/amazonaws/services/neptune/propertygraph/SpecifiedLabels.java [84:121]


    private GraphTraversal<? extends Element, ?> createFilterForLabel(Label label, GraphTraversal<? extends Element, ?> t) {


        for (String labelValue : label.labels()) {
            if (t == null) {
                t = hasLabel(labelValue);
            } else {
                t = t.hasLabel(labelValue);
            }
        }

        if (labelStrategy == EdgeLabelStrategy.edgeAndVertexLabels) {
            if (label.hasFromAndToLabels()) {
                List<Traversal<?, ?>> traversals = new ArrayList<>();

                GraphTraversal<? extends Element, ?> startVertex = outV();
                startVertex = createFilterForLabel(label.fromLabels(), startVertex);
                traversals.add(startVertex);

                GraphTraversal<? extends Element, ?> endVertex = inV();
                endVertex = createFilterForLabel(label.toLabels(), endVertex);
                traversals.add(endVertex);

                t = t.where(and(traversals.toArray(new Traversal<?, ?>[]{})));
            } else if (label.hasFromLabels()) {
                GraphTraversal<? extends Element, ?> startVertex = outV();
                startVertex = createFilterForLabel(label.fromLabels(), startVertex);
                t = t.where(startVertex);
            } else if (label.hasToLabels()) {
                GraphTraversal<? extends Element, ?> endVertex = inV();
                endVertex = createFilterForLabel(label.toLabels(), endVertex);
                t = t.where(endVertex);
            }
        }


        return t;
    }