/**
* 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.engine.ComputationTarget;
import com.opengamma.engine.ComputationTargetSpecification;
import com.opengamma.engine.function.FunctionCompilationContext;
import com.opengamma.engine.function.FunctionExecutionContext;
import com.opengamma.engine.marketdata.OverrideOperation;
import com.opengamma.engine.value.ValuePropertyNames;
import com.opengamma.engine.value.ValueRequirementNames;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.util.money.Currency;
/**
* Functions to shift historical market data values used for yield curve construction, implemented using properties and constraints.
*/
public class YieldCurveInstrumentConversionHistoricalTimeSeriesShiftFunction extends AbstractHistoricalTimeSeriesShiftFunction<HistoricalTimeSeriesBundle> {
@Override
public boolean canApplyTo(final FunctionCompilationContext context, final ComputationTarget target) {
if (!super.canApplyTo(context, target)) {
return false;
}
return Currency.OBJECT_SCHEME.equals(target.getUniqueId().getScheme());
}
@Override
protected ValueSpecification getResult(final ComputationTargetSpecification targetSpecification) {
return new ValueSpecification(ValueRequirementNames.YIELD_CURVE_INSTRUMENT_CONVERSION_HISTORICAL_TIME_SERIES, targetSpecification, createValueProperties()
.withAny(ValuePropertyNames.CURVE)
.withAny(ValuePropertyNames.CURVE_CALCULATION_CONFIG).get());
}
@Override
protected HistoricalTimeSeriesBundle apply(final FunctionExecutionContext context, final OverrideOperation operation, final HistoricalTimeSeriesBundle value, final ValueSpecification valueSpec) {
return applyOverride(context, operation, value);
}
}