ATEST-129
This commit is contained in:
@ -102,7 +102,6 @@ public class QueryRestController {
|
||||
LOGGER.debug("Executing query '{}'", query.getClass().getSimpleName());
|
||||
|
||||
QueryAnalyzer queryAnalizer = queryAnalizerFactory.apply(query);
|
||||
queryAnalizer.validate();
|
||||
|
||||
// all the magic happens here
|
||||
Stream<Entry<String, Stream<? extends DataEvent>>> channelToDataEvents = getQueryProcessor(query.getDBMode()).process(queryAnalizer);
|
||||
|
@ -13,8 +13,11 @@ import org.springframework.validation.Errors;
|
||||
import org.springframework.validation.Validator;
|
||||
|
||||
import ch.psi.daq.query.model.AbstractQuery;
|
||||
import ch.psi.daq.query.model.AbstractTimeRangeQuery;
|
||||
import ch.psi.daq.query.model.Aggregation;
|
||||
import ch.psi.daq.query.model.DBMode;
|
||||
import ch.psi.daq.query.model.QueryField;
|
||||
import ch.psi.daq.query.range.QueryRange;
|
||||
import ch.psi.daq.queryrest.config.QueryRestConfig;
|
||||
|
||||
/**
|
||||
@ -45,6 +48,31 @@ public class QueryValidator implements Validator {
|
||||
|
||||
AbstractQuery query = (AbstractQuery) target;
|
||||
|
||||
QueryRange queryRange = query.getQueryRange();
|
||||
|
||||
if (!queryRange.isPulseIdRangeDefined() && !queryRange.isTimeRangeDefined()) {
|
||||
errors.reject("", "Either time or pulseId range must be defined by the query!");
|
||||
}
|
||||
|
||||
if (queryRange.isPulseIdRangeDefined()) {
|
||||
if (queryRange.getStartPulseId() > queryRange.getEndPulseId()) {
|
||||
errors.rejectValue("pulseId", "pulseId", "Start pulse-id must be smaller or equals end pulse-id!");
|
||||
}
|
||||
} else if (queryRange.isTimeRangeDefined()) {
|
||||
if (queryRange.getStartMillis() > queryRange.getEndMillis()) {
|
||||
errors.rejectValue("millis", "millis", "Start millis must be smaller or equals to end millis!");
|
||||
} else if (queryRange.getStartMillis() == queryRange.getEndMillis()
|
||||
&& queryRange.getStartNanos() > queryRange.getEndNanos()) {
|
||||
errors.rejectValue("nanos", "nanos", "Start nanos must be smaller or equals to end nanos!");
|
||||
}
|
||||
}
|
||||
|
||||
if (DBMode.archiverappliance.equals(query.getDBMode())) {
|
||||
if (!(query instanceof AbstractTimeRangeQuery)) {
|
||||
errors.reject("", "ArchiverAppliance supports time range queries only!");
|
||||
}
|
||||
}
|
||||
|
||||
if (query.getFields() == null || query.getFields().isEmpty()) {
|
||||
query.setFields(new LinkedHashSet<>(defaultResponseFields));
|
||||
}
|
||||
|
Reference in New Issue
Block a user