|
17 | 17 |
|
18 | 18 | import de.qaware.chronix.ChronixClient; |
19 | 19 | import de.qaware.chronix.converter.KassiopeiaSimpleConverter; |
20 | | -import de.qaware.chronix.dts.MetricDataPoint; |
21 | 20 | import de.qaware.chronix.examples.exploration.ui.dt.DateAxis; |
22 | 21 | import de.qaware.chronix.examples.exploration.ui.log.TextAreaLogger; |
23 | 22 | import de.qaware.chronix.solr.client.ChronixSolrStorage; |
24 | 23 | import de.qaware.chronix.timeseries.MetricTimeSeries; |
| 24 | +import de.qaware.chronix.timeseries.Pair; |
25 | 25 | import javafx.application.Platform; |
26 | 26 | import javafx.concurrent.Task; |
27 | 27 | import javafx.event.EventHandler; |
|
50 | 50 | import java.util.function.BinaryOperator; |
51 | 51 | import java.util.function.Function; |
52 | 52 | import java.util.stream.Collectors; |
| 53 | +import java.util.stream.Stream; |
53 | 54 |
|
54 | 55 | /** |
55 | 56 | * Main controller for our simple example ui |
@@ -125,15 +126,24 @@ public Void call() { |
125 | 126 | if (timeSeries == null || timeSeries2 == null) { |
126 | 127 | return new MetricTimeSeries.Builder("empty").build(); |
127 | 128 | } |
128 | | - timeSeries.addAll(timeSeries2.getPoints()); |
129 | | - return timeSeries; |
| 129 | + MetricTimeSeries.Builder reduced = new MetricTimeSeries.Builder(timeSeries.getMetric()) |
| 130 | + .attributes(timeSeries.attributes()) |
| 131 | + .data(concat(timeSeries.getTimestamps(), timeSeries2.getTimestamps()), |
| 132 | + concat(timeSeries.getValues(), timeSeries2.getValues())); |
| 133 | + |
| 134 | + return reduced.build(); |
130 | 135 | }; |
131 | 136 |
|
| 137 | + |
132 | 138 | chronix = new ChronixClient<>(new KassiopeiaSimpleConverter(), new ChronixSolrStorage<>(200, groupBy, reduce)); |
133 | 139 |
|
134 | 140 |
|
135 | 141 | return null; |
136 | 142 | } |
| 143 | + |
| 144 | + private <T> List<T> concat(Stream<T> first, Stream<T> second) { |
| 145 | + return Stream.concat(first, second).collect(Collectors.toList()); |
| 146 | + } |
137 | 147 | }; |
138 | 148 |
|
139 | 149 | new Thread(task).start(); |
@@ -189,21 +199,21 @@ private int size(List<MetricTimeSeries> result) { |
189 | 199 | } |
190 | 200 |
|
191 | 201 | private void convertTsToSeries(MetricTimeSeries ts, XYChart.Series<DateAxis, NumberAxis> series) { |
192 | | - MetricDataPoint former = null; |
| 202 | + Pair former = null; |
193 | 203 |
|
194 | | - List<MetricDataPoint> points = ts.getPoints(); |
| 204 | + List<Pair> points = ts.points().collect(Collectors.toList()); |
195 | 205 | //reduce the amount shown in the chart |
196 | 206 | for (int i = 0; i < points.size(); i++) { |
197 | | - MetricDataPoint point = points.get(i); |
| 207 | + Pair point = points.get(i); |
198 | 208 | if (former != null && former.getValue() != point.getValue()) { |
199 | | - series.getData().add(new XYChart.Data(Instant.ofEpochMilli(point.getDate()), point.getValue())); |
| 209 | + series.getData().add(new XYChart.Data(Instant.ofEpochMilli(point.getTimestamp()), point.getValue())); |
200 | 210 |
|
201 | 211 | } |
202 | 212 | //Little hack. The line chart does not show points |
203 | 213 | if (i == points.size() - 1) { |
204 | | - series.getData().add(new XYChart.Data(Instant.ofEpochMilli(point.getDate()), point.getValue())); |
| 214 | + series.getData().add(new XYChart.Data(Instant.ofEpochMilli(point.getTimestamp()), point.getValue())); |
205 | 215 | if (series.getData().size() == 1) { |
206 | | - series.getData().add(new XYChart.Data(Instant.ofEpochMilli(point.getDate() + 1), point.getValue())); |
| 216 | + series.getData().add(new XYChart.Data(Instant.ofEpochMilli(point.getTimestamp() + 1), point.getValue())); |
207 | 217 | } |
208 | 218 |
|
209 | 219 | } |
|
0 commit comments