/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.interestrate;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponCMS;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponFixed;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponFixedAccruedCompounding;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponFixedCompounding;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIbor;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborAverage;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborAverageFixingDatesCompounding;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborAverageFixingDates;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborAverageFixingDatesCompoundingFlatSpread;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborCompounding;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborCompoundingFlatSpread;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborCompoundingSpread;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborGearing;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponIborSpread;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponON;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponONArithmeticAverageSpread;
import com.opengamma.analytics.financial.interestrate.payments.derivative.CouponONCompounded;
import com.opengamma.analytics.financial.model.interestrate.curve.YieldAndDiscountCurve;
/**
*
*/
public class CouponPaymentDiscountFactorVisitor extends InstrumentDerivativeVisitorAdapter<YieldCurveBundle, Double> {
@Override
public Double visitCouponFixed(final CouponFixed payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponFixedAccruedCompounding(final CouponFixedAccruedCompounding payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponIbor(final CouponIbor payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponIborAverage(final CouponIborAverage payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponIborSpread(final CouponIborSpread payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponIborGearing(final CouponIborGearing payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponIborCompounding(final CouponIborCompounding payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponIborCompoundingSpread(final CouponIborCompoundingSpread payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponIborCompoundingFlatSpread(final CouponIborCompoundingFlatSpread payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponOIS(final CouponON payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponONCompounded(final CouponONCompounded payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponCMS(final CouponCMS payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponFixedCompounding(final CouponFixedCompounding payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponONArithmeticAverageSpread(final CouponONArithmeticAverageSpread payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponIborAverageFixingDates(final CouponIborAverageFixingDates payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponIborAverageCompounding(final CouponIborAverageFixingDatesCompounding payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
@Override
public Double visitCouponIborAverageFlatCompoundingSpread(final CouponIborAverageFixingDatesCompoundingFlatSpread payment, final YieldCurveBundle curves) {
final YieldAndDiscountCurve curve = curves.getCurve(payment.getFundingCurveName());
return curve.getDiscountFactor(payment.getPaymentTime());
}
}