use of io.arlas.server.core.model.request.Filter in project ARLAS-server by gisaia.
the class AbstractFilteredTest method testFieldFilterWithUnavailableColumns.
@Test
public void testFieldFilterWithUnavailableColumns() throws Exception {
request.filter = new Filter();
request.filter.f = Arrays.asList(new MultiValueFilter<>(new Expression("params.job", OperatorEnum.eq, "Architect")));
handleUnavailableColumn(givenFilterableRequestParams().header("column-filter", "params.city").param("f", new Expression("params.job", OperatorEnum.eq, "Architect").toString()).when().get(getUrlPath("geodata")).then());
handleUnavailableColumn(post(request, "column-filter", "params.city"));
// also filter geometry filters
request.filter.f = Arrays.asList(new MultiValueFilter<>(new Expression("geo_params.other_geopoint", OperatorEnum.within, "-5,-5,5,5")));
handleUnavailableColumn(post(request, "column-filter", "fullname"));
handleUnavailableColumn(get("f", request.filter.f.get(0).get(0).toString(), "column-filter", "fullname"));
request.filter = new Filter();
}
use of io.arlas.server.core.model.request.Filter in project ARLAS-server by gisaia.
the class AbstractFilteredTest method testQueryFilterWithUnavailableColumns.
@Test
public void testQueryFilterWithUnavailableColumns() throws Exception {
request.filter = new Filter();
request.filter.q = Arrays.asList(new MultiValueFilter<>("My name is"));
handleUnavailableColumn(post(request, "column-filter", "params.city"));
handleUnavailableColumn(get("q", request.filter.q.get(0).get(0), "column-filter", "params.city"));
request.filter.q = Arrays.asList(new MultiValueFilter<>("*ullnam*:My name is"));
handleUnavailableColumn(post(request, "column-filter", "fullname"));
handleUnavailableColumn(get("q", request.filter.q.get(0).get(0), "column-filter", "fullname"));
request.filter.q = Arrays.asList(new MultiValueFilter<>("fullname:My name:is"));
handleUnavailableColumn(post(request, "column-filter", "params.city"));
handleUnavailableColumn(get("q", request.filter.q.get(0).get(0), "column-filter", "params.city"));
// used to return 200 in previous implementation, this is anti-regression
request.filter.q = Arrays.asList(new MultiValueFilter<>("fullname:My name:is"));
handleUnavailableColumn(post(request, "column-filter", "fullname.anything"));
handleUnavailableColumn(get("q", request.filter.q.get(0).get(0), "column-filter", "fullname.anything"));
request.filter = new Filter();
}
use of io.arlas.server.core.model.request.Filter in project ARLAS-server by gisaia.
the class AbstractFilteredTest method testComplexFilter.
@Test
public void testComplexFilter() throws Exception {
request.filter.f = // "job:eq:Architect"
Arrays.asList(// "job:eq:Architect"
new MultiValueFilter<>(new Expression("params.job", OperatorEnum.like, "Architect")), new MultiValueFilter<>(new Expression("params.startdate", OperatorEnum.range, "[1009799<1009801]")));
handleFieldFilter(post(request), 2, "Architect");
handleFieldFilter(givenFilterableRequestParams().param("f", request.filter.f.get(0).get(0).toString()).param("f", "params.startdate:range:[1009799<1009801]").when().get(getUrlPath("geodata")).then(), 2, "Architect");
handleFieldFilter(header(request.filter), 2, "Architect");
//
request.filter.f = // "job:eq:Architect"
Arrays.asList(// "job:eq:Architect"
new MultiValueFilter<>(new Expression("params.job", OperatorEnum.like, "Architect")), new MultiValueFilter<>(new Expression("params.startdate", OperatorEnum.range, "[1970/01/01 00:16:49:799<1970/01/01 00:16:49:801]")));
request.filter.dateformat = "yyyy/MM/dd HH:mm:ss:SSS";
handleFieldFilter(post(request), 2, "Architect");
handleFieldFilter(givenFilterableRequestParams().param("f", request.filter.f.get(0).get(0).toString()).param("f", "params.startdate:range:[1970/01/01 00:16:49:799<1970/01/01 00:16:49:801]").param("dateformat", request.filter.dateformat).when().get(getUrlPath("geodata")).then(), 2, "Architect");
handleFieldFilter(header(request.filter), 2, "Architect");
request.filter.f = Arrays.asList(new MultiValueFilter<>(new Expression("params.startdate", OperatorEnum.lte, "01-01-1970 00:12:55")));
request.filter.dateformat = "dd-MM-yyyy HH:mm:ss";
handleFieldFilter(post(request), 3, "Chemist", "Brain Scientist");
handleFieldFilter(givenFilterableRequestParams().param("f", request.filter.f.get(0).get(0).toString()).param("dateformat", request.filter.dateformat).when().get(getUrlPath("geodata")).then(), 3, "Chemist", "Brain Scientist");
handleFieldFilter(header(request.filter), 3, "Chemist", "Brain Scientist");
// DATEFORMAT : check that date operations (||/s) works when specifying dates with custom format
request.filter.f = Arrays.asList(new MultiValueFilter<>(new Expression("params.startdate", OperatorEnum.lte, "01-01-1970 00:12:55||/s")));
request.filter.dateformat = "dd-MM-yyyy HH:mm:ss";
handleFieldFilter(post(request), 3, "Chemist", "Brain Scientist");
handleFieldFilter(givenFilterableRequestParams().param("f", request.filter.f.get(0).get(0).toString()).param("dateformat", request.filter.dateformat).when().get(getUrlPath("geodata")).then(), 3, "Chemist", "Brain Scientist");
handleFieldFilter(header(request.filter), 3, "Chemist", "Brain Scientist");
// DATEFORMAT : check that dateformat works when we specify an alias ($timestamp) in range operation
request.filter.f = Arrays.asList(new MultiValueFilter<>(new Expression("$timestamp", OperatorEnum.range, "[01-01-1970 00:00:00<01-01-1970 00:12:55||-3s/s[")));
request.filter.dateformat = "dd-MM-yyyy HH:mm:ss";
handleMatchingTimestampRangeFilter(post(request), 0, 772000, 2);
handleMatchingTimestampRangeFilter(givenFilterableRequestParams().param("f", request.filter.f.get(0).get(0).toString()).param("dateformat", request.filter.dateformat).when().get(getUrlPath("geodata")).then(), 0, 772000, 2);
handleMatchingTimestampRangeFilter(header(request.filter), 0, 772000, 2);
request.filter.dateformat = null;
request.filter.f = // "job:eq:Architect"
Arrays.asList(// "job:eq:Architect"
new MultiValueFilter<>(new Expression("params.job", OperatorEnum.like, "Architect")), new MultiValueFilter<>(new Expression("params.startdate", OperatorEnum.range, "[1009799<1009801]")), new MultiValueFilter<>(new Expression("geo_params.centroid", OperatorEnum.within, "-50,-50,50,50")), new MultiValueFilter<>(new Expression("geo_params.centroid", OperatorEnum.notwithin, "20,-50,60,50")), new MultiValueFilter<>(new Expression("geo_params.geometry", OperatorEnum.within, "POLYGON((30 30,30 -30,-30 -30,-30 30,30 30))")), 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.intersects, "POLYGON((-20 20, 20 20, 20 -20, -20 -20, -20 20))")), new MultiValueFilter<>(new Expression("geo_params.geometry", OperatorEnum.notintersects, "POLYGON((-30 -10,30 10, 30 -30, -30 -30,-30 -10))")));
handleComplexFilter(post(request));
handleComplexFilter(givenFilterableRequestParams().param("f", request.filter.f.get(0).get(0).toString()).param("f", "params.startdate:range:[1009799<1009801]").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()).param("f", request.filter.f.get(5).get(0).toString()).param("f", request.filter.f.get(6).get(0).toString()).param("f", request.filter.f.get(7).get(0).toString()).when().get(getUrlPath("geodata")).then());
handleComplexFilter(header(request.filter));
request.filter = new Filter();
}
use of io.arlas.server.core.model.request.Filter in project ARLAS-server by gisaia.
the class AbstractPaginatedTest method testPageSort.
@Test
public void testPageSort() throws Exception {
search.filter = new Filter();
search.page.sort = "-params.job";
// an empty column filter is not considered
handleSortParameter(post(search, ""), "Dancer");
handleSortParameter(get("sort", search.page.sort, ""), "Dancer");
// geodistance is never filtered
search.page.sort = "geodistance:-50 -110";
handleGeoSortParameter(post(search, "fullname"), "-50,-110");
handleGeoSortParameter(get("sort", search.page.sort, "fullname"), "-50,-110");
}
use of io.arlas.server.core.model.request.Filter in project ARLAS-server by gisaia.
the class AbstractPaginatedTest method setUpSearch.
@Before
public void setUpSearch() {
search.page = new Page();
search.filter = new Filter();
}
Aggregations