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