Package com.opengamma.integration.tool.marketdata.manipulator.dsl

Source Code of com.opengamma.integration.tool.marketdata.manipulator.dsl.SaveScenario

/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.integration.tool.marketdata.manipulator.dsl;

import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;

import com.opengamma.component.tool.AbstractTool;
import com.opengamma.core.config.ConfigSource;
import com.opengamma.core.config.impl.ConfigItem;
import com.opengamma.engine.marketdata.manipulator.ScenarioDefinition;
import com.opengamma.financial.tool.ToolContext;
import com.opengamma.id.ObjectId;
import com.opengamma.id.UniqueId;
import com.opengamma.id.VersionCorrection;
import com.opengamma.integration.marketdata.manipulator.dsl.Scenario;
import com.opengamma.integration.marketdata.manipulator.dsl.SimulationUtils;
import com.opengamma.master.config.ConfigDocument;
import com.opengamma.master.config.ConfigMaster;
import com.opengamma.scripts.Scriptable;

/**
* Creates a scenario from a Groovy script and saves it the the config database.
*/
@Scriptable
public class SaveScenario extends AbstractTool<ToolContext> {

  /** Command line option for specifying the scenario script location on the filesystem. */
  private static final String SCRIPT_LOCATION = "scriptlocation";
  /** Command line option for specifying the scenario definition object ID. */
  private static final String SCENARIO_ID = "scenarioid";

  public static void main(String[] args) {
    new SaveScenario().initAndRun(args, ToolContext.class);
  }

  @Override
  protected void doRun() throws Exception {
    String scriptLocation = getCommandLine().getOptionValue('s');
    ConfigSource configSource = getToolContext().getConfigSource();
    ConfigMaster configMaster = getToolContext().getConfigMaster();

    Scenario scenario = SimulationUtils.createScenarioFromDsl(scriptLocation, null);
    ConfigItem<ScenarioDefinition> configItem = ConfigItem.of(scenario.createDefinition(), scenario.getName());
    if (getCommandLine().hasOption('i')) {
      ObjectId scenarioId = ObjectId.parse(getCommandLine().getOptionValue('i'));
      UniqueId latestScenarioId = configSource.get(scenarioId, VersionCorrection.LATEST).getUniqueId();
      configItem.setUniqueId(latestScenarioId);
      configMaster.update(new ConfigDocument(configItem));
    } else {
      configMaster.add(new ConfigDocument(configItem));
    }
  }

  @Override
  protected Options createOptions(boolean mandatoryConfigResource) {
    Options options = super.createOptions(mandatoryConfigResource);

    Option scriptLocation = new Option("s", SCRIPT_LOCATION, true, "Location of the scenario script on the filesystem");
    scriptLocation.setRequired(true);
    options.addOption(scriptLocation);

    Option scenarioId = new Option("i", SCENARIO_ID, true, "Object ID of the scenario definition. Omit to save as " +
        "a new definition");
    options.addOption(scenarioId);

    return options;
  }
}
TOP

Related Classes of com.opengamma.integration.tool.marketdata.manipulator.dsl.SaveScenario

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.