/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.fxforwardcurve; 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; /** * */ public class ConfigDBFXForwardCurveDefinitionSource implements FXForwardCurveDefinitionSource { private final ConfigSourceQuery<FXForwardCurveDefinition> _query; /** * @param configSource the config source, not null * @deprecated Use {@link #ConfigDBFXForwardCurveDefinitionSource(ConfigSource,VersionCorrection)}, {@link #ConfigDBFXForwardCurveDefinitionSource(ConfigSourceQuery)} or {@link #init} instead */ @Deprecated public ConfigDBFXForwardCurveDefinitionSource(final ConfigSource configSource) { this(configSource, VersionCorrection.LATEST); } public ConfigDBFXForwardCurveDefinitionSource(final ConfigSource configSource, final VersionCorrection versionCorrection) { this(new ConfigSourceQuery<FXForwardCurveDefinition>(configSource, FXForwardCurveDefinition.class, versionCorrection)); } public ConfigDBFXForwardCurveDefinitionSource(final ConfigSourceQuery<FXForwardCurveDefinition> query) { _query = ArgumentChecker.notNull(query, "query"); } public static ConfigDBFXForwardCurveDefinitionSource init(final FunctionCompilationContext context, final FunctionDefinition function) { return new ConfigDBFXForwardCurveDefinitionSource(ConfigSourceQuery.init(context, function, FXForwardCurveDefinition.class)); } @Override public FXForwardCurveDefinition getDefinition(final String name, final String currencyPair) { return getDefinition(name, currencyPair, _query.getVersionCorrection()); } @Override public FXForwardCurveDefinition getDefinition(final String name, final String currencyPair, final VersionCorrection versionCorrection) { ArgumentChecker.notNull(name, "name"); ArgumentChecker.notNull(currencyPair, "currency pair"); final FXForwardCurveDefinition definition = _query.get(name + "_" + currencyPair + "_FX_FORWARD", versionCorrection); if (definition == null) { if (currencyPair.length() == 6) { final String firstCcy = currencyPair.substring(0, 3); final String secondCcy = currencyPair.substring(3, 6); final String reversedCcys = secondCcy + firstCcy; return _query.get(name + "_" + reversedCcys + "_FX_FORWARD", versionCorrection); } } return definition; } }