/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.bbg.replay; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * * * @author yomi */ public final class BloombergTicksCollectorLauncher { /* package */static final String CONFIG_XML_CLASSPATH = "/com/opengamma/bbg/replay/bloomberg-ticks-collector-context.xml"; private ConfigurableApplicationContext _context; /** Logger. */ private static final Logger s_logger = LoggerFactory.getLogger(BloombergTicksCollectorLauncher.class); /** * */ private BloombergTicksCollectorLauncher() { ConfigurableApplicationContext context = new ClassPathXmlApplicationContext(CONFIG_XML_CLASSPATH); _context = context; Runtime.getRuntime().addShutdownHook(new ShutDownThread()); } public void run() { _context.start(); } public void exit() { _context.stop(); } /** * Starts the Bloomberg Ticks Collector. * * @param args Not needed */ public static void main(String[] args) { // CSIGNORE int duration = 0; CommandLineParser parser = new PosixParser(); Options options = new Options(); options.addOption("d", "duration", true, "minutes to run"); try { CommandLine cmd = parser.parse(options, args); if (cmd.hasOption("duration")) { duration = Integer.parseInt(cmd.getOptionValue("duration")); } } catch (ParseException exp) { s_logger.error("Option parsing failed: {}", exp.getMessage()); return; } BloombergTicksCollectorLauncher launcher = new BloombergTicksCollectorLauncher(); launcher.run(); if (duration > 0) { try { Thread.sleep(duration * 60 * 1000); } catch (InterruptedException e) { } launcher.exit(); } } private class ShutDownThread extends Thread { @Override public void run() { exit(); } } }