@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Query that = (Query) o; return Arrays.equals(this.getFragments(), that.getFragments()) && this.getSubTrees().equals(that.getSubTrees()); }
public Read(TraversalContext<BE, Relationship> context) { super(context); QueryFragment[] filters = context.selectCandidates.getFragments(); if (filters.length == 0) { direction = Relationships.Direction.outgoing; } else { direction = ((SwitchElementType) filters[filters.length - 1].getFilter()).getDirection(); } }
public ReadWrite(TraversalContext<BE, Relationship> context, Class<? extends Entity<?, ?>> originEntityType) { super(context); QueryFragment[] filters = context.selectCandidates.getFragments(); direction = ((SwitchElementType) filters[filters.length - 1].getFilter()).getDirection(); this.originEntityType = originEntityType; }
private static void addPathsToLeaves(Query tree, List<Filter[]> workingPath, List<List<Filter>> results) { if (tree.getSubTrees().isEmpty()) { //this is the leaf List<Filter> pathToLeaf = new ArrayList<>(); Consumer<Filter> addOps = (f) -> { if (!(f instanceof NoopFilter)) { pathToLeaf.add(f); } }; for (Filter[] fs : workingPath) { Arrays.asList(fs).forEach(addOps); } Arrays.asList(filters(tree.getFragments())).forEach(addOps); results.add(pathToLeaf); } else { workingPath.add(filters(tree.getFragments())); for (Query subTree : tree.getSubTrees()) { addPathsToLeaves(subTree, workingPath, results); } workingPath.remove(workingPath.size() - 1); } }
for (QueryFragment qf : query.getFragments()) { boolean thisIsFilter = qf instanceof FilterFragment;
private GraphTraversal<?, ? extends Element> translate(Element startingPoint, Query query) { GraphTraversal<?, ? extends Element> q; if (startingPoint == null) { Filter first = query.getFragments()[0].getFilter(); if (first instanceof RelationFilter) { q = context.getGraph().traversal().E(); } else if (first instanceof With.CanonicalPaths) { //XXX this does NOT handle the situation where we mix relationships and entities in one filter SegmentType elementType = ((With.CanonicalPaths) first).getPaths()[0].getSegment().getElementType(); if (SegmentType.rl == elementType) { q = context.getGraph().traversal().E(); } else { q = context.getGraph().traversal().V(); } } else { q = context.getGraph().traversal().V(); } } else { q = startingPoint instanceof Vertex ? context.getGraph().traversal().V(startingPoint) : context.getGraph().traversal().E(startingPoint); } FilterApplicator.applyAll(query, q); return q; }