private Filter createFilterForSpringPoint(Distance distance, Point point, double meters) { DistanceFromPoint distanceFromPoint = new DistanceFromPoint(point.getX(), point.getY(), distance.getValue() * meters); DistanceComparison distanceComparison = new DistanceComparison(distanceFromPoint); Filter filter = new Filter(distanceComparison, ComparisonOperator.LESS_THAN); filter.setOwnerEntityType(entityType); filter.setBooleanOperator(booleanOperator); filter.setNegated(isNegated()); setNestedAttributes(part, filter); return filter; }
@Test public void toCypher_function() { DistanceComparison function = new DistanceComparison(new DistanceFromPoint(37.4, 112.1, 1000.0)); Filter filter = new Filter(function, ComparisonOperator.LESS_THAN); filter.setBooleanOperator(BooleanOperator.AND); filter.setNegated(true); assertThat(filter.toCypher("n", true)) .isEqualTo( "WHERE NOT(distance(point({latitude: n.latitude, longitude: n.longitude}),point({latitude:{lat}, longitude:{lon}})) < {distance} ) "); }
@Test public void testFindByDistance() { DistanceComparison function = new DistanceComparison(new DistanceFromPoint(37.4d, 112.9d, 1000.0d)); Filters filters = new Filters().add(new Filter(function, ComparisonOperator.EQUALS)); String statement = queryStatements.findByType("Restaurant", filters, 4).getStatement(); assertThat(statement).isEqualTo( "MATCH (n:`Restaurant`) WHERE distance(point({latitude: n.latitude, longitude: n.longitude}),point({latitude:{lat}, longitude:{lon}})) = {distance} WITH n MATCH p=(n)-[*0..4]-(m) RETURN p, ID(n)"); }
@Test public void shouldQueryByDistanceUsingFilter() { Restaurant restaurant = new Restaurant("San Francisco International Airport (SFO)", new Location(37.61649, -122.38681), 94128); session.save(restaurant); session.clear(); Filter filter = new Filter(new DistanceComparison(new DistanceFromPoint(37.61649, -122.38681, 1000 * 1000.0)), ComparisonOperator.LESS_THAN); Collection<Restaurant> found = session.loadAll(Restaurant.class, filter); assertThat(found).isNotNull(); assertThat(found.size() >= 1).isTrue(); }
DistanceFromPoint distanceFromPoint = new DistanceFromPoint(point.getX(), point.getY(), distance.getValue() * meters); DistanceComparison distanceComparison = new DistanceComparison(distanceFromPoint);