/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.historicaltimeseries;
import java.util.Map;
import org.threeten.bp.Duration;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.timeseries.precise.zdt.ZonedDateTimeDoubleTimeSeries;
import com.opengamma.util.PublicSPI;
/**
* Cache storing historical values while the engine is running.
* <p>
* The values can be used for graphing. For example, it would be possible to show
* graphically the historical evolution of fair value on AAPL stock for the
* past 24 hours, in 1-minute bars.
*/
@PublicSPI
public interface IntradayComputationCache {
/**
* Instructs the cache to store historical information at the given resolution.
* If this resolution already exists, changes numPoints to the given value.
*
* @param resolution the resolution you want, not null
* @param numPoints how many points to store at this resolution, one or greater
* @throws IllegalArgumentException if numPoints <= 0
*/
void addResolution(Duration resolution, int numPoints);
/**
* Instructs the cache to stop storing historical information at the given resolution.
* If this resolution does not exist, does nothing.
*
* @param resolution the resolution you no longer want, not null
*/
void removeResolution(Duration resolution);
/**
* Gets all currently active resolutions.
*
* @return a map of the resolutions to number of points, not null
*/
Map<Duration, Integer> getResolutions();
/**
* Gets all values stored in the intraday cache for the given specification.
* For example, find fair value on AAPL stock at a 5-minute resolution.
* <p>
* Points in the time series before the last point are at a fixed interval
* (i.e., the resolution, e.g., 5 minutes). However, the last point in the time-series
* is the result of the very last calculation, so the time difference between the last
* point and the previous one can be something other than the resolution interval.
*
* @param viewName the view you want the results for
* (the computation cache runs within a ViewProcessor, so it may be handling multiple views)
* @param calcConf the calculation configuration name, such as 'Default'
* @param specification the value specification, such as fair value on AAPL stock, not null
* @param resolution the resolution, such as 5-minute resolution, not null
* @return all values stored in the cache for the given specification at the given resolution,
* null if no values are found
* @throws IllegalArgumentException if the given resolution has not been set up
*/
ZonedDateTimeDoubleTimeSeries getValue(
String viewName,
String calcConf,
ValueSpecification specification,
Duration resolution);
}