MCPcopy
hub / github.com/OpenTSDB/opentsdb / evaluate

Method evaluate

src/query/expression/DivideSeries.java:38–78  ·  view source on GitHub ↗
(final TSQuery data_query, 
      final List<DataPoints[]> query_results, final List<String> params)

Source from the content-addressed store, hash-verified

36 }
37
38 @Override
39 public DataPoints[] evaluate(final TSQuery data_query,
40 final List<DataPoints[]> query_results, final List<String> params) {
41 if (data_query == null) {
42 throw new IllegalArgumentException("Missing time series query");
43 }
44 if (query_results == null || query_results.isEmpty()) {
45 return new DataPoints[]{};
46 }
47
48 if (query_results.size() < 2 || query_results.size() > 26) {
49 throw new IllegalArgumentException("Must have 2 to 26 series, got " +
50 query_results.size() + " instead");
51 }
52
53 final StringBuilder buf = new StringBuilder();
54 char v = 'a';
55 for (int i = 0; i < query_results.size(); i++) {
56 buf.append(v++);
57 if (i < query_results.size() - 1) {
58 buf.append(" / ");
59 }
60 }
61
62 final ExpressionIterator expression = new ExpressionIterator("divideSeries",
63 buf.toString(), SetOperator.UNION, false, false);
64 v = 'a';
65
66 for (final DataPoints[] dps : query_results) {
67 final TimeSyncedIterator it = new TimeSyncedIterator(
68 Character.toString(v++), null, dps);
69 expression.addResults(it.getId(), it);
70 }
71 expression.compile();
72
73 final DataPoints[] results = new DataPoints[expression.values().length];
74 for (int i = 0; i < expression.values().length; i++) {
75 results[i] = new EDPtoDPS(tsdb, i, expression);
76 }
77 return results;
78 }
79
80 @Override
81 public String writeStringField(final List<String> query_params,

Callers

nothing calls this directly

Calls 8

addResultsMethod · 0.95
getIdMethod · 0.95
compileMethod · 0.95
valuesMethod · 0.95
isEmptyMethod · 0.80
sizeMethod · 0.65
appendMethod · 0.45
toStringMethod · 0.45

Tested by

no test coverage detected