/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.integration.marketdata; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import com.opengamma.component.ComponentRepository; import com.opengamma.component.tool.AbstractTool; import com.opengamma.financial.tool.ToolContext; import com.opengamma.livedata.LiveDataClient; import com.opengamma.scripts.Scriptable; /** * */ @Scriptable public class PeriodicLiveDataTimeSeriesStorageTool extends AbstractTool<ToolContext> { /** File name option flag */ public static final String FILE_NAME_OPT = "f"; /** Time series data source option flag*/ public static final String TIME_SERIES_DATASOURCE_OPT = "s"; /** Time series data provider option flag*/ public static final String TIME_SERIES_DATAPROVIDER_OPT = "p"; /** User name for Live Data entitlements. */ public static final String USER_NAME_OPT = "u"; /** Flag for whether to actually write to the DB. */ public static final String WRITE_TO_DB_OPT = "w"; //------------------------------------------------------------------------- /** * Main method to run the tool. * * @param args the standard tool arguments, not null */ public static void main(String[] args) throws Exception { //CSIGNORE PeriodicLiveDataTimeSeriesStorageTool tool = new PeriodicLiveDataTimeSeriesStorageTool(); tool.invokeAndTerminate(args); } //------------------------------------------------------------------------- /** * Initiates the system. */ @Override protected void doRun() { String fileName = getCommandLine().getOptionValue(FILE_NAME_OPT); String userName = getCommandLine().getOptionValue(USER_NAME_OPT); LiveDataClient ldc = ComponentRepository.getThreadLocal().getInstance(LiveDataClient.class, "main"); PeriodicLiveDataTimeSeriesStorageServer server = new PeriodicLiveDataTimeSeriesStorageServer( userName, ldc, getToolContext().getHistoricalTimeSeriesMaster(), getCommandLine().getOptionValue(TIME_SERIES_DATASOURCE_OPT), getCommandLine().getOptionValue(TIME_SERIES_DATAPROVIDER_OPT), getCommandLine().hasOption(WRITE_TO_DB_OPT)); if (fileName != null) { server.setInitializationFileName(fileName); } server.start(); // This is ridiculous and I'm clearly doing the wrong thing. But this is the only way // to keep the thing running after init. // I think AbstractTool isn't the right thing here. while (true) { try { Thread.sleep(10000L); } catch (InterruptedException ex) { // TODO Auto-generated catch block ex.printStackTrace(); } } } @Override protected Options createOptions(boolean contextProvided) { Options options = super.createOptions(contextProvided); Option filenameOption = new Option( FILE_NAME_OPT, "filename", true, "The path to the file containing data to import (CSV or ZIP)"); filenameOption.setRequired(false); options.addOption(filenameOption); Option timeSeriesDataSourceOption = new Option( TIME_SERIES_DATASOURCE_OPT, "source", true, "The name of the time series data source"); timeSeriesDataSourceOption.setRequired(true); options.addOption(timeSeriesDataSourceOption); Option timeSeriesDataProviderOption = new Option( TIME_SERIES_DATAPROVIDER_OPT, "provider", true, "The name of the time series data provider"); timeSeriesDataProviderOption.setRequired(true); options.addOption(timeSeriesDataProviderOption); Option userNameOption = new Option( USER_NAME_OPT, "user", true, "The name of the user for entitlement checking"); userNameOption.setRequired(false); options.addOption(userNameOption); Option writeToDbOption = new Option( WRITE_TO_DB_OPT, "write", false, "Set to enable writing to DB. False by default for safety"); writeToDbOption.setRequired(false); options.addOption(writeToDbOption); return options; } }