/** * 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.instrument.InstrumentDefinitionVisitorAdapter; import com.opengamma.analytics.financial.instrument.fra.ForwardRateAgreementDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponFixedDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborAverageIndexDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborCompoundingDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborCompoundingFlatSpreadDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborCompoundingSimpleSpreadDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborCompoundingSpreadDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborGearingDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborRatchetDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponIborSpreadDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponONArithmeticAverageDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponONArithmeticAverageSpreadDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponONArithmeticAverageSpreadSimplifiedDefinition; import com.opengamma.analytics.financial.instrument.payment.CouponONDefinition; /** * Returns the fixing year fraction of the cash flow. */ public class CouponFixingYearFractionVisitor extends InstrumentDefinitionVisitorAdapter<Void, Double> { @Override public Double visitCouponIborDefinition(final CouponIborDefinition payment) { return payment.getFixingPeriodAccrualFactor(); } @Override public Double visitCouponIborSpreadDefinition(final CouponIborSpreadDefinition payment) { return payment.getFixingPeriodAccrualFactor(); } @Override public Double visitCouponIborGearingDefinition(final CouponIborGearingDefinition payment) { return payment.getFixingPeriodAccrualFactor(); } @Override public Double visitCouponIborRatchetDefinition(final CouponIborRatchetDefinition payment) { return payment.getFixingPeriodAccrualFactor(); } @Override public Double visitCouponIborCompoundingDefinition(final CouponIborCompoundingDefinition payment) { double total = 0.0; for (double fraction : payment.getFixingPeriodAccrualFactors()) { total += fraction; } return total; } @Override public Double visitCouponOISDefinition(final CouponONDefinition payment) { double total = 0.0; for (double fraction : payment.getFixingPeriodAccrualFactor()) { total += fraction; } return total; } @Override public Double visitCouponArithmeticAverageONSpreadDefinition(CouponONArithmeticAverageSpreadDefinition payment) { double total = 0.0; for (double fraction : payment.getFixingPeriodAccrualFactors()) { total += fraction; } return total; } @Override public Double visitCouponIborCompoundingFlatSpreadDefinition(CouponIborCompoundingFlatSpreadDefinition payment) { double total = 0.0; for (double fraction : payment.getFixingSubperiodAccrualFactors()) { total += fraction; } return total; } @Override public Double visitCouponFixedDefinition(final CouponFixedDefinition payment) { return null; } @Override public Double visitCouponIborAverageDefinition(CouponIborAverageIndexDefinition payment) { return payment.getFixingPeriodAccrualFactor1(); } @Override public Double visitCouponIborCompoundingSimpleSpreadDefinition(CouponIborCompoundingSimpleSpreadDefinition payment) { double total = 0.0; for (double fraction : payment.getFixingSubperiodAccrualFactors()) { total += fraction; } return total; } @Override public Double visitCouponIborCompoundingSpreadDefinition(CouponIborCompoundingSpreadDefinition payment) { double total = 0.0; for (double fraction : payment.getFixingPeriodAccrualFactors()) { total += fraction; } return total; } @Override public Double visitCouponArithmeticAverageONDefinition(CouponONArithmeticAverageDefinition payment) { double total = 0.0; for (double fraction : payment.getFixingPeriodAccrualFactors()) { total += fraction; } return total; } @Override public Double visitCouponArithmeticAverageONSpreadSimplifiedDefinition( CouponONArithmeticAverageSpreadSimplifiedDefinition payment) { return null; } @Override public Double visitForwardRateAgreementDefinition(ForwardRateAgreementDefinition fra) { return fra.getFixingPeriodAccrualFactor(); } }