/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.view; import java.util.HashSet; import java.util.Set; import com.opengamma.DataNotFoundException; import com.opengamma.id.ObjectId; import com.opengamma.id.VersionCorrection; import com.opengamma.master.config.ConfigDocument; import com.opengamma.master.config.ConfigMaster; import com.opengamma.util.ArgumentChecker; /** * A {@link WatchSetProvider} that takes a config reference and replaces it with an alternative scheme and name of the document. */ public class ConfigDbOverrideWatchSetProvider implements WatchSetProvider { private final String _configScheme; private final ConfigMaster _configMaster; private final Set<String> _schemes; public ConfigDbOverrideWatchSetProvider(final String configScheme, final ConfigMaster configMaster, final Set<String> schemes) { ArgumentChecker.notNull(configScheme, "configScheme"); ArgumentChecker.notNull(configMaster, "configMaster"); ArgumentChecker.notNull(schemes, "schemes"); _configScheme = configScheme; _configMaster = configMaster; _schemes = new HashSet<String>(schemes); } @Override public Set<ObjectId> getAdditionalWatchSet(final Set<ObjectId> watchSet) { final Set<ObjectId> result = new HashSet<ObjectId>(); for (String scheme : _schemes) { for (ObjectId watch : watchSet) { if (_configScheme.equals(watch.getScheme())) { try { final ConfigDocument doc = _configMaster.get(watch, VersionCorrection.LATEST); result.add(ObjectId.of(scheme, doc.getName())); } catch (DataNotFoundException ex) { // ignore } } } } return result; } }