/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.master.region.impl;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.opengamma.core.AbstractSourceWithExternalBundle;
import com.opengamma.core.region.Region;
import com.opengamma.core.region.RegionSource;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.VersionCorrection;
import com.opengamma.master.AbstractMasterSource;
import com.opengamma.master.region.ManageableRegion;
import com.opengamma.master.region.RegionDocument;
import com.opengamma.master.region.RegionMaster;
import com.opengamma.master.region.RegionSearchRequest;
import com.opengamma.util.PublicSPI;
import com.opengamma.util.paging.PagingRequest;
/**
* A {@code RegionSource} implemented using an underlying {@code RegionMaster}.
* <p>
* The {@link RegionSource} interface provides regions to the application via a narrow API. This class provides the source on top of a standard {@link RegionMaster}.
*/
@PublicSPI
public class MasterRegionSource extends AbstractMasterSource<Region, RegionDocument, RegionMaster> implements RegionSource {
/**
* Creates an instance with an underlying master.
*
* @param master the master, not null
*/
public MasterRegionSource(final RegionMaster master) {
super(master);
}
//-------------------------------------------------------------------------
@SuppressWarnings({"unchecked", "rawtypes" })
@Override
public Collection<Region> get(ExternalIdBundle bundle, VersionCorrection versionCorrection) {
RegionSearchRequest request = new RegionSearchRequest(bundle);
request.setVersionCorrection(versionCorrection);
return (List) getMaster().search(request).getRegions();
}
@Override
public ManageableRegion getHighestLevelRegion(ExternalId regionId) {
RegionSearchRequest request = new RegionSearchRequest(regionId);
request.setPagingRequest(PagingRequest.ONE);
return getMaster().search(request).getFirstRegion();
}
@Override
public ManageableRegion getHighestLevelRegion(ExternalIdBundle regionIds) {
RegionSearchRequest request = new RegionSearchRequest(regionIds);
request.setPagingRequest(PagingRequest.ONE);
return getMaster().search(request).getFirstRegion();
}
@Override
public Map<ExternalIdBundle, Collection<Region>> getAll(Collection<ExternalIdBundle> bundles, VersionCorrection versionCorrection) {
return AbstractSourceWithExternalBundle.getAll(this, bundles, versionCorrection);
}
@Override
public Collection<Region> get(ExternalIdBundle bundle) {
return AbstractSourceWithExternalBundle.get(this, bundle);
}
@Override
public Region getSingle(ExternalIdBundle bundle) {
return AbstractSourceWithExternalBundle.getSingle(this, bundle);
}
@Override
public Region getSingle(ExternalIdBundle bundle, VersionCorrection versionCorrection) {
return AbstractSourceWithExternalBundle.getSingle(this, bundle, versionCorrection);
}
@Override
public Map<ExternalIdBundle, Region> getSingle(Collection<ExternalIdBundle> bundles, VersionCorrection versionCorrection) {
return AbstractSourceWithExternalBundle.getSingle(this, bundles, versionCorrection);
}
}