Package com.quantcomponents.core.osgi.internal

Source Code of com.quantcomponents.core.osgi.internal.ShellInterpreter

/*******************************************************************************
* Copyright (c) 2013 Luigi Sgro. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Luigi Sgro - initial API and implementation
******************************************************************************/
package com.quantcomponents.core.osgi.internal;

import java.util.Calendar;
import java.util.Currency;
import java.util.Date;
import java.util.TimeZone;

import com.quantcomponents.core.model.BarSize;
import com.quantcomponents.core.model.BareDate;
import com.quantcomponents.core.model.DataType;
import com.quantcomponents.core.model.ISeriesListener;
import com.quantcomponents.core.model.ITaskMonitor;
import com.quantcomponents.core.model.OptionRight;
import com.quantcomponents.core.model.SecurityType;
import com.quantcomponents.core.model.beans.ContractBean;

public class ShellInterpreter {
  public static final String SCOPE = "quant";
  private static final String[][] COMMMAND_USAGE = {
    {"date","returns java.util.Date","int\tyear","int\tmonth","int\tdate","int\thour","int\tmin","int\tseconds"},
    {"baredate","returns a BareDate","int\tyear","int\tmonth","int\tdate"},
    {"baredate","returns a BareDate","String date [example: baredate 20131231]"},
    {"timezone","returns a TimeZone","String ID [example: timezone \"Europe/Rome\"]"},
    {"mytimezone","returns default TimeZone"},
    {"barsize","returns a BarSize","String barsize [example: barsize FIFTEEN_MINS]"},
    {"datatype","returns a DataType","String datatype [example: datatype TRADES]"},
    {"optionright","returns a OptionRight","String ( CALL | PUT )"},
    {"contract","returns a IContract","String symbol","String sectype","String currency"},
    {"taskmonitor","returns a dummy ITaskMonitor"},
    {"serieslistener","returns a test ISeriesListener, which dumps data on console"},
    {"marketdataprovider","returns a low-level IMarketDataProvider, if available"},
    {"marketdatamanager","returns a IMarketDataManager, if available"},
    {"executionservice","returns a low-level IExecutionService, if available"},
    {"tradingmanager","returns a IStockDatabaseTradingManager, if available"}
  };
 
  private String[] findCommandHelp(String command) {
    for (String[] hlp : COMMMAND_USAGE) {
      if (hlp[0].equals(command)) {
        return hlp;
      }
    }
    return null;
  }
 
  private static final String buildHelp(String[] hlp) {
    StringBuilder buffer = new StringBuilder();
    buffer.append(" ").append(hlp[0]).append("\n");
    buffer.append("  scope: ").append(SCOPE).append("\n");
    buffer.append(" ").append(hlp[1]).append("\n");
    buffer.append("  parameters:\n");
    for (int i = 2; i < hlp.length; i++) {
      buffer.append("    ").append(hlp[i]).append("\n");
    }
    return buffer.toString();
  }
 
  public String help() {
    StringBuilder buffer = new StringBuilder();
    buffer.append("use: help <command> to get specific help\n");
    for (String[] cmd : COMMMAND_USAGE) {
      buffer.append(cmd[0]).append("\n");
    }
    return buffer.toString();
  }
 
  public String help(String command) {
    String[] hlp = findCommandHelp(command);
    if (hlp == null) {
      return "command not found: " + command;
    }
    return buildHelp(hlp);
  }
 
  public TimeZone mytimezone() {
    return TimeZone.getDefault();
  }
  public TimeZone timezone(String code) {
    return TimeZone.getTimeZone(code);
  }
  public BareDate baredate(String arg) {
    return new BareDate(arg);
  }
  public BareDate baredate(int year, int month, int day) {
    return new BareDate(year, month, day);
  }
  public Date date(int year, int month, int day, int hour, int minute, int second) {
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.MILLISECOND, 0);
    cal.set(year, month - 1, day, hour, minute, second);
    return cal.getTime();
  }
  public BarSize barsize(String name) {
    return BarSize.valueOf(name);
  }
  public DataType datatype(String name) {
    return DataType.valueOf(name);
  }
  public SecurityType sectype(String name) {
    return SecurityType.valueOf(name);
  }
  public OptionRight optionright(String name) {
    return OptionRight.valueOf(name);
  }
  public ContractBean contract(String symbol, String secTypeCode, String curCode) {
    ContractBean c = new ContractBean();
    c.setSymbol(symbol);
    c.setCurrency(Currency.getInstance(curCode));
    c.setSecurityType(SecurityType.valueOf(secTypeCode));
    return c;
  }
  public ITaskMonitor taskmonitor() {
    return new DummyTaskMonitor();
  }
  public ISeriesListener<Date, Double> serieslistener() {
    return new DummyTimeSeriesListener();
  }
}
TOP

Related Classes of com.quantcomponents.core.osgi.internal.ShellInterpreter

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.