public Algo(AlgoControlPanel algoControlPanel, string symbol, LiveConnectors variant) { DataManager dataManager = DataManager.getInstance(); dataManager.subscribeForLiveConnection(symbol, this, variant); this.algoControlPanel = algoControlPanel; algoControlPanel.lblKS_Saldo.Text = (Convert.ToString(kontostand)); }
private PushWorker findWorker(string symbol, LiveConnectors variant) { //search for worker foreach (PushWorker worker in listOfPushWorkers) { if (worker.symbol == symbol && worker.variant == variant) { //return found worker return(worker); } } //if never found, return null return(null); }
public PushWorker(LiveConnectors variant, String symbol) { this.symbol = symbol; this.variant = variant; switch (variant) { case LiveConnectors.OnVista: liveConnector = new OnVistaConnector(symbol); break; case LiveConnectors.OnVistaDummy: liveConnector = new OnVistaDummyConnector(symbol); break; } }
private void onClickAusfuehren(object sender, RibbonControlEventArgs e) { if (CB_Ziel_NeuesTB.Enabled == false & CB_Ziel_AktuellesTB.Enabled == false & CB_Ziel_Cursor.Enabled == false) { BTN_Aktionen_Ausfuehren.Enabled = false; } if (selectedOptions == 3) { Konfigurator view = new Konfigurator(); if (CB_Typ_Live.Checked) { view.groupBox1.Visible = false; } view.ShowDialog(); Workbook workBook; Worksheet workSheet = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet); Excel.Range position = Globals.ThisAddIn.Application.Cells[1, 1]; string stockSymbol = view.comboBox1.SelectedItem.ToString(); DateTime dateFrom = view.dateTimePicker1.Value; DateTime dateTo = view.dateTimePicker2.Value; DataManager dataManager = DataManager.getInstance(); TableObject tableObject = null; LiveConnectors liveVariant = LiveConnectors.OnVistaDummy; List <int> columnsToDraw = null; List <StockDataTransferObject> listOfRecords = null; if (view.hasBeenCancelled == false) { //************************* Position ************************************* //Aktive Zelle if (CB_Ziel_Cursor.Checked) { position = Globals.ThisAddIn.Application.ActiveCell; } //Aktuelles Tabellenblatt else if (CB_Ziel_AktuellesTB.Checked) { //nutze Standards } //Neues Tabellenblatt else if (CB_Ziel_NeuesTB.Checked) { workBook = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook); String tabellenblattName = Microsoft.VisualBasic.Interaction.InputBox("Bitte Tabellenblattnamen eingeben!", "Tabellenblattname eingeben", ""); foreach (Excel.Worksheet sheet in workBook.Worksheets) { if (sheet.Name.ToString() == tabellenblattName) { MessageBox.Show("Tabellenblattname bereits vorhanden! Bitte erneut ausführen!"); return; } } workSheet = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets.Add()); workSheet.Name = tabellenblattName; } //************************* Position ************************************* //************************* Historisch *********************************** //Yahoo API if (CB_Quelle_Yahoo.Checked) { listOfRecords = dataManager.getHistoricalStockData(stockSymbol, dateFrom, dateTo, YahooFinanceAPI_Resolution.Daily); columnsToDraw = dataManager.getColumnsToDraw_forYahooHistoricalData(); } //Lokale Daten else if (CB_Quelle_Lokal.Checked) { listOfRecords = dataManager.getLocallySavedStockData(stockSymbol, dateFrom, dateTo); columnsToDraw = dataManager.getColumnsToDraw_Standard(); } //************************* Historisch *********************************** //************************* Live ***************************************** //OnVista Live if (CB_Quelle_Onvista.Checked) { liveVariant = LiveConnectors.OnVista; } //Dummy Live else if (CB_Quelle_Dummy.Checked) { liveVariant = LiveConnectors.OnVistaDummy; } //************************* Live ***************************************** //************************* Zusammenführung ****************************** //Zusammenführung für historische Variante if (CB_Quelle_Yahoo.Checked || CB_Quelle_Lokal.Checked) { tableObject = new TableObject(workSheet, position, listOfRecords, columnsToDraw); tableObject.drawAll(); } //Zusammenführung für Live-Variante else if (CB_Quelle_Onvista.Checked || CB_Quelle_Dummy.Checked) { tableObject = new TableObject(workSheet, position, dataManager.getColumnsToDraw_LiveStockData()); dataManager.subscribeForLiveConnection(stockSymbol, tableObject, liveVariant); tableObject.drawAll(); } //************************* Zusammenführung ****************************** } } else { MessageBox.Show("Es sind nicht alle nötigen Optionen ausgefüllt! Bitte Auswahl überprüfen!"); } }
private void findOrCreateWorker(String symbol, LiveConnectionSubscriber subscriber, LiveConnectors variant) { //search for worker which already loads the relevant data PushWorker worker = findWorker(symbol, variant); //create worker only in case of new symbol if (worker == null) { worker = new PushWorker(variant, symbol); DBUpdater dbUpdater = new DBUpdater(); //stash objects for later use listOfPushWorkers.Add(worker); listOfDBUpdaters.Add(dbUpdater); //subscribe dedicated mySQL-Connector to keep DB up-to-date worker.subscribe(dbUpdater); //initialize worker, tell him to load worker.startWork(); } //subscribe interested Object (e.g. table, chart, etc.) worker.subscribe(subscriber); }
public void subscribeForLiveConnection(String symbol, LiveConnectionSubscriber subscriber, LiveConnectors variant) { findOrCreateWorker(symbol, subscriber, variant); }