//This function get called at every second private void setHistoryInSciChart(final LTEFilterDataHistory history) { if (history.size() == 0) { return; } UpdateSuspender.using(chartSurface, new Runnable() { @Override public void run() { clearDataForChart();//Clearing old data from chart double rsrp; int scrCode; double max = MINIMUM_Y_VALUE; double min = MAXIMUM_Y_VALUE; for (int index = 0; index < history.size(); index++) { final LTEFilterData reading = history.get(index); final int scramblingCodeCount = reading.cellInfoList.size(); int countMonitorSet = 0; for (int scIndex = 0; scIndex < scramblingCodeCount; scIndex++) { // check invalid data like -999 rsrp = reading.cellInfoList.get(scIndex).rsrp; scrCode = reading.cellInfoList.get(scIndex).pci; String _currentsettype = reading.cellInfoList.get(scIndex).type; long domainValue = reading.timeStamp + CurrentTestState.getCurrentQcommTimeShift(); if ((Double.isNaN(rsrp)) || (rsrp == -999.0) || (scrCode == -999.0)) { continue; } if (reading.cellInfoList.get(scIndex).type.equals(Constants.LTE_PCELL)) { // if it is PCell addDataToXyDataSeries(domainValue, rsrp, Integer.toString(scrCode) + "_P", scrCode); } else if (reading.cellInfoList.get(scIndex).type.equals(Constants.LTE_SCELL1)) { addDataToXyDataSeries(domainValue, rsrp, Integer.toString(scrCode) + "_S1", scrCode); } else if (reading.cellInfoList.get(scIndex).type.equals(Constants.LTE_NBR) && countMonitorSet < MAX_MONITOR_SET) { addDataToXyDataSeries(domainValue, rsrp, Integer.toString(scrCode) + "_N", scrCode); countMonitorSet++; } else { continue; } storeColorForLines(scrCode); // // Storing color values according to pci values ` in HashMap if (history.size() == 1) { // addDataToDataSeries(currentSeries, 0, 0); } if (!Double.isNaN(rsrp)) { //if it is a number.. add it in _current series // long domainValue = reading.timeStamp + CurrentTestState.getCurrentQcommTimeShift(); // double rangeValue = rsrp; // addDataToDataSeries(currentSeries, domainValue, rangeValue); if (max < rsrp) { max = rsrp; } if (min > rsrp) { min = rsrp; } } } } addRenderSeriesToChart();//plotting currentSeries at Chart setVisibleRange(min, max); } }); } /** Add all renderable series on chart*/ private void addRenderSeriesToChart() { Enumeration keys = currentRsrpSeriesHT.keys(); while (keys.hasMoreElements()) { final String sc = keys.nextElement(); XyDataSeries dataSeries = currentRsrpSeriesHT.get(sc); FastLineRenderableSeries lineSeries = getFastLineRenderSeries(sc); lineSeries.setDataSeries(dataSeries); if(!chartSurface.getRenderableSeries().contains(lineSeries)){ chartSurface.getRenderableSeries().add(lineSeries); } } chartSurface.zoomExtents(); } /**add data to either new XyDataSeries or already stored in Hashtable */ private void addDataToXyDataSeries(long domainValue, double rsrp, String seriesNam, int scrCode) { XyDataSeries xySeries = currentRsrpSeriesHT.get(Integer.toString(scrCode)); if (xySeries == null) { xySeries = new XyDataSeries<>(Date.class, Double.class); currentRsrpSeriesHT.put(Integer.toString(scrCode), xySeries); } DateValues domVal = new DateValues(); DoubleValues rangeVal = new DoubleValues(); domVal.addTime(domainValue); rangeVal.add(rsrp); xySeries.append(domVal, rangeVal); xySeries.setSeriesName(seriesNam); } private FastLineRenderableSeries getFastLineRenderSeries(String scr) { FastLineRenderableSeries fastLineRenderableSeries = fastlineHT.get(scr); if(fastLineRenderableSeries == null){ String colorKey = _colorRsrpHM.get(scr).toString(); fastLineRenderableSeries = super.getFastLineRenderSeries(Integer.parseInt(colorKey)); fastlineHT.put(scr,fastLineRenderableSeries); } return fastLineRenderableSeries; } private void clearDataForChart() { RenderableSeriesCollection renderableSeriesCollection = chartSurface.getRenderableSeries(); int size = renderableSeriesCollection.size() - 1; for (int i = size; i >= 0; i--) { if (!renderableSeriesCollection.isEmpty()) { FastLineRenderableSeries renderableSeries = (FastLineRenderableSeries)renderableSeriesCollection.get(i); if(renderableSeries != null){ renderableSeries.getDataSeries().clear(); } } } currentRsrpSeriesHT.clear(); Enumeration keyCol = fastlineHT.keys(); while(keyCol.hasMoreElements()){ String sc = keyCol.nextElement(); FastLineRenderableSeries fSeries = fastlineHT.get(sc); if(fSeries!=null ){ // if(!fSeries.getIsSelected()) { chartSurface.getRenderableSeries().remove(fSeries); fastlineHT.remove(fSeries); } } }