/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.security; import com.opengamma.core.id.ExternalSchemes; import com.opengamma.financial.security.bond.CorporateBondSecurity; import com.opengamma.financial.security.bond.GovernmentBondSecurity; import com.opengamma.financial.security.bond.MunicipalBondSecurity; import com.opengamma.financial.security.cash.CashSecurity; import com.opengamma.financial.security.cds.LegacyVanillaCDSSecurity; import com.opengamma.financial.security.cds.StandardVanillaCDSSecurity; import com.opengamma.financial.security.deposit.ContinuousZeroDepositSecurity; import com.opengamma.financial.security.deposit.PeriodicZeroDepositSecurity; import com.opengamma.financial.security.deposit.SimpleZeroDepositSecurity; import com.opengamma.financial.security.equity.EquityVarianceSwapSecurity; import com.opengamma.financial.security.fra.FRASecurity; import com.opengamma.financial.security.fx.FXForwardSecurity; import com.opengamma.financial.security.fx.NonDeliverableFXForwardSecurity; import com.opengamma.id.ExternalId; /** * Get the region for a security, null if not applicable */ public class RegionVisitor extends FinancialSecurityVisitorSameValueAdapter<ExternalId> { public RegionVisitor() { super(null); } @Override public ExternalId visitGovernmentBondSecurity(final GovernmentBondSecurity security) { return ExternalId.of(ExternalSchemes.ISO_COUNTRY_ALPHA2, security.getIssuerDomicile()); } @Override public ExternalId visitMunicipalBondSecurity(final MunicipalBondSecurity security) { return ExternalId.of(ExternalSchemes.ISO_COUNTRY_ALPHA2, security.getIssuerDomicile()); } @Override public ExternalId visitCorporateBondSecurity(final CorporateBondSecurity security) { return ExternalId.of(ExternalSchemes.ISO_COUNTRY_ALPHA2, security.getIssuerDomicile()); } @Override public ExternalId visitCashSecurity(final CashSecurity security) { return security.getRegionId(); } @Override public ExternalId visitFRASecurity(final FRASecurity security) { return security.getRegionId(); } @Override public ExternalId visitFXForwardSecurity(final FXForwardSecurity security) { return security.getRegionId(); } @Override public ExternalId visitNonDeliverableFXForwardSecurity(final NonDeliverableFXForwardSecurity security) { return security.getRegionId(); } @Override public ExternalId visitEquityVarianceSwapSecurity(final EquityVarianceSwapSecurity security) { return security.getRegionId(); } @Override public ExternalId visitSimpleZeroDepositSecurity(final SimpleZeroDepositSecurity security) { return security.getRegion(); } @Override public ExternalId visitPeriodicZeroDepositSecurity(final PeriodicZeroDepositSecurity security) { return security.getRegion(); } @Override public ExternalId visitContinuousZeroDepositSecurity(final ContinuousZeroDepositSecurity security) { return security.getRegion(); } @Override public ExternalId visitStandardVanillaCDSSecurity(final StandardVanillaCDSSecurity security) { return security.getRegionId(); } @Override public ExternalId visitLegacyVanillaCDSSecurity(final LegacyVanillaCDSSecurity security) { return security.getRegionId(); } }