/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.model.volatility.cube;
import java.util.Collections;
import java.util.Set;
import com.opengamma.engine.ComputationTarget;
import com.opengamma.engine.function.FunctionCompilationContext;
import com.opengamma.engine.target.ComputationTargetType;
import com.opengamma.engine.value.ValuePropertyNames;
import com.opengamma.engine.value.ValueRequirement;
import com.opengamma.engine.value.ValueRequirementNames;
import com.opengamma.financial.property.DefaultPropertyFunction;
import com.opengamma.util.ArgumentChecker;
/**
*
*/
public class SABRNonLinearLeastSquaresSwaptionCubeFittingDefaults extends DefaultPropertyFunction {
private final String _currency;
private final String _cube;
public SABRNonLinearLeastSquaresSwaptionCubeFittingDefaults(final String currency, final String cube) {
super(ComputationTargetType.CURRENCY, true);
ArgumentChecker.notNull(currency, "currency");
ArgumentChecker.notNull(cube, "cube");
_currency = currency;
_cube = cube;
}
@Override
protected void getDefaults(final PropertyDefaults defaults) {
defaults.addValuePropertyName(ValueRequirementNames.SABR_SURFACES, ValuePropertyNames.CURRENCY);
defaults.addValuePropertyName(ValueRequirementNames.SABR_SURFACES, ValuePropertyNames.CUBE);
defaults.addValuePropertyName(ValueRequirementNames.VOLATILITY_CUBE_FITTED_POINTS, ValuePropertyNames.CURRENCY);
defaults.addValuePropertyName(ValueRequirementNames.VOLATILITY_CUBE_FITTED_POINTS, ValuePropertyNames.CUBE);
}
@Override
protected Set<String> getDefaultValue(final FunctionCompilationContext context, final ComputationTarget target, final ValueRequirement desiredValue, final String propertyName) {
if (ValuePropertyNames.CURRENCY.equals(propertyName)) {
return Collections.singleton(_currency);
}
if (ValuePropertyNames.CUBE.equals(propertyName)) {
return Collections.singleton(_cube);
}
return null;
}
}