use of io.arlas.server.core.model.request.Filter in project ARLAS-server by gisaia.
the class ElasticWFSToolService method addCollectionFilter.
private void addCollectionFilter(ElasticFluidSearch fluidSearch, CollectionReference collectionReference) throws ArlasException {
Filter collectionFilter = collectionReference.params.filter;
exploreServices.applyFilter(collectionFilter, fluidSearch);
wfsQuery.filter(fluidSearch.getBoolQueryBuilder());
}
use of io.arlas.server.core.model.request.Filter in project ARLAS-server by gisaia.
the class AbstractFilteredTest method testCollectionFilter.
@Test
public void testCollectionFilter() throws Exception {
// );
request.filter.f = Arrays.asList(new MultiValueFilter<>(new Expression("params.job", OperatorEnum.eq, DataSetTool.jobs[1])));
RequestSpecification req = givenFilterableRequestBody();
handleNotMatchingRequest(req.body(handlePostRequest(request)).when().post(getUrlPath("geodata_actor")).then());
req = givenFilterableRequestParams();
for (Pair<String, String> extraParam : this.extraParams) {
req = req.param(extraParam.getKey(), extraParam.getValue());
}
handleNotMatchingRequest(req.param("f", request.filter.f.get(0).get(0).toString()).when().get(getUrlPath("geodata_actor")).then());
request.filter = new Filter();
// ("job:eq:" + DataSetTool.jobs[0]);
request.filter.f = Arrays.asList(new MultiValueFilter<>(new Expression("params.job", OperatorEnum.eq, DataSetTool.jobs[0])));
req = givenFilterableRequestBody();
handleFieldFilter(get("f", request.filter.f.get(0).get(0).toString()), 59, "Actor");
handleFieldFilter(header(request.filter), 59, "Actor");
handleFieldFilter(req.body(handlePostRequest(request)).when().post(getUrlPath("geodata_actor")).then(), 59, "Actor");
req = givenFilterableRequestParams();
for (Pair<String, String> extraParam : this.extraParams) {
req = req.param(extraParam.getKey(), extraParam.getValue());
}
handleFieldFilter(req.param("f", request.filter.f.get(0).get(0).toString()).when().get(getUrlPath("geodata_actor")).then(), 59, "Actor");
request.filter = new Filter();
}
use of io.arlas.server.core.model.request.Filter in project ARLAS-server by gisaia.
the class AbstractFilteredTest method testFieldFilterWithCollectionBasedColumnFiltering.
@Test
public void testFieldFilterWithCollectionBasedColumnFiltering() throws Exception {
request.filter.f = Arrays.asList(new MultiValueFilter<>(new Expression("params.job", OperatorEnum.eq, DataSetTool.jobs[0])));
handleFieldFilter(post(request, "column-filter", "params.job"), 59, "Actor");
handleFieldFilter(get("f", request.filter.f.get(0).get(0).toString(), "column-filter", "params.job"), 59, "Actor");
handleFieldFilter(post(request, "column-filter", COLLECTION_NAME + ":params.job"), 59, "Actor");
handleFieldFilter(get("f", request.filter.f.get(0).get(0).toString(), "column-filter", COLLECTION_NAME + ":params.job"), 59, "Actor");
handleUnavailableColumn(post(request, "column-filter", "fullname,notExisting:params.job"));
handleUnavailableColumn(get("f", request.filter.f.get(0).get(0).toString(), "column-filter", "fullname,notExisting:params.job"));
handleUnavailableCollection(post(request, "column-filter", "notExisting:params.job"));
handleUnavailableCollection(get("f", request.filter.f.get(0).get(0).toString(), "column-filter", "notExisting:params.job"));
request.filter = new Filter();
}
use of io.arlas.server.core.model.request.Filter in project ARLAS-server by gisaia.
the class AbstractFilteredTest method testQueryFilterWithCollectionBasedColumnFiltering.
@Test
public void testQueryFilterWithCollectionBasedColumnFiltering() throws Exception {
request.filter = new Filter();
request.filter.q = Arrays.asList(new MultiValueFilter<>("fullname:My name is"));
handleMatchingQueryFilter(post(request, "column-filter", "fullname*"), 595);
handleMatchingQueryFilter(get("q", request.filter.q.get(0).get(0), "column-filter", "fullname*"), 595);
handleMatchingQueryFilter(post(request, "column-filter", COLLECTION_NAME + ":fullname*"), 595);
handleMatchingQueryFilter(get("q", request.filter.q.get(0).get(0), "column-filter", COLLECTION_NAME + ":fullname*"), 595);
handleUnavailableColumn(post(request, "column-filter", "params,notExisting:fullname*"));
handleUnavailableColumn(get("q", request.filter.q.get(0).get(0), "column-filter", "params,notExisting:fullname*"));
handleUnavailableCollection(post(request, "column-filter", "notExisting:fullname*"));
handleUnavailableCollection(get("q", request.filter.q.get(0).get(0), "column-filter", "notExisting:fullname*"));
}
use of io.arlas.server.core.model.request.Filter in project ARLAS-server by gisaia.
the class AbstractFilteredTest method testMixedFilter.
@Test
public void testMixedFilter() throws Exception {
// valid bbox from WFS OGC SPEC = lower longitude , lower latitude , upper longitude , upper latitude
// valid bbox for ARLAS classic bbox = lat top, long left, lat bottom, long right
request.filter.f = // "job:eq:Architect"
Arrays.asList(// "job:eq:Architect"
new MultiValueFilter<>(new Expression("params.job", OperatorEnum.eq, "Architect")), new MultiValueFilter<>(new Expression("params.startdate", OperatorEnum.range, "[1009799<2000000]")), new MultiValueFilter<>(new Expression("geo_params.centroid", OperatorEnum.within, "-50,-50,50,50")), new MultiValueFilter<>(new Expression("geo_params.geometry", OperatorEnum.within, "-30,-30,30,30")), new MultiValueFilter<>(new Expression("geo_params.geometry", OperatorEnum.intersects, "POLYGON((-20 20, 20 20, 20 -20, -20 -20, -20 20))")));
Filter filterHeader = new Filter();
filterHeader.f = Arrays.asList(new MultiValueFilter<>(new Expression("params.startdate", OperatorEnum.range, "[0<1009801]")), new MultiValueFilter<>(new Expression("geo_params.centroid", OperatorEnum.notwithin, "20,-50,60,50")), new MultiValueFilter<>(new Expression("geo_params.geometry", OperatorEnum.notwithin, "POLYGON((-50 50,-20 50, -20 -50, -50 -50,-50 50))")), new MultiValueFilter<>(new Expression("geo_params.geometry", OperatorEnum.notintersects, "POLYGON((-30 -10,30 10, 30 -30, -30 -30,-30 -10))")));
handleComplexFilter(givenFilterableRequestParams().header("partition-filter", objectMapper.writeValueAsString(filterHeader)).header("column-filter", "params.job,params.city,params.country").param("f", new Expression("params.job", OperatorEnum.eq, "Architect").toString()).param("f", new Expression("params.startdate", OperatorEnum.range, "[1009799<2000000]").toString()).param("f", request.filter.f.get(2).get(0).toString()).param("f", request.filter.f.get(3).get(0).toString()).param("f", request.filter.f.get(4).get(0).toString()).when().get(getUrlPath("geodata")).then());
handleComplexFilter(post(request, "partition-filter", objectMapper.writeValueAsString(filterHeader), "column-filter", "params.job,params.city,params.country"));
filterHeader.f = Arrays.asList(new MultiValueFilter<>(new Expression("params.job", OperatorEnum.eq, "Actor")));
handleNotMatchingRequest(givenFilterableRequestParams().header("partition-filter", objectMapper.writeValueAsString(filterHeader)).header("column-filter", // an empty column filter is not considered
"").param("f", (new Expression("params.job", OperatorEnum.eq, "Architect")).toString()).when().get(getUrlPath("geodata")).then());
handleNotMatchingRequest(givenFilterableRequestBody().body(request).header("partition-filter", objectMapper.writeValueAsString(filterHeader)).header("column-filter", // an empty column filter is not considered
"").when().post(getUrlPath("geodata")).then());
request.filter = new Filter();
}
Aggregations