private CriteriaContainer collect(final CriteriaJoin cj, final Criteria... criteria) { final CriteriaContainerImpl parent = new CriteriaContainerImpl(query, cj); for (final Criteria c : criteria) { parent.add(c); } add(parent); return parent; } }
@Override public CriteriaContainer and(final Criteria... criteria) { return collect(CriteriaJoin.AND, criteria); }
@Override public T intersects(final Geometry geometry) { target.add(new StandardGeoFieldCriteria(query, field, INTERSECTS, geometry, null)); return target; }
@Override public FieldEnd<? extends CriteriaContainerImpl> criteria(final String field) { final CriteriaContainerImpl container = new CriteriaContainerImpl(this, CriteriaJoin.AND); add(container); return new FieldEndImpl<CriteriaContainerImpl>(this, field, container); }
@Override public T within(final Polygon boundary, final CoordinateReferenceSystem crs) { target.add(new StandardGeoFieldCriteria(query, field, GEO_WITHIN, boundary, null, crs)); return target; }
@Override public T near(final Point point, final int maxDistance) { target.add(new StandardGeoFieldCriteria(query, field, FilterOperator.NEAR, point, maxDistance)); return target; }
@Override public CriteriaContainer or(final Criteria... criteria) { return collect(CriteriaJoin.OR, criteria); }
@Override public T within(final MultiPolygon boundaries, final CoordinateReferenceSystem crs) { target.add(new StandardGeoFieldCriteria(query, field, GEO_WITHIN, boundaries, null, crs)); return target; }
@Override public T near(final Point point) { target.add(new StandardGeoFieldCriteria(query, field, FilterOperator.NEAR, point, null)); return target; }
@Override public T intersects(final Geometry geometry, final CoordinateReferenceSystem crs) { target.add(new StandardGeoFieldCriteria(query, field, INTERSECTS, geometry, null, crs)); return target; }
@Override public T within(final Polygon boundary) { target.add(new StandardGeoFieldCriteria(query, field, GEO_WITHIN, boundary, null)); return target; }
@Override public T within(final MultiPolygon boundaries) { target.add(new StandardGeoFieldCriteria(query, field, GEO_WITHIN, boundaries, null)); return target; }
private T addCriteria(final FilterOperator op, final Object val, final boolean not) { target.add(new FieldCriteria(query, field, op, val, not)); return target; }
private T addGeoCriteria(final FilterOperator op, final Object val, final Map<String, Object> opts) { if (not) { throw new QueryException("Geospatial queries cannot be negated with 'not'."); } target.add(new GeoFieldCriteria(query, field, op, val, opts)); return target; }