⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (c) 2004-2007 Marco Maccaferri and others. * 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: *     Marco Maccaferri - initial API and implementation */package net.sourceforge.eclipsetrader.opentick.internal;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import net.sourceforge.eclipsetrader.opentick.OpenTickPlugin;import net.sourceforge.eclipsetrader.opentick.ui.dialogs.LoginDialog;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import com.opentick.OTBBO;import com.opentick.OTBookCancel;import com.opentick.OTBookChange;import com.opentick.OTBookDelete;import com.opentick.OTBookExecute;import com.opentick.OTBookOrder;import com.opentick.OTBookPriceLevel;import com.opentick.OTBookPurge;import com.opentick.OTBookReplace;import com.opentick.OTClient;import com.opentick.OTConstants;import com.opentick.OTDividend;import com.opentick.OTEquityInit;import com.opentick.OTError;import com.opentick.OTMMQuote;import com.opentick.OTMessage;import com.opentick.OTOHLC;import com.opentick.OTOptionInit;import com.opentick.OTQuote;import com.opentick.OTSplit;import com.opentick.OTTodaysOHL;import com.opentick.OTTrade;public class Client extends OTClient{    private static Client instance;    Map streamListeners = new HashMap();    List listeners = new ArrayList();    Thread thread;    private Log log = LogFactory.getLog(getClass());    static Map statusText = new HashMap();    Client()    {    }        public static synchronized Client getInstance()    {        if (instance == null)        {            instance = new Client();            switch(OpenTickPlugin.getDefault().getPreferenceStore().getInt(OpenTickPlugin.PREFS_SERVER))            {                case 0:                    instance.addHost("feed1.opentick.com", 10015); //delayed data                    break;                case 1:                    instance.addHost("feed1.opentick.com", 10010); //real-time data                    break;                case 2:                    instance.addHost("feed2.opentick.com", 10010); //real-time data                    break;            }        }        return instance;    }        public void login(long timeout)    {        if (!isLoggedIn() && thread == null)        {            String userName = OpenTickPlugin.getDefault().getPreferenceStore().getString(OpenTickPlugin.PREFS_USERNAME);            String password = OpenTickPlugin.getDefault().getPreferenceStore().getString(OpenTickPlugin.PREFS_PASSWORD);            if (userName.length() == 0 || password.length() == 0)            {                LoginDialog dlg = new LoginDialog(userName, password);                if (dlg.open() != LoginDialog.OK)                    return;                                userName = dlg.getUserName();                password = dlg.getPassword();            }            try {                login(userName, password);                long started = System.currentTimeMillis();                while((System.currentTimeMillis() - started) < timeout && !isLoggedIn())                    Thread.sleep(100);            } catch(Exception e) {                log.error(e, e);            }        }    }    /* (non-Javadoc)     * @see com.opentick.OTClient#onLogin()     */    public void onLogin()    {        IClientListener[] list = getListeners();        for (int i = 0; i < list.length; i++)            list[i].onLogin();    }    /* (non-Javadoc)     * @see com.opentick.OTClient#onRestoreConnection()     */    public void onRestoreConnection()    {        IClientListener[] list = getListeners();        for (int i = 0; i < list.length; i++)            list[i].onRestoreConnection();    }    /* (non-Javadoc)     * @see com.opentick.OTClient#onStatusChanged(int)     */    public void onStatusChanged(int status)    {        log.info("Status " + (String)statusText.get(new Integer(status)));        IClientListener[] list = getListeners();        for (int i = 0; i < list.length; i++)            list[i].onStatusChanged(status);    }    /* (non-Javadoc)     * @see com.opentick.OTClient#onListExchanges(java.util.List)     */    public void onListExchanges(List exchanges)    {        IClientListener[] list = getListeners();        for (int i = 0; i < list.length; i++)            list[i].onListExchanges(exchanges);    }    /* (non-Javadoc)     * @see com.opentick.OTClient#onListSymbols(java.util.List)     */    public void onListSymbols(List symbols)    {        IClientListener[] list = getListeners();        for (int i = 0; i < list.length; i++)            list[i].onListSymbols(symbols);    }        public synchronized void addListener(int id, IClientListener listener)    {        List list = (List)streamListeners.get(String.valueOf(id));        if (list == null)        {            list = new ArrayList();            streamListeners.put(String.valueOf(id), list);        }        list.add(listener);    }        public synchronized void addListener(IClientListener listener)    {        listeners.add(listener);    }        public synchronized void removeListener(int id, IClientListener listener)    {        List list = (List)streamListeners.get(String.valueOf(id));        if (list != null)            list.remove(listener);    }        public synchronized void removeListener(IClientListener listener)    {        listeners.remove(listener);    }        synchronized IClientListener[] getListeners(int id)    {        List list = new ArrayList(listeners);        List stream = (List)streamListeners.get(String.valueOf(id));        if (stream != null)            list.addAll(stream);                return (IClientListener[])list.toArray(new IClientListener[list.size()]);     }        synchronized IClientListener[] getListeners()    {        return (IClientListener[])listeners.toArray(new IClientListener[listeners.size()]);     }    /* (non-Javadoc)     * @see com.opentick.OTClient#onDividend(com.opentick.OTDividend)     */    public void onDividend(OTDividend dividend)    {        IClientListener[] list = getListeners(dividend.getRequestId());        for (int i = 0; i < list.length; i++)            list[i].onDividend(dividend);    }    /* (non-Javadoc)     * @see com.opentick.OTClient#onEquityInit(com.opentick.OTEquityInit)     */    public void onEquityInit(OTEquityInit equity)    {        IClientListener[] list = getListeners(equity.getRequestId());        for (int i = 0; i < list.length; i++)            list[i].onEquityInit(equity);    }    /* (non-Javadoc)     * @see com.opentick.OTClient#onError(com.opentick.OTError)     */    public void onError(OTError error)    {        IClientListener[] list = getListeners(error.getRequestId());        for (int i = 0; i < list.length; i++)            list[i].onError(error);    }    /* (non-Javadoc)     * @see com.opentick.OTClient#onHistBBO(com.opentick.OTBBO)     */    public void onHistBBO(OTBBO bbo)    {        IClientListener[] list = getListeners(bbo.getRequestID());        for (int i = 0; i < list.length; i++)            list[i].onHistBBO(bbo);    }    /* (non-Javadoc)     * @see com.opentick.OTClient#onHistBookCancel(com.opentick.OTBookCancel)     */    public void onHistBookCancel(OTBookCancel bookCancel)    {        IClientListener[] list = getListeners(bookCancel.getRequestID());        for (int i = 0; i < list.length; i++)            list[i].onHistBookCancel(bookCancel);    }    /* (non-Javadoc)     * @see com.opentick.OTClient#onHistBookChange(com.opentick.OTBookChange)     */    public void onHistBookChange(OTBookChange bookChange)    {        IClientListener[] list = getListeners(bookChange.getRequestID());        for (int i = 0; i < list.length; i++)            list[i].onHistBookChange(bookChange);    }    /* (non-Javadoc)     * @see com.opentick.OTClient#onHistBookDelete(com.opentick.OTBookDelete)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -