Merge pull request #10 in ST/ch.psi.daq.queryrest from ATEST-129 to master
# By Fabian Märki # Via Fabian Märki * commit 'f1587230a64e253775a494283da651cdae5c19f7': ATEST-129
This commit is contained in:
@ -102,7 +102,6 @@ public class QueryRestController {
|
|||||||
LOGGER.debug("Executing query '{}'", query.getClass().getSimpleName());
|
LOGGER.debug("Executing query '{}'", query.getClass().getSimpleName());
|
||||||
|
|
||||||
QueryAnalyzer queryAnalizer = queryAnalizerFactory.apply(query);
|
QueryAnalyzer queryAnalizer = queryAnalizerFactory.apply(query);
|
||||||
queryAnalizer.validate();
|
|
||||||
|
|
||||||
// all the magic happens here
|
// all the magic happens here
|
||||||
Stream<Entry<String, Stream<? extends DataEvent>>> channelToDataEvents = getQueryProcessor(query.getDBMode()).process(queryAnalizer);
|
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 org.springframework.validation.Validator;
|
||||||
|
|
||||||
import ch.psi.daq.query.model.AbstractQuery;
|
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.Aggregation;
|
||||||
|
import ch.psi.daq.query.model.DBMode;
|
||||||
import ch.psi.daq.query.model.QueryField;
|
import ch.psi.daq.query.model.QueryField;
|
||||||
|
import ch.psi.daq.query.range.QueryRange;
|
||||||
import ch.psi.daq.queryrest.config.QueryRestConfig;
|
import ch.psi.daq.queryrest.config.QueryRestConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,6 +48,31 @@ public class QueryValidator implements Validator {
|
|||||||
|
|
||||||
AbstractQuery query = (AbstractQuery) target;
|
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()) {
|
if (query.getFields() == null || query.getFields().isEmpty()) {
|
||||||
query.setFields(new LinkedHashSet<>(defaultResponseFields));
|
query.setFields(new LinkedHashSet<>(defaultResponseFields));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user