/**
* 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 org.threeten.bp.LocalDate;
import com.opengamma.analytics.financial.instrument.InstrumentDefinitionVisitorAdapter;
import com.opengamma.analytics.financial.instrument.fra.ForwardRateAgreementDefinition;
import com.opengamma.analytics.financial.instrument.payment.CouponCMSDefinition;
import com.opengamma.analytics.financial.instrument.payment.CouponFixedAccruedCompoundingDefinition;
import com.opengamma.analytics.financial.instrument.payment.CouponFixedCompoundingDefinition;
import com.opengamma.analytics.financial.instrument.payment.CouponFixedDefinition;
import com.opengamma.analytics.financial.instrument.payment.CouponIborAverageFixingDatesCompoundingDefinition;
import com.opengamma.analytics.financial.instrument.payment.CouponIborAverageFixingDatesDefinition;
import com.opengamma.analytics.financial.instrument.payment.CouponIborAverageFixingDatesCompoundingFlatSpreadDefinition;
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.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.CouponONCompoundedDefinition;
import com.opengamma.analytics.financial.instrument.payment.CouponONDefinition;
import com.opengamma.analytics.financial.instrument.payment.CouponONSpreadDefinition;
import com.opengamma.util.tuple.Pair;
import com.opengamma.util.tuple.Pairs;
/**
*
*/
public class CouponAccrualDatesVisitor extends InstrumentDefinitionVisitorAdapter<Void, Pair<LocalDate, LocalDate>> {
@Override
public Pair<LocalDate, LocalDate> visitCouponFixedDefinition(final CouponFixedDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponFixedAccruedCompoundingDefinition(
CouponFixedAccruedCompoundingDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborDefinition(CouponIborDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborAverageDefinition(CouponIborAverageIndexDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborSpreadDefinition(CouponIborSpreadDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborGearingDefinition(CouponIborGearingDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborCompoundingDefinition(CouponIborCompoundingDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborCompoundingSpreadDefinition(
CouponIborCompoundingSpreadDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborCompoundingFlatSpreadDefinition(
CouponIborCompoundingFlatSpreadDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborRatchetDefinition(CouponIborRatchetDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponOISDefinition(CouponONDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponONCompoundedDefinition(CouponONCompoundedDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponCMSDefinition(CouponCMSDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponFixedCompoundingDefinition(CouponFixedCompoundingDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponArithmeticAverageONSpreadDefinition(
CouponONArithmeticAverageSpreadDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponONSpreadDefinition(
CouponONSpreadDefinition payment, Void data) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponONSpreadDefinition(
CouponONSpreadDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponArithmeticAverageONDefinition(
CouponONArithmeticAverageDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborAverageFixingDatesDefinition(
CouponIborAverageFixingDatesDefinition payment, Void data) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborAverageFixingDatesDefinition(
CouponIborAverageFixingDatesDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborAverageCompoundingDefinition(
CouponIborAverageFixingDatesCompoundingDefinition payment, Void data) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborAverageCompoundingDefinition(
CouponIborAverageFixingDatesCompoundingDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborAverageFlatCompoundingSpreadDefinition(
CouponIborAverageFixingDatesCompoundingFlatSpreadDefinition payment, Void data) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitCouponIborAverageFlatCompoundingSpreadDefinition(
CouponIborAverageFixingDatesCompoundingFlatSpreadDefinition payment) {
return Pairs.of(payment.getAccrualStartDate().toLocalDate(), payment.getAccrualEndDate().toLocalDate());
}
@Override
public Pair<LocalDate, LocalDate> visitForwardRateAgreementDefinition(ForwardRateAgreementDefinition fra) {
return Pairs.of(fra.getAccrualStartDate().toLocalDate(), fra.getAccrualEndDate().toLocalDate());
}
}