ATEST-129

This commit is contained in:
Fabian Märki
2015-07-31 14:32:57 +02:00
parent fbab668184
commit f1587230a6
2 changed files with 28 additions and 1 deletions

View File

@ -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);

View File

@ -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));
} }