/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.bbg.livedata.faketicks; import java.util.Collection; import java.util.HashSet; import java.util.Set; import com.opengamma.livedata.LiveDataSpecification; import com.opengamma.util.tuple.ObjectsPair; /** * Selects a subscription as Fake iff * any of the child subscription selectors select it as a fake */ public class UnionFakeSubscriptionSelector implements FakeSubscriptionSelector { private final FakeSubscriptionSelector[] _fakeSubscriptionSelectors; public UnionFakeSubscriptionSelector(FakeSubscriptionSelector... fakeSubscriptionSelectors) { _fakeSubscriptionSelectors = fakeSubscriptionSelectors; } @Override public ObjectsPair<Collection<LiveDataSpecification>, Collection<LiveDataSpecification>> splitShouldFake( FakeSubscriptionBloombergLiveDataServer server, Collection<LiveDataSpecification> uniqueIds) { Collection<LiveDataSpecification> real = uniqueIds; Set<LiveDataSpecification> fakes = new HashSet<LiveDataSpecification>(); for (FakeSubscriptionSelector subSelector : _fakeSubscriptionSelectors) { ObjectsPair<Collection<LiveDataSpecification>, Collection<LiveDataSpecification>> split = subSelector.splitShouldFake(server, real); real = split.first; fakes.addAll(split.second); if (real.isEmpty()) { break; } } return ObjectsPair.of(real, (Collection<LiveDataSpecification>) fakes); } }