/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.calculator;
import com.opengamma.analytics.financial.interestrate.InstrumentDerivative;
import com.opengamma.analytics.financial.interestrate.InstrumentDerivativeVisitorAdapter;
import com.opengamma.analytics.financial.interestrate.InstrumentDerivativeVisitorSameMethodAdapter;
import com.opengamma.analytics.financial.interestrate.YieldCurveBundle;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.money.Currency;
import com.opengamma.util.money.MultipleCurrencyAmount;
/**
* A present value calculator that convert a multi-currency present value into a given currency.
* @deprecated {@link YieldCurveBundle} is deprecated
*/
@Deprecated
public class PresentValueConvertedCalculator extends InstrumentDerivativeVisitorSameMethodAdapter<YieldCurveBundle, Double> {
/**
* The currency in which the present value should be converted.
*/
private final Currency _currency;
/**
* The present value calculator (with MultiCurrencyAmount output)
*/
private final InstrumentDerivativeVisitorAdapter<YieldCurveBundle, MultipleCurrencyAmount> _pvCalculator;
/**
* Constructor.
* @param currency The currency in which the present value should be converted.
* @param pvCalculator The present value calculator (with MultiCurrencyAmount output).
*/
public PresentValueConvertedCalculator(final Currency currency, final InstrumentDerivativeVisitorAdapter<YieldCurveBundle, MultipleCurrencyAmount> pvCalculator) {
_currency = currency;
_pvCalculator = pvCalculator;
}
@Override
public Double visit(final InstrumentDerivative derivative, final YieldCurveBundle curves) {
ArgumentChecker.notNull(curves, "curves");
ArgumentChecker.notNull(derivative, "derivative");
return curves.getFxRates().convert(derivative.accept(_pvCalculator, curves), _currency).getAmount();
}
@Override
public Double visit(final InstrumentDerivative derivative) {
throw new UnsupportedOperationException("Need curves data");
}
}