async Task ExecuteLoadParksCommand() { if (IsBusy) { return; } IsBusy = true; try { Parks.Clear(); var items = await DataStore.GetItemsAsync(true); foreach (var item in items) { Parks.Add(item); } } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }
/// <summary> /// Parses CSV for GameLog files found here: http://www.retrosheet.org/gamelogs/index.html /// A description of the fields is here: http://www.retrosheet.org/gamelogs/glfields.txt /// </summary> /// <param name="file"></param> public void LoadGameLog(string file) { using (var fs = new FileStream(file, FileMode.Open)) { using (var reader = new StreamReader(fs)) { string line; while ((line = reader.ReadLine()) != null) { try { var parts = line.Split(','); var game = new Game(); // 0: Date game.Date = parts[0].RemoveQuotes().ToDate(); // 3-4: Visiting team, league var team = parts[3].RemoveQuotes(); var league = parts[4].RemoveQuotes(); Team visitor = null; if (!Teams.TryGetValue(team, out visitor)) { visitor = new Team { Name = team, League = league.ToLeague() }; } game.Visitor = visitor; // 6-7: Homee team, league team = parts[6].RemoveQuotes(); league = parts[7].RemoveQuotes(); Team home = null; if (!Teams.TryGetValue(team, out home)) { home = new Team { Name = team, League = league.ToLeague() }; Teams.Add(home.Name, home); } game.Home = home; // 9-10: Score game.VisitorScore = int.Parse(parts[9]); game.HomeScore = int.Parse(parts[10]); // 16-17: Park id, attendance Park park = null; var parkId = parts[16].RemoveQuotes(); if (!Parks.TryGetValue(parkId, out park)) { park = new Park { Id = parkId }; Parks.Add(parkId, park); } game.Park = park; game.Attendance = int.Parse(parts[17]); Games.Add(game); } catch { // ignore any parsing errors. } } } } }