/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.provider.security.impl; import java.util.Collection; import java.util.Map; import com.opengamma.core.security.Security; import com.opengamma.id.ExternalIdBundle; import com.opengamma.provider.security.SecurityProvider; import com.opengamma.provider.security.SecurityProviderRequest; import com.opengamma.provider.security.SecurityProviderResult; import com.opengamma.util.ArgumentChecker; /** * Abstract implementation of a provider of security information. * <p> * This provides default implementations of the interface methods that delegate to a * protected method that subclasses must implement. */ public abstract class AbstractSecurityProvider implements SecurityProvider { /** * The data source name. */ private final String _dataSourceRegex; /** * Creates an instance. * * @param dataSourceRegex the data source regex, not null */ public AbstractSecurityProvider(String dataSourceRegex) { ArgumentChecker.notNull(dataSourceRegex, "dataSourceRegex"); _dataSourceRegex = dataSourceRegex; } //------------------------------------------------------------------------- @Override public Security getSecurity(ExternalIdBundle externalIdBundle) { SecurityProviderRequest request = SecurityProviderRequest.createGet(externalIdBundle, null); SecurityProviderResult result = getSecurities(request); return result.getResultMap().get(externalIdBundle); } @Override public Map<ExternalIdBundle, Security> getSecurities(Collection<ExternalIdBundle> externalIdBundles) { SecurityProviderRequest request = SecurityProviderRequest.createGet(externalIdBundles, null); SecurityProviderResult result = getSecurities(request); return result.getResultMap(); } //------------------------------------------------------------------------- @Override public SecurityProviderResult getSecurities(SecurityProviderRequest request) { ArgumentChecker.notNull(request, "request"); ArgumentChecker.isTrue(request.getDataSource() == null || request.getDataSource().matches(_dataSourceRegex), "Unsupported data source: " + request.getDataSource()); // short-cut empty case if (request.getExternalIdBundles().isEmpty()) { return new SecurityProviderResult(); } // get securities return doBulkGet(request); } /** * Gets the securities. * <p> * The data source is checked before this method is invoked. * * @param request the request, with a non-empty set of identifiers, not null * @return the result, not null */ protected abstract SecurityProviderResult doBulkGet(SecurityProviderRequest request); }