Skip to content

Commit

Permalink
Merge pull request #619 from gisaia/feature/getFilter
Browse files Browse the repository at this point in the history
Add the possibility of getting filter from 'get' parameters
  • Loading branch information
MohamedHamouGisaia authored Mar 26, 2020
2 parents 278c418 + 71cb133 commit d1f1d4c
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 7 deletions.
26 changes: 19 additions & 7 deletions arlas-core/src/main/java/io/arlas/server/utils/ParamsParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,17 @@ public static Filter getFilter(CollectionReference collectionReference,
return getFilter(collectionReference, filters, q, dateFormat, null, null);
}

/**
*
* @param collectionReference collection reference is used to get the type of geometries in geofilters when tileBbox is specified. Can be set to null
* @param filters list of f filters
* @param q list of q filters
* @param dateFormat format of dates values that are used in f and q filters to query dates
* @param tileBbox bounding box of the tile. Used in tiled geosearch
* @param pwithinBbox a `point-within-bbox` expression
* @return Filter objet
* @throws ArlasException
*/
public static Filter getFilter(CollectionReference collectionReference,
List<String> filters, List<String> q, String dateFormat,
BoundingBox tileBbox, Expression pwithinBbox) throws ArlasException {
Expand All @@ -281,19 +292,20 @@ public static Filter getFilter(CollectionReference collectionReference,
String value = String.join(":", Arrays.copyOfRange(operands, 2, operands.length));

if (GEO_OP.contains(OperatorEnum.valueOf(operands[1]))) {
boolean isPwithin = isPwithin(collectionReference, operands[0], operands[1]);
value = getValidGeometry(value);
if (isPwithin && tileBbox != null){
Geometry simplifiedGeometry = GeoTileUtil.bboxIntersects(tileBbox, value);
if (simplifiedGeometry != null) {
value = simplifiedGeometry.toString();
if(tileBbox != null && collectionReference != null) {
boolean isPwithin = isPwithin(collectionReference, operands[0], operands[1]);
if (isPwithin){
Geometry simplifiedGeometry = GeoTileUtil.bboxIntersects(tileBbox, value);
if (simplifiedGeometry != null) {
value = simplifiedGeometry.toString();
}
}
}
}

}
if (value != null) {
Expression expression = new Expression(operands[0], OperatorEnum.valueOf(operands[1]), value);
intersectsToWithin(collectionReference, expression);
multiFilter.add(expression);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ public Response aggregate(
AggregationsRequest aggregationsRequest = new AggregationsRequest();
aggregationsRequest.filter = ParamsParser.getFilter(collectionReference, f, q, dateformat);
aggregationsRequest.aggregations = ParamsParser.getAggregations(agg);
exploreServices.setValidGeoFilters(collectionReference, aggregationsRequest);

ColumnFilterUtil.assertRequestAllowed(columnFilter, collectionReference, aggregationsRequest);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,7 @@ private Response geoaggregate(CollectionReference collectionReference, Filter fi
AggregationsRequest aggregationsRequest = new AggregationsRequest();
aggregationsRequest.filter = filter;
aggregationsRequest.aggregations = ParamsParser.getAggregations(agg);
exploreServices.setValidGeoFilters(collectionReference, aggregationsRequest);

ColumnFilterUtil.assertRequestAllowed(columnFilter, collectionReference, aggregationsRequest);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ public Response compute(
computationRequest.filter = ParamsParser.getFilter(collectionReference, f, q, dateformat);
computationRequest.field = field;
computationRequest.metric = ComputationEnum.fromValue(metric);
exploreServices.setValidGeoFilters(collectionReference, computationRequest);

ColumnFilterUtil.assertRequestAllowed(columnFilter, collectionReference, computationRequest);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ public Response count(

Count count = new Count();
count.filter = ParamsParser.getFilter(collectionReference, f, q, dateformat);
exploreServices.setValidGeoFilters(collectionReference, count);

ColumnFilterUtil.assertRequestAllowed(columnFilter, collectionReference, count);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ public Response range(
RangeRequest rangeRequest = new RangeRequest();
rangeRequest.filter = ParamsParser.getFilter(collectionReference, f, q, dateformat);
rangeRequest.field = field;
exploreServices.setValidGeoFilters(collectionReference, rangeRequest);

ColumnFilterUtil.assertRequestAllowed(columnFilter, collectionReference, rangeRequest);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -499,6 +499,7 @@ private Response geosearch(CollectionReference collectionReference, Filter filte
search.page = ParamsParser.getPage(size, from, sort, after, before);
search.projection = ParamsParser.getProjection(include, exclude);
search.returned_geometries = returned_geometries;
exploreServices.setValidGeoFilters(collectionReference, search);

ColumnFilterUtil.assertRequestAllowed(columnFilter, collectionReference, search);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ public Response search(
search.page = ParamsParser.getPage(size, from, sort,after,before);
search.projection = ParamsParser.getProjection(include, exclude);
search.returned_geometries = returned_geometries;
exploreServices.setValidGeoFilters(collectionReference, search);

ColumnFilterUtil.assertRequestAllowed(columnFilter, collectionReference, search);

Expand Down

0 comments on commit d1f1d4c

Please sign in to comment.