Search in sources :

Example 1 with Filter

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());
}
Also used : ElasticFilter(io.arlas.server.ogc.common.requestfilter.ElasticFilter) Filter(io.arlas.server.core.model.request.Filter)

Example 2 with Filter

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();
}
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) RequestSpecification(io.restassured.specification.RequestSpecification) Test(org.junit.Test)

Example 3 with 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();
}
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 4 with 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*"));
}
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 5 with Filter

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();
}
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)

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