/** * 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 com.opengamma.core.config.ConfigSource; import com.opengamma.engine.function.FunctionCompilationContext; import com.opengamma.engine.function.FunctionDefinition; import com.opengamma.financial.config.ConfigSourceQuery; import com.opengamma.id.VersionCorrection; import com.opengamma.util.ArgumentChecker; /** * A source of volatility surface definitions based on configuration. * <p> * This supplies surface definitions from a {@link ConfigSource}. */ public class ConfigDBVolatilityCubeDefinitionSource implements VolatilityCubeDefinitionSource { /** * The config source for the data. */ @SuppressWarnings("rawtypes") private final ConfigSourceQuery<VolatilityCubeDefinition> _query; /** * Creates an instance backed by a config source. Uses the latest version correction. * * @param configSource the source, not null * @deprecated Use {@link #ConfigDBVolatilityCubeDefinitionSource(ConfigSource,VersionCorrection)} or {@link #init} instead */ @Deprecated public ConfigDBVolatilityCubeDefinitionSource(final ConfigSource configSource) { this(configSource, VersionCorrection.LATEST); } /** * @param configSource The config source, not null * @param versionCorrection The version correction, not null */ public ConfigDBVolatilityCubeDefinitionSource(final ConfigSource configSource, final VersionCorrection versionCorrection) { this(new ConfigSourceQuery<>(configSource, VolatilityCubeDefinition.class, versionCorrection)); } /** * @param query The config source query */ @SuppressWarnings("rawtypes") private ConfigDBVolatilityCubeDefinitionSource(final ConfigSourceQuery<VolatilityCubeDefinition> query) { _query = query; } /** * @param context The function compilation context, not null * @param function The function, not null * @return A volatility cube definition source bakced by a config source */ public static ConfigDBVolatilityCubeDefinitionSource init(final FunctionCompilationContext context, final FunctionDefinition function) { ArgumentChecker.notNull(context, "context"); ArgumentChecker.notNull(function, "function"); return new ConfigDBVolatilityCubeDefinitionSource(ConfigSourceQuery.init(context, function, VolatilityCubeDefinition.class)); } /** * Gets the config source. * * @return the config source, not null */ protected ConfigSource getConfigSource() { return _query.getConfigSource(); } //------------------------------------------------------------------------- @Override public VolatilityCubeDefinition<?, ?, ?> getDefinition(final String name) { return getDefinition(name, _query.getVersionCorrection()); } @Override public VolatilityCubeDefinition<?, ?, ?> getDefinition(final String name, final VersionCorrection versionCorrection) { final VolatilityCubeDefinition<?, ?, ?> definition = _query.get(name, versionCorrection); return definition; } }