/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.bbg.loader; import static com.opengamma.bbg.BloombergConstants.FIELD_COUNTRY_ISO; import static com.opengamma.bbg.BloombergConstants.FIELD_CRNCY; import static com.opengamma.bbg.BloombergConstants.FIELD_ID_BBG_UNIQUE; import static com.opengamma.bbg.BloombergConstants.FIELD_MARKET_SECTOR_DES; import static com.opengamma.bbg.BloombergConstants.FIELD_NAME; import static com.opengamma.bbg.BloombergConstants.FIELD_TICKER; import static com.opengamma.bbg.util.BloombergDataUtils.isValidField; import java.util.Collections; import java.util.Set; import org.fudgemsg.FudgeMsg; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.collect.Sets; import com.opengamma.bbg.referencedata.ReferenceDataProvider; import com.opengamma.bbg.util.BloombergDataUtils; import com.opengamma.master.security.ManageableSecurity; /** * Loads the data for an Cash Security from Bloomberg. */ public final class CashLoader extends SecurityLoader { /** Logger. */ private static final Logger s_logger = LoggerFactory.getLogger(CashLoader.class); /** * The fields to load from Bloomberg. */ private static final Set<String> BLOOMBERG_CASH_FIELDS = Collections.unmodifiableSet(Sets.newHashSet( FIELD_TICKER, FIELD_MARKET_SECTOR_DES, FIELD_ID_BBG_UNIQUE, FIELD_CRNCY, FIELD_COUNTRY_ISO, FIELD_NAME )); /** * Creates an instance. * @param referenceDataProvider the provider, not null */ public CashLoader(ReferenceDataProvider referenceDataProvider) { super(s_logger, referenceDataProvider, SecurityType.CASH); } //------------------------------------------------------------------------- @Override protected ManageableSecurity createSecurity(FudgeMsg fieldData) { String ticker = fieldData.getString(FIELD_TICKER); String currency = fieldData.getString(FIELD_CRNCY); if (currency != null) { currency = currency.toUpperCase(); } String marketSector = fieldData.getString(FIELD_MARKET_SECTOR_DES); String countryIso = fieldData.getString(FIELD_COUNTRY_ISO); String bbgUniqueID = fieldData.getString(FIELD_ID_BBG_UNIQUE); String name = fieldData.getString(FIELD_NAME); if (!isValidField(bbgUniqueID)) { s_logger.warn("bbgUniqueID is missing, cannot construct cash security"); return null; } if (!isValidField(name)) { s_logger.warn("name is missing, cannot construct cash security"); } if (!BloombergDataUtils.isValidField(ticker)) { s_logger.warn("equity ticker is missing, cannot construct cash security"); return null; } if (!BloombergDataUtils.isValidField(countryIso)) { s_logger.warn("equity exchange is missing, cannot construct cash security"); return null; } if (!BloombergDataUtils.isValidField(currency)) { s_logger.warn("equity currency is missing, cannot construct cash security"); return null; } // CashSecurity security = new CashSecurity(Currency.getInstance(currency), Identifier.of(InMemoryRegionRepository.ISO_COUNTRY_2, countryIso)); // security.setUniqueId(BloombergSecuritySource.createUniqueId(bbgUniqueID)); // security.setName(name); // //add other domain specific identifiers if available // if (BloombergDataUtil.isValidField(marketSector)) { // StringBuffer bbgTicker = new StringBuffer(ticker).append(" ").append(marketSector); // security.addIdentifier(Identifier.of(ExternalScheme.BLOOMBERG_TICKER, bbgTicker.toString())); // } // security.addIdentifier(Identifier.of(ExternalScheme.BLOOMBERG_BUID, bbgUniqueID)); // // return security; return null; } @Override protected Set<String> getBloombergFields() { return BLOOMBERG_CASH_FIELDS; } }