/** * Does the insertion of the new value at the end require re-sorting the array? */ private boolean newValueRequiresSorting(final SampledValue value) { if (m_values.isEmpty()) return false; final int L = m_values.size(); return m_values.get(L - 1).getTimestamp() > value.getTimestamp(); }
private static long getEndTime(final List<Schedule> input) { long end = Long.MAX_VALUE; SampledValue sv; for (Schedule schedule: input) { sv = schedule.getPreviousValue(Long.MAX_VALUE); if (sv == null) continue; if (sv.getTimestamp() < end) end = sv.getTimestamp(); } return end; }
public boolean isEmpty(long startInclusive, long endInclusive) { if (m_values.isEmpty()) return true; int i = getIndexBelow(endInclusive); return (i == NO_SUCH_INDEX || m_values.get(i).getTimestamp() < startInclusive); }
/** * Gets the timestamps of the values defining the time series f. */ private List<Long> getTimestamps(final ReadOnlyTimeSeries f) { final List<SampledValue> values = f.getValues(Long.MIN_VALUE); final List<Long> result = new ArrayList<>(values.size()); for (SampledValue value : values) { result.add(value.getTimestamp()); } return result; }
@Override public boolean isEmpty(long startTime, long endTime) { SampledValue next = getNextValue(startTime); return (next == null || next.getTimestamp() > endTime); }
@Override public boolean isEmpty(long startTime, long endTime) { SampledValue sv = getNextValue(startTime); return (sv == null || sv.getTimestamp() > endTime); }
@Override public boolean isEmpty(long startTime, long endTime) { SampledValue sv = getNextValue(startTime); return (sv == null || sv.getTimestamp() > endTime); }
/** * Gets the index for the value with time t. * @return Index of the entry corresponding to time. If no such entry exists, * NO_SUCH_INDEX is returned. */ public int getValueIndex(long time) { final int idx = getIndexBelow(time); if (idx == NO_SUCH_INDEX || idx >= m_values.size()) return NO_SUCH_INDEX; final long tElement = m_values.get(idx).getTimestamp(); return (tElement == time) ? idx : NO_SUCH_INDEX; }
public long getTimestampForLatestValue() { final List<SampledValue> values = cache.getCache(); if (values != null && !values.isEmpty()) { return values.get(values.size()-1).getTimestamp(); } return getTimestampForLatestValueInternal(); };
@Override public SampledValue getPreviousValue(long time) { final SampledValue prev = super.getPreviousValue(time); final RecordedData rd = getHistoricalData(); if (rd != null) { final SampledValue rdPrev = rd.getPreviousValue(time); if (rdPrev != null && (prev == null || prev.getTimestamp() < rdPrev.getTimestamp())) return rdPrev; } return prev; }
void write(SampledValue val, JsonGenerator jGen) throws IOException { jGen.writeStartObject(); jGen.writeNumberField("time", val.getTimestamp()); jGen.writeStringField("quality", val.getQuality().name()); writeValue(val, jGen); jGen.writeEndObject(); }
void write(SampledValue val, JsonGenerator jGen) throws IOException { jGen.writeStartObject(); jGen.writeNumberField("time", val.getTimestamp()); jGen.writeStringField("quality", val.getQuality().name()); writeValue(val, jGen); jGen.writeEndObject(); }
public float getGradient(SampledValue sv1, SampledValue sv2) { long tDiff = sv2.getTimestamp() - sv1.getTimestamp(); float valDiff = sv2.getValue().getFloatValue() - sv1.getValue().getFloatValue(); return valDiff / ((float) tDiff); }
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)); } }
/** * Gets the index of the entry with the largest index whose timestamp is at most time. */ public int getIndexBelow(long time) { if (m_values.isEmpty()) return NO_SUCH_INDEX; if (m_values.get(0).getTimestamp() > time) return NO_SUCH_INDEX; final IndexInterval result = new IndexInterval(m_values); final IndexInterval search = new IndexInterval(m_values); getLowerBoundaryExclusive(time, result, search); return result.getMin(); }
private static final long getStartTime(final long startTime, final TemporalUnit unit, final ReadOnlyTimeSeries input, final ZoneId zoneId) { final long lastStart = getLastStandardIntervalStart(startTime, unit, zoneId); final long nextStart = getNext(lastStart, unit, 1, zoneId); if (!input.isEmpty(Long.MIN_VALUE, nextStart)) return lastStart; final SampledValue next = input.getNextValue(startTime); if (next == null) return Long.MAX_VALUE; return getLastStandardIntervalStart(next.getTimestamp(), unit, zoneId); }
private void getLowerBoundaryExclusive(long time, IndexInterval result, IndexInterval searchInterval) { // sanity check: subdivision of intervals can never result in interval of size zero. assert searchInterval.size() > 0; if (searchInterval.size() == 1) { result.setMin(searchInterval.getMin()); return; } final int imid = searchInterval.mid(); final SampledValue pivot = m_values.get(imid); final IndexInterval subInterval = (pivot.getTimestamp() > time) ? searchInterval.lowerHalf() : searchInterval.upperHalf(); getLowerBoundaryExclusive(time, result, subInterval); }
@Override public final SampledValue apply(SampledValue value) { return new SampledValue(new FloatValue(value.getValue().getFloatValue() * m_factor), value.getTimestamp(), value.getQuality()); }
@Override public final SampledValue apply(SampledValue value) { return new SampledValue(new FloatValue(value.getValue().getFloatValue() + m_addend), value.getTimestamp(), value.getQuality()); }