Package com.opengamma.financial.analytics.timeseries

Source Code of com.opengamma.financial.analytics.timeseries.TimeSeriesFunctions$Providers

/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.timeseries;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import com.opengamma.core.config.impl.ConfigItem;
import com.opengamma.engine.function.config.AbstractFunctionConfigurationBean;
import com.opengamma.engine.function.config.FunctionConfiguration;
import com.opengamma.engine.function.config.FunctionConfigurationSource;
import com.opengamma.engine.value.ValueRequirementNames;
import com.opengamma.financial.analytics.ircurve.YieldCurveDefinition;
import com.opengamma.financial.analytics.ircurve.calcconfig.MultiCurveCalculationConfig;
import com.opengamma.financial.analytics.model.curve.interestrate.ImpliedDepositCurveFunction;
import com.opengamma.master.config.ConfigDocument;
import com.opengamma.master.config.ConfigMaster;
import com.opengamma.master.config.ConfigSearchRequest;
import com.opengamma.master.config.impl.ConfigSearchIterator;

/**
* Function repository configuration source for the functions contained in this package.
*/
public class TimeSeriesFunctions extends AbstractFunctionConfigurationBean {

  /**
   * Default instance of a repository configuration source exposing the functions from this package.
   *
   * @return the configuration source exposing functions from this package
   */
  public static FunctionConfigurationSource instance() {
    return new TimeSeriesFunctions().getObjectCreating();
  }

  /**
   * Returns a factory that populates the repository with functions that produce {@link ValueRequirementNames#YIELD_CURVE_HISTORICAL_TIME_SERIES}
   * for all curve types <b>except</b> {@link ImpliedDepositCurveFunction#IMPLIED_DEPOSIT}
   * @param configMaster The configuration master
   * @return A function configuration source
   */
  public static FunctionConfigurationSource providers(final ConfigMaster configMaster) {
    final Providers factory = new Providers();
    factory.setConfigMaster(configMaster);
    return factory.getObjectCreating();
  }

  /**
   * Function repository configuration source for yield curve functions based on the items defined in a Config Master.
   */
  public static class Providers extends AbstractFunctionConfigurationBean {
    /** The configuration master */
    private ConfigMaster _configMaster;

    /**
     * Sets the configuration master.
     * @param configMaster The config master
     */
    public void setConfigMaster(final ConfigMaster configMaster) {
      _configMaster = configMaster;
    }

    /**
     * Gets the configuration master.
     * @return The configuration master.
     */
    public ConfigMaster getConfigMaster() {
      return _configMaster;
    }

    @Override
    protected void addAllConfigurations(final List<FunctionConfiguration> functions) {
      // search for the names of implied deposit curves and exclude from historical time series function
      final List<String> excludedCurves = new ArrayList<>();
      final ConfigSearchRequest<YieldCurveDefinition> searchRequest = new ConfigSearchRequest<>();
      searchRequest.setType(MultiCurveCalculationConfig.class);
      for (final ConfigDocument configDocument : ConfigSearchIterator.iterable(_configMaster, searchRequest)) {
        final String documentName = configDocument.getName();
        final MultiCurveCalculationConfig config = ((ConfigItem<MultiCurveCalculationConfig>) configDocument.getConfig()).getValue();
        if (config.getCalculationMethod().equals(ImpliedDepositCurveFunction.IMPLIED_DEPOSIT)) {
          excludedCurves.addAll(Arrays.asList(config.getYieldCurveNames()));
        }
      }
      if (excludedCurves.isEmpty()) {
        functions.add(functionConfiguration(YieldCurveHistoricalTimeSeriesFunction.class));
        functions.add(functionConfiguration(YieldCurveConversionSeriesFunction.class));
      } else {
        final String[] excludedCurvesArray = excludedCurves.toArray(new String[excludedCurves.size()]);
        functions.add(functionConfiguration(YieldCurveHistoricalTimeSeriesFunction.class, excludedCurvesArray));
        functions.add(functionConfiguration(YieldCurveConversionSeriesFunction.class, excludedCurvesArray));
      }
    }
  }

  @Override
  protected void addAllConfigurations(final List<FunctionConfiguration> functions) {
    functions.add(functionConfiguration(CreditSpreadCurveHistoricalTimeSeriesFunction.class));
    functions.add(functionConfiguration(CurveConfigurationHistoricalTimeSeriesFunction.class));
    functions.add(functionConfiguration(CurveHistoricalTimeSeriesFunction.class));
    functions.add(functionConfiguration(DefaultHistoricalTimeSeriesShiftFunction.class));
    functions.add(functionConfiguration(FXForwardCurveHistoricalTimeSeriesFunction.class));
    functions.add(functionConfiguration(FXForwardCurveNodeReturnSeriesFunction.class));
    functions.add(functionConfiguration(FXReturnSeriesFunction.class));
    functions.add(functionConfiguration(FXVolatilitySurfaceHistoricalTimeSeriesFunction.class));
    functions.add(functionConfiguration(HistoricalTimeSeriesFunction.class));
    functions.add(functionConfiguration(HistoricalTimeSeriesSecurityFunction.class));
    functions.add(functionConfiguration(HistoricalTimeSeriesLatestPositionProviderIdValueFunction.class));
    functions.add(functionConfiguration(HistoricalTimeSeriesLatestSecurityValueFunction.class));
    functions.add(functionConfiguration(HistoricalTimeSeriesLatestValueFunction.class));
    functions.add(functionConfiguration(HistoricalValuationFunction.class));
    functions.add(functionConfiguration(YieldCurveInstrumentConversionHistoricalTimeSeriesFunction.class));
    functions.add(functionConfiguration(YieldCurveInstrumentConversionHistoricalTimeSeriesShiftFunction.class));
    functions.add(functionConfiguration(YieldCurveInstrumentConversionHistoricalTimeSeriesFunctionDeprecated.class));
    functions.add(functionConfiguration(YieldCurveInstrumentConversionHistoricalTimeSeriesShiftFunctionDeprecated.class));
    functions.add(functionConfiguration(VolatilityWeightedFXForwardCurveNodeReturnSeriesFunction.class));
    functions.add(functionConfiguration(VolatilityWeightedFXReturnSeriesFunction.class));
    functions.add(functionConfiguration(VolatilityWeightedYieldCurveNodeReturnSeriesFunction.class));
    functions.add(functionConfiguration(YieldCurveNodeReturnSeriesFunction.class));
  }

}
TOP

Related Classes of com.opengamma.financial.analytics.timeseries.TimeSeriesFunctions$Providers

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.