/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.bbg.security;
import static com.opengamma.bbg.BloombergConstants.BLOOMBERG_DATA_SOURCE_NAME;
import java.util.Map;
import com.opengamma.bbg.loader.BloombergBulkSecurityLoader;
import com.opengamma.bbg.referencedata.ReferenceDataProvider;
import com.opengamma.financial.timeseries.exchange.ExchangeDataProvider;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.UniqueId;
import com.opengamma.master.security.ManageableSecurity;
import com.opengamma.provider.security.SecurityProviderRequest;
import com.opengamma.provider.security.SecurityProviderResult;
import com.opengamma.provider.security.impl.AbstractSecurityProvider;
/**
* Provider of security information from the Bloomberg data source.
*/
public final class BloombergSecurityProvider extends AbstractSecurityProvider {
/**
* Bloomberg scheme.
*/
public static final String BLOOMBERG_SCHEME = "Bloomberg";
/**
* The underlying loader.
*/
private final BloombergBulkSecurityLoader _bloombergBulkSecurityLoader;
/**
* Creates an instance.
*
* @param refDataProvider the reference data provider, not null
* @param exchangeDataProvider the data provider, not null
*/
public BloombergSecurityProvider(ReferenceDataProvider refDataProvider, ExchangeDataProvider exchangeDataProvider) {
super(BLOOMBERG_DATA_SOURCE_NAME);
_bloombergBulkSecurityLoader = new BloombergBulkSecurityLoader(refDataProvider, exchangeDataProvider);
}
//-------------------------------------------------------------------------
@Override
protected SecurityProviderResult doBulkGet(SecurityProviderRequest request) {
Map<ExternalIdBundle, ManageableSecurity> map = _bloombergBulkSecurityLoader.loadSecurity(request.getExternalIdBundles());
return new SecurityProviderResult(map);
}
//-------------------------------------------------------------------------
/**
* Creates a unique identifier.
*
* @param value the value, not null
* @return a Bloomberg unique identifier, not null
*/
public static UniqueId createUniqueId(String value) {
return UniqueId.of(BLOOMBERG_SCHEME, value);
}
}