/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.sensitivities; import java.util.List; import org.fudgemsg.FudgeMsgEnvelope; import com.opengamma.OpenGammaRuntimeException; import com.opengamma.core.security.Security; import com.opengamma.core.security.SecuritySource; import com.opengamma.master.security.RawSecurity; import com.opengamma.util.fudgemsg.OpenGammaFudgeContext; /** * Utilities for raw securities */ public class RawSecurityUtils { /** * @param security The security * @return true if security is externally provided sensitivities security */ public static boolean isExternallyProvidedSensitivitiesSecurity(Security security) { return (security instanceof RawSecurity) && security.getSecurityType().equals(SecurityEntryData.EXTERNAL_SENSITIVITIES_SECURITY_TYPE); } public static boolean isExternallyProvidedSensitivitiesFactorSetSecurity(Security security) { return (security instanceof RawSecurity) && security.getSecurityType().equals(FactorExposureData.EXTERNAL_SENSITIVITIES_RISK_FACTORS_SECURITY_TYPE); } public static SecurityEntryData decodeSecurityEntryData(RawSecurity rawSecurity) { FudgeMsgEnvelope msg = OpenGammaFudgeContext.getInstance().deserialize(rawSecurity.getRawData()); SecurityEntryData securityEntryData = OpenGammaFudgeContext.getInstance().fromFudgeMsg(SecurityEntryData.class, msg.getMessage()); return securityEntryData; } public static List<FactorExposureData> decodeFactorExposureData(SecuritySource secSource, RawSecurity rawSecurity) { FudgeMsgEnvelope msg = OpenGammaFudgeContext.getInstance().deserialize(rawSecurity.getRawData()); SecurityEntryData securityEntryData = OpenGammaFudgeContext.getInstance().fromFudgeMsg(SecurityEntryData.class, msg.getMessage()); RawSecurity underlyingRawSecurity = (RawSecurity) secSource.getSingle(securityEntryData.getFactorSetId().toBundle()); if (underlyingRawSecurity != null) { FudgeMsgEnvelope factorIdMsg = OpenGammaFudgeContext.getInstance().deserialize(underlyingRawSecurity.getRawData()); @SuppressWarnings("unchecked") List<FactorExposureData> factorExposureDataList = OpenGammaFudgeContext.getInstance().fromFudgeMsg(List.class, factorIdMsg.getMessage()); return factorExposureDataList; } else { throw new OpenGammaRuntimeException("Couldn't find factor list security " + securityEntryData.getFactorSetId()); } } }