/**
* 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 definition sources into a single source.
*/
public class AggregatingVolatilityCubeDefinitionSource implements VolatilityCubeDefinitionSource {
/** The definition sources */
private final Collection<VolatilityCubeDefinitionSource> _sources;
/**
* @param sources A collection of sources, not null
*/
public AggregatingVolatilityCubeDefinitionSource(final Collection<VolatilityCubeDefinitionSource> sources) {
ArgumentChecker.notNull(sources, "sources");
_sources = new ArrayList<>(sources);
}
@Override
public VolatilityCubeDefinition<?, ?, ?> getDefinition(final String name) {
for (final VolatilityCubeDefinitionSource source : _sources) {
final VolatilityCubeDefinition<?, ?, ?> definition = source.getDefinition(name);
if (definition != null) {
return definition;
}
}
return null;
}
@Override
public VolatilityCubeDefinition<?, ?, ?> getDefinition(final String name, final VersionCorrection versionCorrection) {
for (final VolatilityCubeDefinitionSource source : _sources) {
final VolatilityCubeDefinition<?, ?, ?> definition = source.getDefinition(name, versionCorrection);
if (definition != null) {
return definition;
}
}
return null;
}
}