@Override public String build(String label, int depth) { return build("r", label, depth); }
@Override public PagingAndSortingQuery findOne(ID id, int depth) { return findOneByType("", id, depth); }
@Override public String build(String label, int depth) { return build("r0", label, depth); }
@Test public void testMultipleSortOrders() { String cypher = "MATCH (n:`Raptor`) WITH n ORDER BY n.age DESC,n.name DESC RETURN n"; check(cypher, query.findByType("Raptor", 0).setSortOrder(sortOrder.add(DESC, "age", "name")).getStatement()); check(cypher, query.findByType("Raptor", 0).setSortOrder(new SortOrder(DESC, "age", "name")).getStatement()); check(cypher, query.findByType("Raptor", 0).setSortOrder(new SortOrder().desc("age", "name")).getStatement()); }
private DeleteStatements getDeleteStatementsBasedOnType(Class type) { if (session.metaData().isRelationshipEntity(type.getName())) { return new RelationshipDeleteStatements(); } return new NodeDeleteStatements(); }
@Test public void buildQueryFromPerson() throws Exception { SchemaNodeLoadClauseBuilder queryBuilder = createQueryBuilder(); String query = queryBuilder.build("n", "Person", 2); assertThat(query).isEqualTo(" RETURN n,[ " + "[ (n)-[r_f1:`FOUNDED`]->(o1:`Organisation`) | [ r_f1, o1 ] ], " + "[ (n)-[r_e1:`EMPLOYED_BY`]->(o1:`Organisation`) | [ r_e1, o1 ] ], " + "[ (n)-[r_l1:`LIVES_AT`]->(l1:`Location`) | [ r_l1, l1, " + "[ [ (l1)<-[r_l2:`LIVES_AT`]-(p2:`Person`) | [ r_l2, p2 ] ] ] " + "] ] " + "]"); }
private LoadClauseBuilder loadNodeClauseBuilder(int depth) { if (depth < 0) { return new PathNodeLoadClauseBuilder(); } switch (loadStrategy) { case PATH_LOAD_STRATEGY: return new PathNodeLoadClauseBuilder(); case SCHEMA_LOAD_STRATEGY: return new SchemaNodeLoadClauseBuilder(metaData.getSchema()); default: throw new IllegalStateException("Unknown loadStrategy " + loadStrategy); } }
public NodeQueryStatements() { loadClauseBuilder = new PathNodeLoadClauseBuilder(); }
public RelationshipQueryStatements() { loadClauseBuilder = new PathRelationshipLoadClauseBuilder(); }
@Before public void setUp() throws Exception { builder = createLoadClauseBuilder(); }
@Test public void testDefaultMultipleSortOrders() { String cypher = "MATCH (n:`Raptor`) WITH n ORDER BY n.age,n.name RETURN n"; check(cypher, query.findByType("Raptor", 0).setSortOrder(sortOrder.add("age", "name")).getStatement()); check(cypher, query.findByType("Raptor", 0).setSortOrder(new SortOrder("age", "name")).getStatement()); check(cypher, query.findByType("Raptor", 0).setSortOrder(new SortOrder().asc("age", "name")).getStatement()); }
@Test public void buildQuery() throws Exception { SchemaNodeLoadClauseBuilder queryBuilder = createQueryBuilder(); String query = queryBuilder.build("n", "Person", 0); assertThat(query).isEqualTo(" RETURN n"); }
@Test(expected = IllegalArgumentException.class) public void buildClauseDepthZeroNotAllowed() { builder.build("r", "FRIEND_OF", 0); }
@Test public void testFindByTypeDepthInfinite() { sortOrder.add(DESC, "name"); check("MATCH (n:`Raptor`) WITH n ORDER BY n.name DESC MATCH p=(n)-[*0..]-(m) RETURN p, ID(n)", query.findByType("Raptor", -1).setSortOrder(sortOrder).getStatement()); }
@Test public void buildQueryFromLocation() throws Exception { SchemaNodeLoadClauseBuilder queryBuilder = createQueryBuilder(); String query = queryBuilder.build("n", "Location", 1); assertThat(query).isEqualTo(" RETURN n,[ [ (n)<-[r_l1:`LIVES_AT`]-(p1:`Person`) | [ r_l1, p1 ] ] ]"); }
@Test public void testFindByType() { sortOrder.add("name"); check("MATCH (n:`Raptor`) WITH n ORDER BY n.name MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)", query.findByType("Raptor", 1).setSortOrder(sortOrder).getStatement()); }
@Test public void givenNodeWithNoRelationships_thenCreateSimpleQuery() throws Exception { SchemaNodeLoadClauseBuilder queryBuilder = createQueryBuilder(); String query = queryBuilder.build("n", "Organisation", 1); assertThat(query).isEqualTo(" RETURN n"); }
@Test public void testFindByTypeDepthZero() { sortOrder.add(DESC, "name"); check("MATCH (n:`Raptor`) WITH n ORDER BY n.name DESC RETURN n", query.findByType("Raptor", 0).setSortOrder(sortOrder).getStatement()); }
@Test public void givenLabelStartingWithR_thenNodeNameAndrelationshipNameShouldNotConflict() throws Exception { SchemaNodeLoadClauseBuilder queryBuilder = createQueryBuilder(); String query = queryBuilder.build("n", "Restaurant", 1); assertThat(query).isEqualTo(" RETURN n,[ [ (n)-[r_s1:`SIMILAR_TO`]->(r1:`Restaurant`) | [ r_s1, r1 ] ] ]"); }
@Test public void testDifferentSortDirections() { sortOrder.add(DESC, "age").add("name"); check("MATCH (n:`Raptor`) WITH n ORDER BY n.age DESC,n.name RETURN n", query.findByType("Raptor", 0).setSortOrder(sortOrder).getStatement()); }