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
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 }