protected BigDecimal getAverageBigDecimal(final Interval interval) { if (size == 0) { return null; } int[] timestamps = getOverlappingTimestamps(interval.getLow(), interval.getHigh()); if (timestamps.length == 0) { return null; } else if (timestamps.length == 1) { return new BigDecimal(((Number) getValue(timestamps[0])).doubleValue()); } BigDecimal result = new BigDecimal(0.0); BigDecimal period = new BigDecimal(0.0); BigDecimal two = new BigDecimal(2.0); for (int i = 1; i < timestamps.length; i++) { BigDecimal p = new BigDecimal(array[timestamps[i]] - array[timestamps[i - 1]]); period = period.add(p); BigDecimal lowVal = new BigDecimal(((Number) getValue(timestamps[i - 1])).doubleValue()); BigDecimal highVal = new BigDecimal(((Number) getValue(timestamps[i])).doubleValue()); result = result.add(lowVal.add(highVal).divide(two).multiply(p)); } return result.divide(period, 10, RoundingMode.HALF_EVEN); }
protected BigDecimal getAverageBigDecimal(final Interval interval) { if (size == 0) { return null; } int[] timestamps = getOverlappingTimestamps(interval.getLow(), interval.getHigh()); if (timestamps.length == 0) { return null; } else if (timestamps.length == 1) { return new BigDecimal(((Number) getValue(timestamps[0])).doubleValue()); } BigDecimal result = new BigDecimal(0.0); BigDecimal period = new BigDecimal(0.0); BigDecimal two = new BigDecimal(2.0); for (int i = 1; i < timestamps.length; i++) { BigDecimal p = new BigDecimal(array[timestamps[i]] - array[timestamps[i - 1]]); period = period.add(p); BigDecimal lowVal = new BigDecimal(((Number) getValue(timestamps[i - 1])).doubleValue()); BigDecimal highVal = new BigDecimal(((Number) getValue(timestamps[i])).doubleValue()); result = result.add(lowVal.add(highVal).divide(two).multiply(p)); } return result.divide(period, 10, RoundingMode.HALF_EVEN); }
protected Double getMaxDouble(final Interval interval) { if (size == 0) { return null; } int[] timestamps = getOverlappingTimestamps(interval.getLow(), interval.getHigh()); if (timestamps.length == 0) { return null; } double max = Double.NEGATIVE_INFINITY; for (int i = 0; i < timestamps.length; i++) { double val = ((Number) getValue(timestamps[i])).doubleValue(); max = Math.max(val, max); } return max; }
protected Double getMinDouble(final Interval interval) { if (size == 0) { return null; } int[] timestamps = getOverlappingTimestamps(interval.getLow(), interval.getHigh()); if (timestamps.length == 0) { return null; } double min = Double.POSITIVE_INFINITY; for (int i = 0; i < timestamps.length; i++) { double val = ((Number) getValue(timestamps[i])).doubleValue(); min = Math.min(val, min); } return min; }
protected Double getMinDouble(final Interval interval) { if (size == 0) { return null; } int[] timestamps = getOverlappingTimestamps(interval.getLow(), interval.getHigh()); if (timestamps.length == 0) { return null; } double min = Double.POSITIVE_INFINITY; for (int i = 0; i < timestamps.length; i++) { double val = ((Number) getValue(timestamps[i])).doubleValue(); min = Math.min(val, min); } return min; }
protected Double getMaxDouble(final Interval interval) { if (size == 0) { return null; } int[] timestamps = getOverlappingTimestamps(interval.getLow(), interval.getHigh()); if (timestamps.length == 0) { return null; } double max = Double.NEGATIVE_INFINITY; for (int i = 0; i < timestamps.length; i++) { double val = ((Number) getValue(timestamps[i])).doubleValue(); max = Math.max(val, max); } return max; }
protected Object getFirst(final Interval interval) { if (size == 0) { return null; } int[] timestamps = getOverlappingTimestamps(interval.getLow(), interval.getHigh()); if (timestamps.length == 0) { return null; } return getValue(timestamps[0]); }
protected Object getLast(final Interval interval) { if (size == 0) { return null; } int[] timestamps = getOverlappingTimestamps(interval.getLow(), interval.getHigh()); if (timestamps.length == 0) { return null; } return getValue(timestamps[timestamps.length - 1]); }
protected Object getLast(final Interval interval) { if (size == 0) { return null; } int[] timestamps = getOverlappingTimestamps(interval.getLow(), interval.getHigh()); if (timestamps.length == 0) { return null; } return getValue(timestamps[timestamps.length - 1]); }
protected Object getFirst(final Interval interval) { if (size == 0) { return null; } int[] timestamps = getOverlappingTimestamps(interval.getLow(), interval.getHigh()); if (timestamps.length == 0) { return null; } return getValue(timestamps[0]); }
protected Double getAverageDouble(final Interval interval) { if (size == 0) { return null; } int[] timestamps = getOverlappingTimestamps(interval.getLow(), interval.getHigh()); if (timestamps.length == 0) { return null; } else if (timestamps.length == 1) { return ((Number) getValue(timestamps[0])).doubleValue(); } double result = 0.0; double period = 0.0; for (int i = 1; i < timestamps.length; i++) { double p = array[timestamps[i]] - array[timestamps[i - 1]]; period += p; double lowVal = ((Number) getValue(timestamps[i - 1])).doubleValue(); double highVal = ((Number) getValue(timestamps[i])).doubleValue(); result += p * (lowVal + highVal) / 2.0; } return result / period; }
protected Double getAverageDouble(final Interval interval) { if (size == 0) { return null; } int[] timestamps = getOverlappingTimestamps(interval.getLow(), interval.getHigh()); if (timestamps.length == 0) { return null; } else if (timestamps.length == 1) { return ((Number) getValue(timestamps[0])).doubleValue(); } double result = 0.0; double period = 0.0; for (int i = 1; i < timestamps.length; i++) { double p = array[timestamps[i]] - array[timestamps[i - 1]]; period += p; double lowVal = ((Number) getValue(timestamps[i - 1])).doubleValue(); double highVal = ((Number) getValue(timestamps[i])).doubleValue(); result += p * (lowVal + highVal) / 2.0; } return result / period; }