/// <summary> /// /// </summary> /// <returns></returns> public TaskResult AddTracker(ImportTracker importTracker) { _importTrackerRepository.PostAsync(importTracker); return(new TaskResult { IsSuccessful = true }); }
public override void OnSubscribed(VisualStudioDocumentTracker tracker) { if (tracker == null) { throw new ArgumentNullException(nameof(tracker)); } _foregroundDispatcher.AssertForegroundThread(); var imports = GetImportItems(tracker); foreach (var import in imports) { var importFilePath = import.PhysicalPath; Debug.Assert(importFilePath != null); if (!_importTrackerCache.TryGetValue(importFilePath, out var importTracker)) { // First time seeing this import. Start tracking it. var fileChangeTracker = _fileChangeTrackerFactory.Create(importFilePath); importTracker = new ImportTracker(fileChangeTracker); _importTrackerCache[importFilePath] = importTracker; fileChangeTracker.Changed += FileChangeTracker_Changed; fileChangeTracker.StartListening(); } importTracker.AssociatedDocuments.Add(tracker.FilePath); } }
/// <summary> /// /// </summary> /// <param name="importTracker"></param> /// <returns></returns> public TaskResult DeleteAsync(ImportTracker importTracker) { Logger.Info($"deleting import tracker data: {importTracker}"); var response = Entities.DeleteAsync(new ImportTrackerJson(importTracker)); Logger.Info($"operaton status code: {response.Result.StatusCode}"); return(new TaskResult { IsSuccessful = response.Result.IsSuccess }); }
/// <summary> /// Bulks the async. /// </summary> /// <returns>The async.</returns> /// <param name="importTracker">Ideas json.</param> public TaskResult PostAsync(ImportTracker importTracker) { Logger.Info($"adding imported tracker: {importTracker}"); var response = Entities.PostAsync(new ImportTrackerJson(importTracker)); Logger.Info($"operaton status code: {response.Result.StatusCode}"); return(new TaskResult { IsSuccessful = response.Result.IsSuccess }); }
private void OnChanged(ImportTracker importTracker, FileChangeKind changeKind) { _foregroundDispatcher.AssertForegroundThread(); if (Changed == null) { return; } var args = new ImportChangedEventArgs(importTracker.FilePath, changeKind, importTracker.AssociatedDocuments); Changed.Invoke(this, args); }
private void OnChanged(ImportTracker importTracker, FileChangeKind changeKind) { _projectSnapshotManagerDispatcher.AssertDispatcherThread(); if (Changed is null) { return; } var args = new ImportChangedEventArgs(importTracker.FilePath, changeKind, importTracker.AssociatedDocuments); Changed.Invoke(this, args); }
public void ContainsTest() { var importTracker = new ImportTracker("asdf"); var list = new List <ImportTracker>() { new ImportTracker("adsf") }; if (list.Contains(importTracker)) { Assert.IsTrue(true); } }
private void StopListeningForChanges(ImportTracker importTracker) { try { if (importTracker.FileChangeCookie != VSConstants.VSCOOKIE_NIL) { var hr = _fileChangeService.UnadviseFileChange(importTracker.FileChangeCookie); Marshal.ThrowExceptionForHR(hr); importTracker.FileChangeCookie = VSConstants.VSCOOKIE_NIL; } } catch (Exception exception) { _errorReporter.ReportError(exception); } }
public void BuildImports() { var importTrackerRepository = new ImportTrackerRepository("http://127.0.0.1:5984"); var exportedList = new List <string> { "2GO", "ACE", "FGENF", "FGENG", "FJP", "FJPB", "FLI", "FMETF", "FOOD", "FPH", "FPI", "GEO", "GERI", "GLO", "GMA7", "GMAP", "GPH", "GSMI", "GTCAP", "H2O", "HI", "HLCM", "HOUSE", "I", "IMP", "ION", "IPO", "IRC", "IMP", "ION", "IPO", "IRC", "IS", "ISM", "JFC", "JGS", "JOH", "KEP", "KPH", "KPHB", "LAND", "LC", "LCB", "LFM", "LMG", "LOTO", "LPZ", "LR", "LRP", "LRW", "LSC", "LTG", "MA", "MAB", "MAC", "MACAY", "MAH", "MARC", "MB", "MBC", "MBT", "MED", "MEG", "MER", "MFC", "MFIN", "MG", "MHC", "MJC", "MJIC", "MRC", "MVC", "MWC", "MWIDE", ",NI", "NIKL", "NOW", "NRCP", "OM", "OPM", "ORE", "OV", "PA", "PAL", "PBB", "PBC", "PCOR", "PERC", "PGOLD", "PHA", "PHES", "PHN", "PIP", "PMPC", "PNB", "PNX", "PPC", "PRC", "PRIM", "PRMX", "PSB", "PSE", "PTC", "PX", "PXP", "RCB", "RCI", "REG", "RFM", "RLT", "ROCK", "ROX", "RRHI", "RWM", "SCC", "SECB", "SEVN", "SFI", "SFIP", "SGI", "SHNG", "SLF", "SLI", "SM", "SMC", "SMC2B", "GOB", "IMPB", "AEV", "SMPH", "SOC", "SPC", "SPM", "STI", "STR", "SUN", "T", "TBGI", "TEL", "TFC", "TFHI", "UBP", "UNI", "UPM", "URC", "V", "VITA", "VLL", "VMC", "VUL", "VVT", "WEB", "WIN" }; foreach (var exported in exportedList) { var item = new ImportTracker(exported); var response = importTrackerRepository.PostAsync(item); } Assert.IsTrue(true); }
private void StartListeningForChanges(ImportTracker importTracker) { try { if (importTracker.FileChangeCookie == VSConstants.VSCOOKIE_NIL) { var hr = _fileChangeService.AdviseFileChange( importTracker.FilePath, FileChangeFlags, new ImportDocumentEventSink(this, _foregroundDispatcher), out var cookie); Marshal.ThrowExceptionForHR(hr); importTracker.FileChangeCookie = cookie; } } catch (Exception exception) { _errorReporter.ReportError(exception); } }
/// <summary> /// /// </summary> /// <returns></returns> public TaskResult Scrape(TransactionParameter transactionParameter) { var counter = 0; foreach (var import in _imports) { counter++; Logger.Info($"processing {counter} out of {_imports.Count}"); LogicalThreadContext.Properties["symbol"] = import.Symbol; var importTracker = new ImportTracker(import.Symbol, transactionParameter.FromDate); try { //create new transaction parameter to avoid threading issues var parameter = new TransactionParameter { Symbol = import.Symbol, FromDate = transactionParameter.FromDate, ToDate = transactionParameter.ToDate }; _brokerTransactionSimulator.Simulate(parameter); var fluentWait = new DefaultWait <IWebDriver>(_webDriver) { Timeout = TimeSpan.FromSeconds(30), PollingInterval = TimeSpan.FromMilliseconds(250) }; fluentWait.IgnoreExceptionTypes(typeof(NoSuchElementException)); var rows = fluentWait .Until(x => x.FindElements(By.XPath("/html/body/form/table/tbody/tr"))); if (rows.Count > 0) { Logger.Info("initiating transaction builder"); var brokerTransactions = _brokerTransactionBuilder.Build(rows.ToList(), parameter); Logger.Info("initiating transaction process"); _brokerTransactionProcessor.Process(brokerTransactions); _brokerTransactionBuilder.Transactions.Clear(); importTracker.Status = "Success"; Logger.Info($"broker transactions for completed for symbol: {import.Symbol}"); } importTracker.Status = "None"; } catch (Exception e) { Logger.Warn($"An issue trying to download broker transactions found, adding to retry queue for later processing", e); importTracker.Status = "Retry"; } //switch back to main frame to prevent _brokerTabNavigator.NavigateHeaderFrame(); _brokerTabNavigator.Navigate(true); _importProcessor.AddTracker(importTracker); } Logger.Info($"broker table scraping completed."); return(new TaskResult { IsSuccessful = true }); }