/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.marketdata.availability; import java.util.Collection; import java.util.Set; import com.google.common.collect.ImmutableSet; import com.opengamma.engine.ComputationTargetSpecification; import com.opengamma.engine.value.ValueRequirement; import com.opengamma.id.ExternalId; import com.opengamma.id.ExternalScheme; import com.opengamma.id.UniqueId; import com.opengamma.util.ArgumentChecker; /** * Implements {@link MarketDataAvailabilityFilter} by providing an indication of whether an item of market data is <i>likely</i> to be available based on the scheme of its external identifiers and * other factors. */ public class DomainMarketDataAvailabilityFilter extends ValueNameMarketDataAvailabilityFilter { /** * The set of acceptable schemes. */ private final Set<ExternalScheme> _acceptableSchemes; /** * Creates a provider. * * @param acceptableSchemes the acceptable schemes, not null * @param validMarketDataRequirementNames the valid market data requirement names, not null */ public DomainMarketDataAvailabilityFilter(final Collection<ExternalScheme> acceptableSchemes, final Collection<String> validMarketDataRequirementNames) { super(validMarketDataRequirementNames); ArgumentChecker.notNull(acceptableSchemes, "acceptableSchemes"); _acceptableSchemes = ImmutableSet.copyOf(acceptableSchemes); } @Override public boolean isAvailable(final ComputationTargetSpecification targetSpec, final ExternalId identifier, final ValueRequirement desiredValue) { return _acceptableSchemes.contains(identifier.getScheme()) && super.isAvailable(targetSpec, identifier, desiredValue); } @Override public boolean isAvailable(final ComputationTargetSpecification targetSpec, final UniqueId identifier, final ValueRequirement desiredValue) { // There is no external identifier, so the scheme can never match return false; } }