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;
}