SpatialDataQueryParams.java
package de.dlr.shepard.data.spatialdata.io;
import de.dlr.shepard.data.spatialdata.model.geometryFilter.AbstractGeometryFilter;
import de.dlr.shepard.data.spatialdata.model.geometryFilter.KNearestNeighbor;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import lombok.Data;
@Data
public class SpatialDataQueryParams {
private AbstractGeometryFilter geometryFilter;
private List<FilterCondition> measurementsFilters;
private Map<String, Object> metadata;
private Long startTime;
private Long endTime;
private Integer limit;
private Integer skip;
public SpatialDataQueryParams(
AbstractGeometryFilter geometryFilter,
Map<String, Object> metadata,
List<FilterCondition> measurementsFilters,
Long startTime,
Long endTime,
Integer limit,
Integer skip
) {
this.geometryFilter = geometryFilter;
this.metadata = metadata;
this.measurementsFilters = measurementsFilters;
this.startTime = startTime;
this.endTime = endTime;
this.limit = limit;
this.skip = skip;
}
/**
* @return List of validation errors
*/
public List<String> validate() {
List<String> errors = new ArrayList<>();
if (geometryFilter != null) {
if (!geometryFilter.isValid()) errors.add("Invalid geometryFilter param");
if (geometryFilter instanceof KNearestNeighbor) {
if (skip != null) errors.add("Skip parameter is not accepted with KNN");
if (limit != null) errors.add("Limit parameter is not accepted with KNN");
}
}
if (skip != null && skip <= 0 && !(geometryFilter instanceof KNearestNeighbor)) errors.add(
"Skip parameter must be greater than 0"
);
if (startTime != null && endTime != null && startTime > endTime) errors.add(
"startTime should be less than or equals endTime"
);
return errors;
}
}