/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.timeseries.date.localdate;
import org.threeten.bp.LocalDate;
import com.opengamma.timeseries.DoubleTimeSeries;
import com.opengamma.timeseries.DoubleTimeSeriesOperators.BinaryOperator;
import com.opengamma.timeseries.DoubleTimeSeriesOperators.UnaryOperator;
import com.opengamma.timeseries.date.DateDoubleTimeSeries;
import com.opengamma.timeseries.date.DateTimeSeries;
/**
* A time series that stores {@code double} data values against {@code LocalDate} dates.
* <p>
* The "time" key to the time-series is a {@code LocalDate}.
* See {@link DateTimeSeries} for details about the "time" represented as an {@code int}.
*/
public interface LocalDateDoubleTimeSeries
extends DateDoubleTimeSeries<LocalDate> {
/**
* Gets an iterator over the date-value pairs.
* <p>
* Although the pairs are expressed as instances of {@code Map.Entry},
* it is recommended to use the primitive methods on {@code LocalDateDoubleIterator}.
*
* @return the iterator, not null
*/
@Override // override for covariant return type
LocalDateDoubleEntryIterator iterator();
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateDoubleTimeSeries subSeries(LocalDate startTime, LocalDate endTime);
@Override // override for covariant return type
LocalDateDoubleTimeSeries subSeries(LocalDate startTime, boolean includeStart, LocalDate endTime, boolean includeEnd);
@Override // override for covariant return type
LocalDateDoubleTimeSeries subSeriesFast(int startTime, int endTime);
@Override // override for covariant return type
LocalDateDoubleTimeSeries subSeriesFast(int startTime, boolean includeStart, int endTime, boolean includeEnd);
@Override // override for covariant return type
LocalDateDoubleTimeSeries head(int numItems);
@Override // override for covariant return type
LocalDateDoubleTimeSeries tail(int numItems);
@Override // override for covariant return type
LocalDateDoubleTimeSeries lag(int lagCount);
/**
* Obtain a new time-series with the same times and new values
*
* @param values the new values, not null
* @return time series, not null
*/
LocalDateDoubleTimeSeries withValues(double[] values);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateDoubleTimeSeries operate(UnaryOperator operator);
@Override // override for covariant return type
LocalDateDoubleTimeSeries operate(double other, BinaryOperator operator);
@Override // override for covariant return type
LocalDateDoubleTimeSeries operate(DateDoubleTimeSeries<?> otherTimeSeries, BinaryOperator operator);
@Override // override for covariant return type
LocalDateDoubleTimeSeries unionOperate(DateDoubleTimeSeries<?> otherTimeSeries, BinaryOperator operator);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateDoubleTimeSeries add(double amountToAdd);
@Override // override for covariant return type
LocalDateDoubleTimeSeries add(DoubleTimeSeries<?> other);
@Override // override for covariant return type
LocalDateDoubleTimeSeries unionAdd(DoubleTimeSeries<?> other);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateDoubleTimeSeries subtract(double amountToSubtract);
@Override // override for covariant return type
LocalDateDoubleTimeSeries subtract(DoubleTimeSeries<?> other);
@Override // override for covariant return type
LocalDateDoubleTimeSeries unionSubtract(DoubleTimeSeries<?> other);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateDoubleTimeSeries multiply(double amountToMultiplyBy);
@Override // override for covariant return type
LocalDateDoubleTimeSeries multiply(DoubleTimeSeries<?> other);
@Override // override for covariant return type
LocalDateDoubleTimeSeries unionMultiply(DoubleTimeSeries<?> other);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateDoubleTimeSeries divide(double amountToDivideBy);
@Override // override for covariant return type
LocalDateDoubleTimeSeries divide(DoubleTimeSeries<?> other);
@Override // override for covariant return type
LocalDateDoubleTimeSeries unionDivide(DoubleTimeSeries<?> other);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateDoubleTimeSeries power(double power);
@Override // override for covariant return type
LocalDateDoubleTimeSeries power(DoubleTimeSeries<?> other);
@Override // override for covariant return type
LocalDateDoubleTimeSeries unionPower(DoubleTimeSeries<?> other);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateDoubleTimeSeries minimum(double minValue);
@Override // override for covariant return type
LocalDateDoubleTimeSeries minimum(DoubleTimeSeries<?> other);
@Override // override for covariant return type
LocalDateDoubleTimeSeries unionMinimum(DoubleTimeSeries<?> other);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateDoubleTimeSeries maximum(double maxValue);
@Override // override for covariant return type
LocalDateDoubleTimeSeries maximum(DoubleTimeSeries<?> other);
@Override // override for covariant return type
LocalDateDoubleTimeSeries unionMaximum(DoubleTimeSeries<?> other);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateDoubleTimeSeries average(double value);
@Override // override for covariant return type
LocalDateDoubleTimeSeries average(DoubleTimeSeries<?> other);
@Override // override for covariant return type
LocalDateDoubleTimeSeries unionAverage(DoubleTimeSeries<?> other);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateDoubleTimeSeries intersectionFirstValue(DoubleTimeSeries<?> other);
@Override // override for covariant return type
LocalDateDoubleTimeSeries intersectionSecondValue(DoubleTimeSeries<?> other);
@Override // override for covariant return type
LocalDateDoubleTimeSeries noIntersectionOperation(DoubleTimeSeries<?> other);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateDoubleTimeSeries negate();
@Override // override for covariant return type
LocalDateDoubleTimeSeries reciprocal();
@Override // override for covariant return type
LocalDateDoubleTimeSeries log();
@Override // override for covariant return type
LocalDateDoubleTimeSeries log10();
@Override // override for covariant return type
LocalDateDoubleTimeSeries abs();
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateDoubleTimeSeriesBuilder toBuilder();
}