private static void downsample(List<SampledValue> oldSubset, List<SampledValue> newValues, long minInterval, InterpolationMode mode) { if (oldSubset.isEmpty()) return; else if (oldSubset.size() == 1) { newValues.add(oldSubset.get(0)); return; } if (mode == InterpolationMode.NONE) { downsampleNaive(oldSubset, newValues, minInterval); } else { downsample(oldSubset, newValues, minInterval); } }
Quality qual = sv.getQuality(); if (qual != lastQuality || (qual == Quality.GOOD && ta - lastT >= minimumInterval)) { downsample(currentList, newValues, minimumInterval, mode); currentList.clear(); lastT = ta; downsample(currentList, newValues, minimumInterval, mode); return newValues;
@Override public List<SampledValue> downsample(long t0, long t1, long minimumInterval) { List<SampledValue> newValues = new ArrayList<SampledValue>(); if (t1 < t0) return newValues; List<SampledValue> values = getValues(t0, t1); // List<SampledValue> oldValues = new ArrayList<SampledValue>(); // if (values.isEmpty() || t0 < values.get(0).getTimestamp()) { // SampledValue sv = getValue(t0); // if (sv != null) // oldValues.add(sv); // } // oldValues.addAll(values); // SampledValue sv = getValue(t1); // if (t1 > t0 && sv != null) // oldValues.add(sv); // // split into sub intervals // long lastT = Long.MIN_VALUE; // Quality lastQuality = Quality.GOOD; // InterpolationMode mode = getInterpolationMode(); // List<SampledValue> currentList = new ArrayList<SampledValue>(); // for (int i = 0;i<oldValues.size(); i++) { // SampledValue sv0 = oldValues.get(i); // long ta = sv.getTimestamp(); // Quality qual = sv.getQuality(); // if (qual != lastQuality || (qual == Quality.GOOD && t0 - lastT >= minimumInterval)) { InterpolationMode mode = getInterpolationMode(); return downsample(t0, t1, minimumInterval, values, getValue(t0), getValue(t1),mode); }