/**
* 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.ObjectTimeSeriesOperators.BinaryOperator;
import com.opengamma.timeseries.ObjectTimeSeriesOperators.UnaryOperator;
import com.opengamma.timeseries.date.DateObjectTimeSeries;
import com.opengamma.timeseries.date.DateTimeSeries;
/**
* A time series that stores {@code Object} 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}.
*
* @param <V> the value being viewed over time
*/
public interface LocalDateObjectTimeSeries<V>
extends DateObjectTimeSeries<LocalDate, V> {
/**
* 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 LocalDateObjectIterator}.
*
* @return the iterator, not null
*/
@Override // override for covariant return type
LocalDateObjectEntryIterator<V> iterator();
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> subSeries(LocalDate startTime, LocalDate endTime);
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> subSeries(LocalDate startTime, boolean includeStart, LocalDate endTime, boolean includeEnd);
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> subSeriesFast(int startTime, int endTime);
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> subSeriesFast(int startTime, boolean includeStart, int endTime, boolean includeEnd);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> head(int numItems);
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> tail(int numItems);
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> lag(int lagCount);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> operate(UnaryOperator<V> operator);
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> operate(V other, BinaryOperator<V> operator);
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> operate(DateObjectTimeSeries<?, V> otherTimeSeries, BinaryOperator<V> operator);
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> unionOperate(DateObjectTimeSeries<?, V> otherTimeSeries, BinaryOperator<V> operator);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> intersectionFirstValue(DateObjectTimeSeries<?, V> other);
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> intersectionSecondValue(DateObjectTimeSeries<?, V> other);
@Override // override for covariant return type
LocalDateObjectTimeSeries<V> noIntersectionOperation(DateObjectTimeSeries<?, V> other);
//-------------------------------------------------------------------------
@Override // override for covariant return type
LocalDateObjectTimeSeriesBuilder<V> toBuilder();
}