@Override final public boolean deleteValues(long startTime, long endTime) { final SampledValue min = new SampledValue(null, startTime, Quality.BAD); final SampledValue max = new SampledValue(null, endTime, Quality.BAD); // deleteValues(m_values.subSet(min, max)); m_values.subSet(min, max).clear(); return true; }
@Override public boolean addValue(long timestamp, Value value) { addValue(new SampledValue(value, timestamp, Quality.GOOD)); return true; }
public List<SampledValue> getValues(long startTime, long endTime) { final List<SampledValue> sublist = getSublist(startTime, endTime); final List<SampledValue> result = new ArrayList<>(sublist.size()); for (SampledValue value : sublist) result.add(new SampledValue(value)); return result; }
@Override public boolean addValue(long timestamp, Value value) { addValue(new SampledValue(value, timestamp, Quality.GOOD)); return true; }
@Override final public boolean deleteValues(long endTime) { final SampledValue max = new SampledValue(null, endTime, Quality.BAD); // deleteValues(m_values.headSet(max)); m_values.headSet(max).clear(); return true; }
public SampledValue getNextValue(long time) { final int idx = getIndexBelow(time); if (idx >= m_values.size() - 1) return null; return new SampledValue(m_values.get(idx + 1)); }
/** * @see ValueResourceUtils#getSampledValues(float[], long[]) */ public static List<SampledValue> getSampledValues(int[] values, long[] timestamps) { if (values.length != timestamps.length) throw new IllegalArgumentException("Array length must coincide. Got length " + values.length + " and " + timestamps.length); List<SampledValue> v = new ArrayList<>(); for (int i=0;i<values.length;i++) { v.add(new SampledValue(new IntegerValue(values[i]), timestamps[i], Quality.GOOD)); } return v; }
/** * @see ValueResourceUtils#getSampledValues(float[], long[]) */ public static List<SampledValue> getSampledValues(boolean[] values, long[] timestamps) { if (values.length != timestamps.length) throw new IllegalArgumentException("Array length must coincide. Got length " + values.length + " and " + timestamps.length); List<SampledValue> v = new ArrayList<>(); for (int i=0;i<values.length;i++) { v.add(new SampledValue(new BooleanValue(values[i]), timestamps[i], Quality.GOOD)); } return v; }
@Override public SampledValue interpolate(SampledValue x0, SampledValue x1, long t, Class<? extends Value> valueType) { if (x0 != null) { return new SampledValue(x0.getValue(), t, x0.getQuality()); } else if (x1 != null) { return new SampledValue(x1.getValue(), t, Quality.BAD); } throw new IllegalArgumentException("Cannot perform step interpolation with both support points being null."); }
/** * Adds copies of the values to this. */ public void addValuesCopies(List<SampledValue> values) { boolean needsSort = false; for (SampledValue value : values) { final SampledValue newValue = new SampledValue(value); needsSort |= newValueRequiresSorting(value); m_values.add(newValue); } if (needsSort) sort(); }
@Override public SampledValue getValueSecure(long t) { if (isMemoryTimeseries) return ((MemoryTimeSeries) input).getValueSecure(t); final SampledValue result = getValue(t); return (result!=null) ? result : new SampledValue(FloatValue.NAN, t, Quality.BAD); }
@Override final public SampledValue getNextValue(long time) { final SampledValue pivot = new SampledValue(null, time, Quality.BAD); final SampledValue element = m_values.ceiling(pivot); return (element != null) ? element.copyDefensively() : null; }
@Override public SampledValue getPreviousValue(long time) { final SampledValue pivot = new SampledValue(null, time, Quality.BAD); final SampledValue element = m_values.floor(pivot); return (element != null) ? element.copyDefensively() : null; }
@Override public List<SampledValue> getValues(long startTime) { SortedSet<SampledValue> elements = m_values.tailSet(new SampledValue(null, startTime, Quality.BAD)); return getValuesInternal(elements); }
private SampledValue interpolateBoolean(SampledValue x0, SampledValue x1, long t) { // linear interpolation on booleans is the same as nearest interpolation final long dt0 = Math.abs(t - x0.getTimestamp()); final long dt1 = Math.abs(t - x1.getTimestamp()); if (dt0 <= dt1) return new SampledValue(x0.getValue(), t, x0.getQuality()); else return new SampledValue(x1.getValue(), t, x1.getQuality()); }
protected void init2() { for (Map.Entry<Integer, SampledValue> entry : comingValues.entrySet()) { final int key = entry.getKey(); final SampledValue sv = entry.getValue(); final float val = sv.getQuality() == Quality.GOOD ? (doAverage ? sv.getValue().getFloatValue() : 0) : Float.NaN; final boolean ok = !Float.isNaN(val); nextValuesIntegrated.put(key, new SampledValue(ok ? new FloatValue(val) : FloatValue.NAN, sv.getTimestamp(), ok ? Quality.GOOD : Quality.BAD)); } }
@Override public SampledValue getValueSecure(long t) { final SampledValue result = getValue(t); return (result!=null) ? result : new SampledValue(new FloatValue(0.f), t, Quality.BAD); }
@Override public SampledValue getValueSecure(long t) { final SampledValue result = getValue(t); return (result != null) ? result : new SampledValue(new FloatValue(0.f), t, Quality.BAD); }
@Override public final SampledValue apply(SampledValue value) { return new SampledValue(new FloatValue(value.getValue().getFloatValue() + m_addend), value.getTimestamp(), value.getQuality()); }
@Override public final SampledValue apply(SampledValue value) { return new SampledValue(new FloatValue(value.getValue().getFloatValue() * m_factor), value.getTimestamp(), value.getQuality()); }