/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.conversion; import java.util.Collections; import java.util.HashSet; import java.util.Set; import com.opengamma.financial.convention.ConventionBundleSource; import com.opengamma.financial.security.FinancialSecurityVisitorSameValueAdapter; import com.opengamma.financial.security.fra.FRASecurity; import com.opengamma.financial.security.future.InterestRateFutureSecurity; import com.opengamma.financial.security.swap.FloatingInterestRateLeg; import com.opengamma.financial.security.swap.SwapLeg; import com.opengamma.financial.security.swap.SwapSecurity; import com.opengamma.id.ExternalIdBundle; /** * */ public class YieldCurveFixingSeriesProvider extends FinancialSecurityVisitorSameValueAdapter<Set<ExternalIdBundle>> { private final ConventionBundleSource _conventionBundleSource; public YieldCurveFixingSeriesProvider(final ConventionBundleSource conventionBundleSource) { super(Collections.<ExternalIdBundle>emptySet()); _conventionBundleSource = conventionBundleSource; } @Override public Set<ExternalIdBundle> visitFRASecurity(final FRASecurity security) { return Collections.singleton(_conventionBundleSource.getConventionBundle(security.getUnderlyingId()).getIdentifiers()); } @Override public Set<ExternalIdBundle> visitSwapSecurity(final SwapSecurity security) { final SwapLeg payLeg = security.getPayLeg(); final SwapLeg receiveLeg = security.getReceiveLeg(); final Set<ExternalIdBundle> idBundles = new HashSet<>(); if (payLeg instanceof FloatingInterestRateLeg) { final FloatingInterestRateLeg floatLeg = (FloatingInterestRateLeg) payLeg; idBundles.add(_conventionBundleSource.getConventionBundle(floatLeg.getFloatingReferenceRateId()).getIdentifiers()); } if (receiveLeg instanceof FloatingInterestRateLeg) { final FloatingInterestRateLeg floatLeg = (FloatingInterestRateLeg) receiveLeg; idBundles.add(_conventionBundleSource.getConventionBundle(floatLeg.getFloatingReferenceRateId()).getIdentifiers()); } return idBundles; } @Override public Set<ExternalIdBundle> visitInterestRateFutureSecurity(final InterestRateFutureSecurity security) { return Collections.singleton(security.getExternalIdBundle()); } }