/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.marketdata.availability; import java.io.Serializable; import java.util.Collection; import java.util.HashSet; 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.UniqueId; /** * A {@link MarketDataAvailabilityFilter} which determines availability based on the value names. */ public class ValueNameMarketDataAvailabilityFilter extends AbstractMarketDataAvailabilityFilter { /** * The set of acceptable market data fields. */ private final Set<String> _validMarketDataRequirementNames; /** * Creates a provider. * * @param validMarketDataRequirementNames the valid market data requirement names, not null */ public ValueNameMarketDataAvailabilityFilter(final Collection<String> validMarketDataRequirementNames) { _validMarketDataRequirementNames = ImmutableSet.copyOf(validMarketDataRequirementNames); } @Override public boolean isAvailable(final ComputationTargetSpecification targetSpec, final ExternalId identifier, final ValueRequirement desiredValue) { return _validMarketDataRequirementNames.contains(desiredValue.getValueName()); } @Override public boolean isAvailable(final ComputationTargetSpecification targetSpec, final UniqueId identifier, final ValueRequirement desiredValue) { return _validMarketDataRequirementNames.contains(desiredValue.getValueName()); } @Override protected void populateAvailabilityHintKey(final Collection<Serializable> key) { key.add(new HashSet<String>(_validMarketDataRequirementNames)); } }