@Override public long[] getRawAbsoluteTimeStamps() { int startIdx = getStartIdx(); int endIdx = getEndIdx(startIdx); int resultSize = (endIdx - startIdx) + 1; if (resultSize <= 0) { return new long[0]; } else { long[] result = new long[resultSize]; long[] timestamps = resource.getAllRawTimeStamps(); int tsIdx = resource.getFirstTimeStampIdx() + startIdx; long base = resource.getTimeBase(); for (int i = 0; i < resultSize; i++) { result[i] = base + timestamps[tsIdx + i]; } return result; } }
private int getEndIdx(int startIdx) { int endIdx = series.getSize() - 1; if (endTime != -1) { long endTimeStamp = endTime - resource.getTimeBase(); long[] timestamps = resource.getAllRawTimeStamps(); endIdx = startIdx - 1; for (int i = resource.getFirstTimeStampIdx() + startIdx; i < resource.getFirstTimeStampIdx() + series.getSize(); i++) { if (timestamps[i] >= endTimeStamp) { break; } endIdx++; } Assert.assertTrue(endIdx == startIdx - 1 || timestamps[endIdx] < endTimeStamp); } return endIdx; }
private int getStartIdx() { int startIdx = 0; if (startTime != -1) { long startTimeStamp = startTime - resource.getTimeBase(); long[] timestamps = resource.getAllRawTimeStamps(); for (int i = resource.getFirstTimeStampIdx(); i < resource.getFirstTimeStampIdx() + series.getSize(); i++) { if (timestamps[i] >= startTimeStamp) { break; } startIdx++; } } return startIdx; }