com.opengamma.integration.tool.marketdata.manipulator.dsl.SaveScenario.java Source code

Java tutorial

Introduction

Here is the source code for com.opengamma.integration.tool.marketdata.manipulator.dsl.SaveScenario.java

Source

/**
 * 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;
    }
}