/** * 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 java.util.Set; import org.threeten.bp.ZonedDateTime; import com.opengamma.OpenGammaRuntimeException; import com.opengamma.analytics.financial.commodity.definition.AgricultureFutureDefinition; import com.opengamma.analytics.financial.commodity.definition.EnergyFutureDefinition; import com.opengamma.analytics.financial.commodity.definition.MetalFutureDefinition; import com.opengamma.analytics.financial.commodity.definition.SettlementType; import com.opengamma.analytics.financial.equity.future.definition.EquityFutureDefinition; import com.opengamma.analytics.financial.equity.future.definition.IndexFutureDefinition; import com.opengamma.analytics.financial.instrument.InstrumentDefinitionWithData; import com.opengamma.analytics.financial.instrument.future.BondFutureDefinition; import com.opengamma.financial.security.FinancialSecurityVisitor; import com.opengamma.financial.security.FinancialSecurityVisitorAdapter; import com.opengamma.financial.security.future.AgricultureFutureSecurity; import com.opengamma.financial.security.future.BondFutureSecurity; import com.opengamma.financial.security.future.EnergyFutureSecurity; import com.opengamma.financial.security.future.EquityFutureSecurity; import com.opengamma.financial.security.future.EquityIndexDividendFutureSecurity; import com.opengamma.financial.security.future.FutureSecurity; import com.opengamma.financial.security.future.IndexFutureSecurity; import com.opengamma.financial.security.future.MetalFutureSecurity; import com.opengamma.id.ExternalId; import com.opengamma.util.ArgumentChecker; /** * @deprecated Use {@link FutureSecurityConverter} */ @Deprecated public class FutureSecurityConverterDeprecated extends FinancialSecurityVisitorAdapter<InstrumentDefinitionWithData<?, Double>> implements FinancialSecurityVisitorWithData<Double, InstrumentDefinitionWithData<?, Double>> { private final BondFutureSecurityConverter _bondFutureConverter; public FutureSecurityConverterDeprecated(final BondFutureSecurityConverter bondFutureConverter) { _bondFutureConverter = bondFutureConverter; } @Override public InstrumentDefinitionWithData<?, Double> visit(final FutureSecurity future, final Double referencePrice) { final FinancialSecurityVisitor<InstrumentDefinitionWithData<?, Double>> visitor = new FinancialSecurityVisitorAdapter<InstrumentDefinitionWithData<?, Double>>() { @Override public InstrumentDefinitionWithData<?, Double> visitAgricultureFutureSecurity(final AgricultureFutureSecurity security) { ArgumentChecker.notNull(security, "security"); final ZonedDateTime expiry = security.getExpiry().getExpiry(); final Set<ExternalId> externalIds = security.getExternalIdBundle().getExternalIds(); if (externalIds == null) { throw new OpenGammaRuntimeException("Can't get security id"); } return new AgricultureFutureDefinition(expiry, externalIds.iterator().next(), security.getUnitNumber(), null, null, 1.0, security.getUnitName(), SettlementType.CASH, referencePrice, security.getCurrency(), expiry); } @Override public InstrumentDefinitionWithData<?, Double> visitEnergyFutureSecurity(final EnergyFutureSecurity security) { ArgumentChecker.notNull(security, "security"); final ZonedDateTime expiry = security.getExpiry().getExpiry(); final Set<ExternalId> externalIds = security.getExternalIdBundle().getExternalIds(); if (externalIds == null) { throw new OpenGammaRuntimeException("Can't get security id"); } return new EnergyFutureDefinition(expiry, externalIds.iterator().next(), security.getUnitNumber(), null, null, 1.0, security.getUnitName(), SettlementType.CASH, referencePrice, security.getCurrency(), expiry); } @Override public InstrumentDefinitionWithData<?, Double> visitMetalFutureSecurity(final MetalFutureSecurity security) { ArgumentChecker.notNull(security, "security"); final ZonedDateTime expiry = security.getExpiry().getExpiry(); final Set<ExternalId> externalIds = security.getExternalIdBundle().getExternalIds(); if (externalIds == null) { throw new OpenGammaRuntimeException("Can't get security id"); } return new MetalFutureDefinition(expiry, externalIds.iterator().next(), security.getUnitNumber(), null, null, 1.0, security.getUnitName(), SettlementType.CASH, referencePrice, security.getCurrency(), expiry); } @Override public InstrumentDefinitionWithData<?, Double> visitEquityIndexDividendFutureSecurity(final EquityIndexDividendFutureSecurity security) { final ZonedDateTime expiry = security.getExpiry().getExpiry(); return new EquityFutureDefinition(expiry, expiry, referencePrice, security.getCurrency(), security.getUnitAmount()); } @Override public InstrumentDefinitionWithData<?, Double> visitEquityFutureSecurity(final EquityFutureSecurity security) { final ZonedDateTime expiry = security.getExpiry().getExpiry(); return new EquityFutureDefinition(expiry, expiry, referencePrice, security.getCurrency(), security.getUnitAmount()); } @Override public InstrumentDefinitionWithData<?, Double> visitIndexFutureSecurity(final IndexFutureSecurity security) { final ZonedDateTime expiry = security.getExpiry().getExpiry(); return new IndexFutureDefinition(expiry, expiry, referencePrice, security.getCurrency(), security.getUnitAmount(), security.getUnderlyingId()); } @SuppressWarnings("synthetic-access") @Override public InstrumentDefinitionWithData<?, Double> visitBondFutureSecurity(final BondFutureSecurity security) { return (BondFutureDefinition) security.accept(_bondFutureConverter); } }; return future.accept(visitor); } @Override public InstrumentDefinitionWithData<?, Double> visitAgricultureFutureSecurity(final AgricultureFutureSecurity security) { return visit(security, 0.0); } @Override public InstrumentDefinitionWithData<?, Double> visitEnergyFutureSecurity(final EnergyFutureSecurity security) { return visit(security, 0.0); } @Override public InstrumentDefinitionWithData<?, Double> visitMetalFutureSecurity(final MetalFutureSecurity security) { return visit(security, 0.0); } @Override public InstrumentDefinitionWithData<?, Double> visitEquityIndexDividendFutureSecurity(final EquityIndexDividendFutureSecurity security) { return visit(security, 0.); } @Override public InstrumentDefinitionWithData<?, Double> visitEquityFutureSecurity(final EquityFutureSecurity security) { return visit(security, 0.); } @Override public InstrumentDefinitionWithData<?, Double> visitIndexFutureSecurity(final IndexFutureSecurity security) { return visit(security, 0.); } @Override public InstrumentDefinitionWithData<?, Double> visitBondFutureSecurity(final BondFutureSecurity security) { return (BondFutureDefinition) security.accept(_bondFutureConverter); } }