/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.conversion; import org.apache.commons.lang.Validate; import com.opengamma.analytics.financial.instrument.InstrumentDefinition; import com.opengamma.core.holiday.HolidaySource; import com.opengamma.core.position.Trade; import com.opengamma.core.region.RegionSource; import com.opengamma.core.security.Security; import com.opengamma.core.security.SecuritySource; import com.opengamma.financial.convention.ConventionBundleSource; import com.opengamma.financial.security.FinancialSecurity; import com.opengamma.financial.security.FinancialSecurityVisitor; import com.opengamma.financial.security.FinancialSecurityVisitorAdapter; import com.opengamma.financial.security.bond.BondSecurity; import com.opengamma.financial.security.future.BondFutureSecurity; import com.opengamma.financial.security.future.InterestRateFutureSecurity; import com.opengamma.financial.security.option.IRFutureOptionSecurity; import com.opengamma.id.VersionCorrection; /** * @deprecated This class uses deprecated trade and security converters. */ @Deprecated public class InterestRateInstrumentTradeOrSecurityConverter { private final FinancialSecurityVisitor<InstrumentDefinition<?>> _securityVisitor; private final BondFutureTradeConverter _bondFutureConverter; private final BondTradeConverter _bondTradeConverter; private final InterestRateFutureTradeConverterDeprecated _interestRateFutureTradeConverter; private final InterestRateFutureOptionTradeConverterDeprecated _interestRateFutureOptionTradeConverter; public InterestRateInstrumentTradeOrSecurityConverter(final HolidaySource holidaySource, final ConventionBundleSource conventionSource, final RegionSource regionSource, final SecuritySource securitySource, final boolean forCurves, final VersionCorrection versionCorrection) { Validate.notNull(holidaySource, "holiday source"); Validate.notNull(conventionSource, "convention source"); Validate.notNull(regionSource, "region source"); Validate.notNull(securitySource, "security source"); final CashSecurityConverter cashConverter = new CashSecurityConverter(holidaySource, regionSource); final FRASecurityConverterDeprecated fraConverter = new FRASecurityConverterDeprecated(holidaySource, regionSource, conventionSource); final SwapSecurityConverterDeprecated swapConverter = new SwapSecurityConverterDeprecated(holidaySource, conventionSource, regionSource, forCurves); final BondSecurityConverter bondConverter = new BondSecurityConverter(holidaySource, conventionSource, regionSource); final InterestRateFutureOptionSecurityConverterDeprecated irFutureOptionConverter = new InterestRateFutureOptionSecurityConverterDeprecated(holidaySource, conventionSource, regionSource, securitySource, versionCorrection); final InterestRateFutureSecurityConverterDeprecated irFutureConverter = new InterestRateFutureSecurityConverterDeprecated(holidaySource, conventionSource, regionSource); final BondFutureSecurityConverter bondFutureConverter = new BondFutureSecurityConverter(securitySource, bondConverter); final ZeroDepositConverter zeroDepositConverter = new ZeroDepositConverter(conventionSource, holidaySource); _securityVisitor = FinancialSecurityVisitorAdapter.<InstrumentDefinition<?>>builder() .cashSecurityVisitor(cashConverter) .fraSecurityVisitor(fraConverter) .swapSecurityVisitor(swapConverter) .interestRateFutureSecurityVisitor(irFutureConverter) .bondSecurityVisitor(bondConverter) .periodicZeroDepositSecurityVisitor(zeroDepositConverter).create(); _bondTradeConverter = new BondTradeConverter(bondConverter); _bondFutureConverter = new BondFutureTradeConverter(bondFutureConverter); _interestRateFutureTradeConverter = new InterestRateFutureTradeConverterDeprecated(irFutureConverter); _interestRateFutureOptionTradeConverter = new InterestRateFutureOptionTradeConverterDeprecated(irFutureOptionConverter); } public InstrumentDefinition<?> visit(final Trade trade) { Validate.notNull(trade, "trade"); final FinancialSecurity security = (FinancialSecurity) trade.getSecurity(); if (security instanceof BondSecurity) { return _bondTradeConverter.convert(trade); } else if (security instanceof BondFutureSecurity) { return _bondFutureConverter.convert(trade); } else if (security instanceof InterestRateFutureSecurity) { return _interestRateFutureTradeConverter.convert(trade); } else if (security instanceof IRFutureOptionSecurity) { return _interestRateFutureOptionTradeConverter.convert(trade); } return security.accept(_securityVisitor); } public InstrumentDefinition<?> visit(final Security security) { return ((FinancialSecurity) security).accept(_securityVisitor); } }