public static async Task <IEnumerable <ContextLoaderDataValidation> > RunTimeSeriesDataPointsLoader() { var list = new List <ContextLoaderDataValidation>(); //IProgress<ProgressManager> progress var progress = new Progress <ProgressManager>(ContextManager.ProcessDataLogMessage); var stopWatch = new Stopwatch(); stopWatch.Start(); var configData = ConfigDataHandler.GetTimeSeriesTickDataConfig(); IEnumerable <ValidFileInfo> validatedData; try { //check configs setup correctly. If not throw error as this is a programming error. validatedData = configData.Select(x => TimeSeriesDataPointLoadManager.GetValidationInfo(x, progress)); } catch (Exception e) { Console.WriteLine(e); list.Add(new ContextLoaderDataValidation(false, e.Message)); return(list); } var tasks = validatedData.Select(async(validFileInfo) => await TimeSeriesDataPointLoadManager.GetTimeSeries(validFileInfo)); //note: this wait can be taken out to improve performance, but for the moment the load all files are read then the db update is completed. //this can be async up to combine the two processes together. var timeSeriesDataPoints = await Task.WhenAll(tasks); foreach (var timeSeriesDataPoint in timeSeriesDataPoints) { if (!timeSeriesDataPoint.Any()) { continue; } var source = timeSeriesDataPoint.ToList().ElementAt(0).Source; var loadDataValidation = await ContextManager.PopulateData(source, timeSeriesDataPoint, progress); list.Add(loadDataValidation); } //var populatedResults = completed.Select(async (timeSeries) => await PopulateTimeSeriesDataPoint(timeSeries, progress)); stopWatch.Stop(); Console.WriteLine("Total seconds:" + stopWatch.Elapsed.TotalSeconds); return(list); }
public static async Task <ContextLoaderDataValidation> RunTickerLoader(DateTime valueDate) { var progress = new Progress <ProgressManager>(ConsoleLogger.ProcessDataLogMessage); var stopWatch = new Stopwatch(); stopWatch.Start(); var configData = ConfigDataHandler.GetDataConfig(); var validFileInfo = PortfolioLoadManager.GetValidationInfo(configData.First(), progress); var data = await PortfolioLoadManager.GetData(validFileInfo, valueDate); var validatedRisk = PortfolioLoadManager.ValidatedPortfolioRisk(data); var filteredValidatedPortfolioRisk = validatedRisk.Where(x => x.IsValid).Select(x => x.Value); var filteredInValidatedPortfolioRisk = validatedRisk.Where(x => !x.IsValid).Select(x => x.Value); var configSaveData = ConfigDataHandler.GetSaveDataConfig(); var validSaveFileInfo = configSaveData.SingleOrDefault(x => x.Source.Equals("PortfolioRiskResults")); validSaveFileInfo.FileName = "ErrorLog.txt"; SaveData(filteredInValidatedPortfolioRisk.OfType <PortfolioRisk>(), validSaveFileInfo); validSaveFileInfo.FileName = "3.txt"; SaveData(filteredValidatedPortfolioRisk.AsQueryable().Sort("TenorDays,PortfolioId").OfType <PortfolioRisk>().ToList(), validSaveFileInfo); validSaveFileInfo.FileName = "4.txt"; SaveData(filteredValidatedPortfolioRisk.AsQueryable().Sort("PortfolioId,TenorDays").OfType <PortfolioRisk>(), validSaveFileInfo); stopWatch.Stop(); Console.WriteLine("Total seconds:" + stopWatch.Elapsed.TotalSeconds); return(new ContextLoaderDataValidation(true, string.Empty)); }
public static async Task <ContextLoaderDataValidation> RunTickerLoader() { var list = new List <ContextLoaderDataValidation>(); var progress = new Progress <ProgressManager>(ContextManager.ProcessDataLogMessage); var stopWatch = new Stopwatch(); stopWatch.Start(); var configData = ConfigDataHandler.GetTickerConfig(); IEnumerable <ValidFileInfo> validatedData; try { //check configs setup correctly. If not throw error as this is a programming error. validatedData = configData.Select(x => TickerDataPointLoadManager.GetValidationInfo(x, progress)); } catch (Exception e) { Console.WriteLine(e); return(new ContextLoaderDataValidation(false, e.Message));; } var tasks = validatedData.Select(async(validFileInfo) => await TickerDataPointLoadManager.GetTickers(validFileInfo)); var results = await Task.WhenAll(tasks); foreach (var tickers in results) { if (!tickers.Any()) { continue; } var source = tickers.ToList().ElementAt(0).Source; var loadDataValidation = await ContextManager.PopulateData(source, tickers, progress); list.Add(loadDataValidation); } stopWatch.Stop(); Console.WriteLine("Total seconds:" + stopWatch.Elapsed.TotalSeconds); return(new ContextLoaderDataValidation(true, string.Empty)); }