/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.timeseries; import com.opengamma.core.historicaltimeseries.HistoricalTimeSeriesSource; import com.opengamma.engine.ComputationTargetSpecification; import com.opengamma.engine.function.FunctionExecutionContext; import com.opengamma.engine.marketdata.OverrideOperation; import com.opengamma.engine.value.ValueRequirementNames; import com.opengamma.engine.value.ValueSpecification; import com.opengamma.financial.OpenGammaExecutionContext; import com.opengamma.id.ExternalIdBundle; /** * Function to shift the latest historical market data values, implemented using properties and constraints. */ public class HistoricalTimeSeriesLatestValueShiftFunction extends AbstractHistoricalTimeSeriesShiftFunction<Double> { @Override protected ValueSpecification getResult(final ComputationTargetSpecification targetSpecification) { return new ValueSpecification(ValueRequirementNames.HISTORICAL_TIME_SERIES_LATEST, targetSpecification, createValueProperties() .withAny(HistoricalTimeSeriesFunctionUtils.ADJUST_PROPERTY) .withAny(HistoricalTimeSeriesFunctionUtils.DATA_FIELD_PROPERTY).get()); } @Override protected Double apply(final FunctionExecutionContext context, final OverrideOperation operation, final Double value, final ValueSpecification valueSpec) { final HistoricalTimeSeriesSource htsSource = OpenGammaExecutionContext.getHistoricalTimeSeriesSource(context); final ExternalIdBundle ids = htsSource.getExternalIdBundle(valueSpec.getTargetSpecification().getUniqueId()); return applyOverride(context, operation, valueSpec.getProperty(HistoricalTimeSeriesFunctionUtils.DATA_FIELD_PROPERTY), ids, value); } }