Package com.opengamma.master.exchange.impl

Source Code of com.opengamma.master.exchange.impl.MasterExchangeSource

/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.master.exchange.impl;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import com.opengamma.core.AbstractSourceWithExternalBundle;
import com.opengamma.core.exchange.Exchange;
import com.opengamma.core.exchange.ExchangeSource;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.VersionCorrection;
import com.opengamma.master.AbstractMasterSource;
import com.opengamma.master.exchange.ExchangeDocument;
import com.opengamma.master.exchange.ExchangeMaster;
import com.opengamma.master.exchange.ExchangeSearchRequest;
import com.opengamma.master.exchange.ManageableExchange;
import com.opengamma.util.PublicSPI;
import com.opengamma.util.paging.PagingRequest;

/**
* An {@code ExchangeSource} implemented using an underlying {@code ExchangeMaster}.
* <p>
* The {@link ExchangeSource} interface provides exchanges to the application via a narrow API. This class provides the source on top of a standard {@link ExchangeMaster}.
*/
@PublicSPI
public class MasterExchangeSource
    extends AbstractMasterSource<Exchange, ExchangeDocument, ExchangeMaster>
    implements ExchangeSource {

  /**
   * Creates an instance with an underlying master which does not override versions.
   *
   * @param master the master, not null
   */
  public MasterExchangeSource(final ExchangeMaster master) {
    super(master);
  }

  /**
   * Creates an instance with an underlying master optionally overriding the requested version.
   *
   * @param master the master, not null
   * @param versionCorrection the version-correction locator to search at, null to not override versions
   */
  public MasterExchangeSource(final ExchangeMaster master, VersionCorrection versionCorrection) {
    super(master, versionCorrection);
  }

  //-------------------------------------------------------------------------
  @SuppressWarnings({"unchecked", "rawtypes" })
  @Override
  public Collection<Exchange> get(ExternalIdBundle bundle, VersionCorrection versionCorrection) {
    ExchangeSearchRequest searchRequest = new ExchangeSearchRequest(bundle);
    searchRequest.setVersionCorrection(getVersionCorrection());
    return (List) getMaster().search(searchRequest).getExchanges();
  }

  @Override
  public ManageableExchange getSingle(ExternalId identifier) {
    return getSingle(identifier.toBundle());
  }

  @Override
  public ManageableExchange getSingle(ExternalIdBundle identifiers) {
    return getSingle(identifiers, getVersionCorrection());
  }

  @Override
  public Map<ExternalIdBundle, Collection<Exchange>> getAll(Collection<ExternalIdBundle> bundles, VersionCorrection versionCorrection) {
    return AbstractSourceWithExternalBundle.getAll(this, bundles, versionCorrection);
  }

  @Override
  public Collection<Exchange> get(ExternalIdBundle bundle) {
    return get(bundle, getVersionCorrection());
  }

  @Override
  public ManageableExchange getSingle(ExternalIdBundle bundle, VersionCorrection versionCorrection) {
    ExchangeSearchRequest searchRequest = new ExchangeSearchRequest(bundle);
    searchRequest.setPagingRequest(PagingRequest.ONE);
    searchRequest.setVersionCorrection(versionCorrection);
    return getMaster().search(searchRequest).getFirstExchange();
  }

  @Override
  public Map<ExternalIdBundle, Exchange> getSingle(Collection<ExternalIdBundle> bundles, VersionCorrection versionCorrection) {
    return AbstractSourceWithExternalBundle.getSingle(this, bundles, versionCorrection);
  }

}
TOP

Related Classes of com.opengamma.master.exchange.impl.MasterExchangeSource

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.