Search in sources :

Example 11 with Filter

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();
}
Also used : Filter(io.arlas.server.core.model.request.Filter) MultiValueFilter(io.arlas.server.core.model.request.MultiValueFilter) Expression(io.arlas.server.core.model.request.Expression) MultiValueFilter(io.arlas.server.core.model.request.MultiValueFilter) Test(org.junit.Test)

Example 12 with 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();
}
Also used : Filter(io.arlas.server.core.model.request.Filter) MultiValueFilter(io.arlas.server.core.model.request.MultiValueFilter) MultiValueFilter(io.arlas.server.core.model.request.MultiValueFilter) Test(org.junit.Test)

Example 13 with 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();
}
Also used : Expression(io.arlas.server.core.model.request.Expression) Filter(io.arlas.server.core.model.request.Filter) MultiValueFilter(io.arlas.server.core.model.request.MultiValueFilter) MultiValueFilter(io.arlas.server.core.model.request.MultiValueFilter) Test(org.junit.Test)

Example 14 with 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");
}
Also used : Filter(io.arlas.server.core.model.request.Filter) Test(org.junit.Test)

Example 15 with Filter

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();
}
Also used : Filter(io.arlas.server.core.model.request.Filter) Page(io.arlas.server.core.model.request.Page) Before(org.junit.Before)

Aggregations

Filter (io.arlas.server.core.model.request.Filter)17 MultiValueFilter (io.arlas.server.core.model.request.MultiValueFilter)12 Test (org.junit.Test)10 Expression (io.arlas.server.core.model.request.Expression)9 Before (org.junit.Before)3 ArlasException (io.arlas.server.core.exceptions.ArlasException)2 CollectionReferenceParameters (io.arlas.server.core.model.CollectionReferenceParameters)2 DublinCoreElementName (io.arlas.server.core.model.DublinCoreElementName)2 Inspire (io.arlas.server.core.model.Inspire)2 Page (io.arlas.server.core.model.request.Page)2 ElasticFilter (io.arlas.server.ogc.common.requestfilter.ElasticFilter)2 IOException (java.io.IOException)2 UnknownHostException (java.net.UnknownHostException)2 Projection (io.arlas.server.core.model.request.Projection)1 Request (io.arlas.server.core.model.request.Request)1 RequestSpecification (io.restassured.specification.RequestSpecification)1