return CompositeFilterOperator.or(filtersArray);
@Test public void testSetFilterRating() { Query query = new Query(kindName, rootKey); List<Filter> filterList = new ArrayList<>(); filterList.add(Query.FilterOperator.LESS_THAN.of("ratingData", new Rating(30))); filterList.add(Query.FilterOperator.GREATER_THAN.of("ratingData", new Rating(0))); Filter filter1 = Query.CompositeFilterOperator.or(filterList); Filter filter2 = Query.FilterOperator.EQUAL.of("ratingData", new Rating(20)); query.setFilter(Query.CompositeFilterOperator.and(filter1, filter2)); assertEquals(1, service.prepare(query).countEntities(fo)); }
@Test public void testWithPropertyProjection() { Query query = new Query(kindName, rootKey); query.addProjection(new PropertyProjection("geoptData", GeoPt.class)); Filter filter1 = Query.CompositeFilterOperator.or( Query.FilterOperator.LESS_THAN.of("intList", 5), Query.FilterOperator.GREATER_THAN.of("intList", 90)); Filter filter2 = Query.FilterOperator.EQUAL.of("intList", 52); query.setFilter(Query.CompositeFilterOperator.and(filter1, filter2)); // sql statement String sql = "SELECT geoptData FROM " + kindName; sql += " WHERE ((intList < 5 or intList > 90) AND intList = 52)"; sql += " AND __ancestor__ is " + rootKey; assertEquals(sql.toLowerCase(), query.toString().toLowerCase()); // check query result List<Entity> results = service.prepare(query).asList(fo); Assert.assertTrue(results.size() > 0); assertEquals(new GeoPt((float) (2.12), (float) (2.98)), results.get(0).getProperty("geoptData")); for (Entity e : results) { assertEquals(1, e.getProperties().size()); assertTrue(e.getProperties().containsKey("geoptData")); } }
@Test public void testSetFilterString() { Query query = new Query(kindName, rootKey); Filter filter = Query.CompositeFilterOperator.or( Query.FilterOperator.GREATER_THAN.of("stringData", "string data2"), Query.FilterOperator.LESS_THAN.of("stringData", "string data1")); query.setFilter(filter); assertEquals(1, service.prepare(query).countEntities(fo)); }
@Test public void testSetFilterShortBlob() { Query query = new Query(kindName, rootKey); Filter filter1 = Query.FilterOperator.EQUAL.of("shortBlobData", new ShortBlob("shortBlobData0".getBytes())); Filter filter2 = Query.FilterOperator.LESS_THAN_OR_EQUAL.of("shortBlobData", new ShortBlob("shortBlobData1".getBytes())); query.setFilter(Query.CompositeFilterOperator.or(filter1, filter2)); assertEquals(2, service.prepare(query).countEntities(fo)); }