public HopkinsModel GetHopkinsModel(string metric) { IHopkinsModelReader reader = _readers.First(o => o.GetType().Name.Contains(metric)); string csv = reader.GetRawModel(); HopkinsModel model = new HopkinsModel(); string dateUpdated = csv.Substring(0, csv.IndexOf(Environment.NewLine)); model.UpdateTime = DateTime.ParseExact(dateUpdated, "s", CultureInfo.InvariantCulture); var options = new CsvOptions { RowsToSkip = 1, }; model.Countries = new List <String>(); model.MapCountryDeaths = new Dictionary <string, List <int> >(); foreach (var line in CsvReader.ReadFromText(csv, options)) { if (model.Dates == null) { model.Dates = new List <DateTime>(); for (int i = FIRST_COL_DATE; i < line.Headers.Length; i++) { DateTime date = DateTime.ParseExact(line.Headers[i], DATE_FORMAT, CultureInfo.InvariantCulture); model.Dates.Add(date); } } string country = line[COUNTRY_STR]; if (!model.MapCountryDeaths.ContainsKey(country)) { model.MapCountryDeaths[country] = new List <int>(); for (int i = FIRST_COL_DATE; i < line.Headers.Length; i++) { model.MapCountryDeaths[country].Add(0); } model.Countries.Add(country); } for (int i = FIRST_COL_DATE; i < line.Headers.Length; i++) { string deaths = line[i]; if (deaths != String.Empty) { model.MapCountryDeaths[country][i - FIRST_COL_DATE] += Int32.Parse(deaths); } } } model.Countries.Sort(); return(model); }
public HopkinsModelFileCacheReader(IHopkinsModelReader reader, string cacheFile) { _reader = reader; _cacheFile = cacheFile; }
public HopkinsModelMemCacheReader(IHopkinsModelReader reader) { _reader = reader; _data = null; }
public HopkinsModelReader(string filename) { _reader = new HopkinsModelFileCacheReader(new HopkinsModelDowloader(filename), filename); }
public EcdcModelRepositoryJson(IHopkinsModelReader reader) { _reader = reader; }