Package com.opengamma.integration.tool.hts

Source Code of com.opengamma.integration.tool.hts.BloombergHTSMasterUpdaterTool

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

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.threeten.bp.LocalDate;

import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.bbg.BloombergIdentifierProvider;
import com.opengamma.bbg.loader.hts.BloombergHTSMasterUpdater;
import com.opengamma.bbg.referencedata.ReferenceDataProvider;
import com.opengamma.component.tool.AbstractTool;
import com.opengamma.integration.tool.IntegrationToolContext;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesMaster;
import com.opengamma.provider.historicaltimeseries.HistoricalTimeSeriesProvider;
import com.opengamma.scripts.Scriptable;
import com.opengamma.util.time.DateUtils;

/**
* Tool to load time-series information from Bloomberg.
* <p>
* This loads missing historical time-series data from Bloomberg.
*/
@Scriptable
public class BloombergHTSMasterUpdaterTool extends AbstractTool<IntegrationToolContext> {
 
  private static final Logger s_logger = LoggerFactory.getLogger(BloombergHTSMasterUpdaterTool.class);
 
  /** Command line option. */
  private static final String RELOAD_OPTION = "reload";
  /** Command line option. */
  private static final String START_OPTION = "start";
  /** Command line option. */
  private static final String END_OPTION = "end";

  /**
   * Main method to run the tool.
   *
   * <pre>
   * usage: java com.opengamma.bbg.loader.BloombergTimeSeriesTool [options]... [files]...
   *  -e,--end (yyyymmdd)                            End date
   *  -h,--help                                      Print this message
   *  -r,--reload                                    Reload historical data
   *  -s,--start (yyyymmdd)                          Start date
   * </pre>
   *
   * @param args the command line arguments
   */
  public static void main(String[] args) {   // CSIGNORE
    boolean success = new BloombergHTSMasterUpdaterTool().initAndRun(args, IntegrationToolContext.class);
    System.exit(success ? 0 : 1);
  }

  //-------------------------------------------------------------------------
  @Override
  protected void doRun() throws Exception {
    final HistoricalTimeSeriesMaster historicalTimeSeriesMaster = getToolContext().getHistoricalTimeSeriesMaster();
    if (historicalTimeSeriesMaster == null) {
      s_logger.warn("Historical timeseries master is missing in toolContext");
      return;
    }
    HistoricalTimeSeriesProvider historicalTimeSeriesProvider = getToolContext().getHistoricalTimeSeriesProvider();
    if (historicalTimeSeriesProvider == null) {
      s_logger.warn("Historical timeseries provider is missing in toolContext");
      return;
    }
    ReferenceDataProvider bloombergReferenceDataProvider = getToolContext().getBloombergReferenceDataProvider();
    if (bloombergReferenceDataProvider == null) {
      s_logger.warn("Bloomberg reference data provider is missing in toolContext");
      return;
    }
   
    BloombergHTSMasterUpdater loader = new BloombergHTSMasterUpdater(historicalTimeSeriesMaster, historicalTimeSeriesProvider, new BloombergIdentifierProvider(bloombergReferenceDataProvider));
    configureOptions(getCommandLine(), loader);
   
    loader.run();
  }

  private static void configureOptions(CommandLine line, BloombergHTSMasterUpdater dataLoader) {
    if (line.hasOption(START_OPTION)) {
      String startOption = line.getOptionValue(START_OPTION);
      try {
        LocalDate startDate = DateUtils.toLocalDate(startOption);
        dataLoader.setStartDate(startDate);
      } catch (Exception ex) {
        throw new OpenGammaRuntimeException("Unable to parse start date " + startOption, ex);
      }
    }
    if (line.hasOption(END_OPTION)) {
      String endOption = line.getOptionValue(END_OPTION);
      try {
        LocalDate endDate = DateUtils.toLocalDate(endOption);
        dataLoader.setEndDate(endDate);
      } catch (Exception ex) {
        throw new OpenGammaRuntimeException("Unable to parse end date " + endOption, ex);
      }
    }
    dataLoader.setReload(line.hasOption(RELOAD_OPTION));
  }

  //-------------------------------------------------------------------------
  @Override
  protected Options createOptions(boolean mandatoryConfigResource) {
    Options options = super.createOptions(mandatoryConfigResource);
    options.addOption(createReloadOption());
    options.addOption(createStartOption());
    options.addOption(createEndOption());
    return options;
  }

  private static Option createReloadOption() {
    return new Option("r", RELOAD_OPTION, false, "Reload historical data");
  }

  private static Option createStartOption() {
    OptionBuilder.withLongOpt(START_OPTION);
    OptionBuilder.withDescription("Start date");
    OptionBuilder.hasArg();
    OptionBuilder.withArgName("yyyymmdd");
    return OptionBuilder.create("s");
  }

  private static Option createEndOption() {
    OptionBuilder.withLongOpt(END_OPTION);
    OptionBuilder.withDescription("End date");
    OptionBuilder.hasArg();
    OptionBuilder.withArgName("yyyymmdd");
    return OptionBuilder.create("e");
  }

}
TOP

Related Classes of com.opengamma.integration.tool.hts.BloombergHTSMasterUpdaterTool

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.