2121import de .qaware .chronix .examples .exploration .ui .log .TextAreaLogger ;
2222import de .qaware .chronix .solr .client .ChronixSolrStorage ;
2323import de .qaware .chronix .timeseries .MetricTimeSeries ;
24- import de .qaware .chronix .timeseries .dt .DoubleList ;
25- import de .qaware .chronix .timeseries .dt .LongList ;
2624import de .qaware .chronix .timeseries .dt .Point ;
2725import javafx .application .Platform ;
2826import javafx .concurrent .Task ;
4745import java .io .IOException ;
4846import java .net .URL ;
4947import java .time .Instant ;
48+ import java .time .temporal .ChronoUnit ;
5049import java .util .List ;
5150import java .util .ResourceBundle ;
5251import java .util .function .BinaryOperator ;
@@ -127,30 +126,14 @@ public Void call() {
127126 if (timeSeries == null || timeSeries2 == null ) {
128127 return new MetricTimeSeries .Builder ("empty" ).build ();
129128 }
130- MetricTimeSeries .Builder reduced = new MetricTimeSeries .Builder (timeSeries .getMetric ())
131- .attributes (timeSeries .attributes ())
132- .points (concat (timeSeries .getTimestamps (), timeSeries2 .getTimestamps ()),
133- concat (timeSeries .getValues (), timeSeries2 .getValues ()));
134-
135- return reduced .build ();
129+ timeSeries .addAll (timeSeries2 .getTimestampsAsArray (), timeSeries2 .getValuesAsArray ());
130+ return timeSeries ;
136131 };
137132
138-
139133 chronix = new ChronixClient <>(new KassiopeiaSimpleConverter (), new ChronixSolrStorage <>(200 , groupBy , reduce ));
140134
141-
142135 return null ;
143136 }
144-
145- private LongList concat (LongList first , LongList second ) {
146- first .addAll (second );
147- return first ;
148- }
149-
150- private DoubleList concat (DoubleList first , DoubleList second ) {
151- first .addAll (second );
152- return first ;
153- }
154137 };
155138
156139 new Thread (task ).start ();
@@ -180,7 +163,6 @@ protected Void call() throws Exception {
180163 List <MetricTimeSeries > result = chronix .stream (solr , query ).collect (Collectors .toList ());
181164 long queryEnd = System .currentTimeMillis ();
182165 LOGGER .info ("Query took: {} ms for {} points" , (queryEnd - queryStart ), size (result ));
183-
184166 queryStart = System .currentTimeMillis ();
185167 result .forEach (ts -> {
186168 XYChart .Series <DateAxis , NumberAxis > series = new XYChart .Series <>();
@@ -206,25 +188,26 @@ private int size(List<MetricTimeSeries> result) {
206188 }
207189
208190 private void convertTsToSeries (MetricTimeSeries ts , XYChart .Series <DateAxis , NumberAxis > series ) {
209- Point former = null ;
210-
211- List <Point > points = ts .points ().collect (Collectors .toList ());
212- //reduce the amount shown in the chart
191+ ts .sort ();
192+ List <Point > points ;
193+ if (ts .size () > 200_000 ) {
194+ points = ts .points ().filter (point -> point .getIndex () % 1000 == 0 ).collect (Collectors .toList ());
195+ } else {
196+ points = ts .points ().collect (Collectors .toList ());
197+ }
198+ //reduce the amount shown in the chart we add every 100ths point
213199 for (int i = 0 ; i < points .size (); i ++) {
214200 Point point = points .get (i );
215- if (former != null && former .getValue () != point .getValue ()) {
216- series .getData ().add (new XYChart .Data (Instant .ofEpochMilli (point .getTimestamp ()), point .getValue ()));
217201
218- }
219- //Little hack. The line chart does not show points
202+ series .getData ().add (new XYChart .Data (Instant .ofEpochMilli (point .getTimestamp ()), point .getValue ()));
203+
204+ //If the chart only has one point than we add the same value, but 1 week in the future
220205 if (i == points .size () - 1 ) {
221- series .getData ().add (new XYChart .Data (Instant .ofEpochMilli (point .getTimestamp ()), point .getValue ()));
222206 if (series .getData ().size () == 1 ) {
223- series .getData ().add (new XYChart .Data (Instant .ofEpochMilli (point .getTimestamp () + 1 ), point .getValue ()));
207+ Instant futureTimestamp = Instant .ofEpochMilli (point .getTimestamp ()).plus (1 , ChronoUnit .DAYS );
208+ series .getData ().add (new XYChart .Data (futureTimestamp , point .getValue ()));
224209 }
225-
226210 }
227- former = point ;
228211 }
229212 }
230213
0 commit comments