/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.function.blacklist; import java.util.ArrayList; import java.util.Collection; import com.opengamma.engine.ComputationTargetSpecification; import com.opengamma.engine.calcnode.CalculationJobItem; import com.opengamma.engine.depgraph.DependencyNode; import com.opengamma.engine.depgraph.DependencyNodeFunction; import com.opengamma.engine.function.FunctionParameters; import com.opengamma.engine.value.ValueSpecification; import com.opengamma.util.ArgumentChecker; /** * Wraps multiple {@link FunctionBlacklistQuery} instances up as a single point that can be used to test a potential invocation. */ public class MultipleFunctionBlacklistQuery implements FunctionBlacklistQuery { private final Collection<FunctionBlacklistQuery> _underlying; public MultipleFunctionBlacklistQuery(final Collection<FunctionBlacklistQuery> underlying) { ArgumentChecker.notNull(underlying, "underlying"); _underlying = new ArrayList<FunctionBlacklistQuery>(underlying); } private Collection<FunctionBlacklistQuery> getUnderlying() { return _underlying; } @Override public boolean isEmpty() { for (FunctionBlacklistQuery underlying : getUnderlying()) { if (!underlying.isEmpty()) { return false; } } return true; } @Override public boolean isBlacklisted(final String functionIdentifier, final FunctionParameters functionParameters) { for (FunctionBlacklistQuery underlying : getUnderlying()) { if (underlying.isBlacklisted(functionIdentifier, functionParameters)) { return true; } } return false; } @Override public boolean isBlacklisted(final DependencyNodeFunction function) { for (FunctionBlacklistQuery underlying : getUnderlying()) { if (underlying.isBlacklisted(function)) { return true; } } return false; } @Override public boolean isBlacklisted(final ComputationTargetSpecification target) { for (FunctionBlacklistQuery underlying : getUnderlying()) { if (underlying.isBlacklisted(target)) { return true; } } return false; } @Override public boolean isBlacklisted(final String functionIdentifier, final FunctionParameters functionParameters, final ComputationTargetSpecification target) { for (FunctionBlacklistQuery underlying : getUnderlying()) { if (underlying.isBlacklisted(functionIdentifier, functionParameters, target)) { return true; } } return false; } @Override public boolean isBlacklisted(final DependencyNodeFunction function, final ComputationTargetSpecification target) { for (FunctionBlacklistQuery underlying : getUnderlying()) { if (underlying.isBlacklisted(function, target)) { return true; } } return false; } @Override public boolean isBlacklisted(final String functionIdentifier, final FunctionParameters functionParameters, final ComputationTargetSpecification target, final ValueSpecification[] inputs, final ValueSpecification[] outputs) { for (FunctionBlacklistQuery underlying : getUnderlying()) { if (underlying.isBlacklisted(functionIdentifier, functionParameters, target, inputs, outputs)) { return true; } } return false; } @Override public boolean isBlacklisted(final String functionIdentifier, final FunctionParameters functionParameters, final ComputationTargetSpecification target, final Collection<ValueSpecification> inputs, final Collection<ValueSpecification> outputs) { for (FunctionBlacklistQuery underlying : getUnderlying()) { if (underlying.isBlacklisted(functionIdentifier, functionParameters, target, inputs, outputs)) { return true; } } return false; } @Override public boolean isBlacklisted(final DependencyNodeFunction function, final ComputationTargetSpecification target, final ValueSpecification[] inputs, final ValueSpecification[] outputs) { for (FunctionBlacklistQuery underlying : getUnderlying()) { if (underlying.isBlacklisted(function, target, inputs, outputs)) { return true; } } return false; } @Override public boolean isBlacklisted(final DependencyNodeFunction function, final ComputationTargetSpecification target, final Collection<ValueSpecification> inputs, final Collection<ValueSpecification> outputs) { for (FunctionBlacklistQuery underlying : getUnderlying()) { if (underlying.isBlacklisted(function, target, inputs, outputs)) { return true; } } return false; } @Override public boolean isBlacklisted(final DependencyNode node) { for (FunctionBlacklistQuery underlying : getUnderlying()) { if (underlying.isBlacklisted(node)) { return true; } } return false; } @Override public boolean isBlacklisted(final CalculationJobItem jobItem) { for (FunctionBlacklistQuery underlying : getUnderlying()) { if (underlying.isBlacklisted(jobItem)) { return true; } } return false; } }