View Javadoc
1   package de.dlr.shepard.data.spatialdata.io;
2   
3   import de.dlr.shepard.data.spatialdata.model.geometryFilter.AbstractGeometryFilter;
4   import de.dlr.shepard.data.spatialdata.model.geometryFilter.KNearestNeighbor;
5   import java.util.ArrayList;
6   import java.util.List;
7   import java.util.Map;
8   import lombok.Data;
9   
10  @Data
11  public class SpatialDataQueryParams {
12  
13    private AbstractGeometryFilter geometryFilter;
14    private List<FilterCondition> measurementsFilters;
15    private Map<String, Object> metadata;
16    private Long startTime;
17    private Long endTime;
18    private Integer limit;
19    private Integer skip;
20  
21    public SpatialDataQueryParams(
22      AbstractGeometryFilter geometryFilter,
23      Map<String, Object> metadata,
24      List<FilterCondition> measurementsFilters,
25      Long startTime,
26      Long endTime,
27      Integer limit,
28      Integer skip
29    ) {
30      this.geometryFilter = geometryFilter;
31      this.metadata = metadata;
32      this.measurementsFilters = measurementsFilters;
33      this.startTime = startTime;
34      this.endTime = endTime;
35      this.limit = limit;
36      this.skip = skip;
37    }
38  
39    /**
40     * @return List of validation errors
41     */
42    public List<String> validate() {
43      List<String> errors = new ArrayList<>();
44  
45      if (geometryFilter != null) {
46        if (!geometryFilter.isValid()) errors.add("Invalid geometryFilter param");
47        if (geometryFilter instanceof KNearestNeighbor) {
48          if (skip != null) errors.add("Skip parameter is not accepted with KNN");
49          if (limit != null) errors.add("Limit parameter is not accepted with KNN");
50        }
51      }
52      if (skip != null && skip <= 0 && !(geometryFilter instanceof KNearestNeighbor)) errors.add(
53        "Skip parameter must be greater than 0"
54      );
55      if (startTime != null && endTime != null && startTime > endTime) errors.add(
56        "startTime should be less than or equals endTime"
57      );
58      return errors;
59    }
60  }