/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.web.analytics.blotter; import com.opengamma.financial.security.FinancialSecurityVisitorSameValueAdapter; import com.opengamma.financial.security.option.CreditDefaultSwapOptionSecurity; import com.opengamma.financial.security.option.SwaptionSecurity; import com.opengamma.id.VersionCorrection; import com.opengamma.master.security.ManageableSecurity; import com.opengamma.master.security.SecurityMaster; import com.opengamma.master.security.SecuritySearchRequest; import com.opengamma.master.security.SecuritySearchResult; /** * */ public class UnderlyingSecurityVisitor extends FinancialSecurityVisitorSameValueAdapter<ManageableSecurity> { private final SecurityMaster _securityMaster; private final VersionCorrection _versionCorrection; public UnderlyingSecurityVisitor(VersionCorrection versionCorrection, SecurityMaster securityMaster) { super(null); _versionCorrection = versionCorrection; _securityMaster = securityMaster; } @Override public ManageableSecurity visitSwaptionSecurity(SwaptionSecurity security) { SecuritySearchResult result = _securityMaster.search(new SecuritySearchRequest(security.getUnderlyingId())); ManageableSecurity underlying = result.getSingleSecurity(); return _securityMaster.get(underlying.getUniqueId().getObjectId(), _versionCorrection).getSecurity(); } @Override public ManageableSecurity visitCreditDefaultSwapOptionSecurity(CreditDefaultSwapOptionSecurity security) { SecuritySearchResult result = _securityMaster.search(new SecuritySearchRequest(security.getUnderlyingId())); ManageableSecurity underlying = result.getSingleSecurity(); return _securityMaster.get(underlying.getUniqueId().getObjectId(), _versionCorrection).getSecurity(); } }