/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.volatility.cube; import java.util.ArrayList; import java.util.Collection; import com.opengamma.id.VersionCorrection; import com.opengamma.util.ArgumentChecker; /** * Aggregates an ordered set of volatility cube specification sources into a single source. */ public class AggregatingVolatilityCubeSpecificationSource implements VolatilityCubeSpecificationSource { /** The specification sources */ private final Collection<VolatilityCubeSpecificationSource> _sources; /** * @param sources A collection of sources, not null */ public AggregatingVolatilityCubeSpecificationSource(final Collection<VolatilityCubeSpecificationSource> sources) { ArgumentChecker.notNull(sources, "sources"); _sources = new ArrayList<>(sources); } @Override public VolatilityCubeSpecification getSpecification(final String name) { for (final VolatilityCubeSpecificationSource source : _sources) { final VolatilityCubeSpecification specification = source.getSpecification(name); if (specification != null) { return specification; } } return null; } @Override public VolatilityCubeSpecification getSpecification(final String name, final VersionCorrection versionCorrection) { for (final VolatilityCubeSpecificationSource source : _sources) { final VolatilityCubeSpecification specification = source.getSpecification(name, versionCorrection); if (specification != null) { return specification; } } return null; } }