public override void GetDataAsync(string xmlFileName) { try { _filePath = DataStorageProvider.GetStorageCsvPath(xmlFileName); //_filePath = xmlFileName; // StorageDataProvider.GetStorageCsvPath(xmlFileName); //_filePath = StorageDataProvider.GetStorageCsvPath(xmlFileName); if (_filePath == null) { var error = new Exception("Storage Path Not Valid: " + _filePath); throw error; } var streamInfo = Application.GetResourceStream(new Uri(_filePath)); if (streamInfo == null) { var error = new Exception("Storage Resource Not Found: " + _filePath); throw error; } var stream = streamInfo.Stream; var bw = new BackgroundWorker(); bw.DoWork += OnBackgroundWorkerDoWork; bw.RunWorkerCompleted += OnRunWorkerCompleted; bw.RunWorkerAsync(stream); } catch (Exception ex) { Debug.WriteLine(ex.Message); // create an event argument with failed attempt to read the CSV file EventArg = new CsvDataCompletedEventArgs(ex); // notify when an error occurred while reading the CSV file OnGetDataCompleted(EventArg); } }
private void OnBackgroundWorkerDoWork(object sender, DoWorkEventArgs e) { try { var stream = e.Argument as Stream; if (stream != null) { var lines = new List <string>(); using (var sr = new StreamReader(stream)) { var line = sr.ReadLine(); while (line != null) { lines.Add(line); line = sr.ReadLine(); } } // create an event argument with successful attempt to read the CSV file EventArg = new CsvDataCompletedEventArgs(lines); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); // create an event argument with failed attempt to read the CSV file EventArg = new CsvDataCompletedEventArgs(ex); } }
public void OnGetDataCompleted(CsvDataCompletedEventArgs eventArgs) { if (this.GetDataCompleted != null) { this.GetDataCompleted(this, eventArgs); } }
private void OnLoadWorldsAirportsCompleted(object sender, CsvDataCompletedEventArgs e) { if (e.Error != null) { return; } this.Airports = ProcessWorldAirportsData(e.Result); //TODO add logic for generating flights OnLoadDataCompleted(new AirlinesDataCompletedEventArgs(this.Airports)); }
private void OnLoadAmericanAirportsCompleted(object sender, CsvDataCompletedEventArgs e) { if (e.Error != null) { return; } this.Airports = ProcessAmericanAirportsData(e.Result); var dataFlightsProvider = new CsvDataProvider(); dataFlightsProvider.GetDataCompleted += OnLoadAmericanFlightsCompleted; dataFlightsProvider.GetDataAsync("american_flights.csv"); }
//public override void GetCsvDataAsync(string filePath) //{ // //var path = DataPathProvider + "csv/"; // //_filePath = StorageDataProvider.GetStorageCsvPath() + fileName; // _filePath = filePath; // StorageDataProvider.GetStorageCsvPath() + fileName; // _client.DownloadStringAsync(new Uri(_filePath, UriKind.RelativeOrAbsolute)); //} //TODO changed to LoadDataAsync and provide EventArgs with common interface for data loading public override void GetDataAsync(string fileName) { try { FileName = fileName; // StorageDataProvider.GetStorageCsvPath(xmlFileName); if (FileName == null) { throw new Exception("Storage Path Not Valid: " + FileName); } Assembly assembly = Assembly.GetExecutingAssembly(); var resources = (from n in assembly.GetManifestResourceNames() where (n.Contains(fileName)) select n).ToList(); if (resources.Count == 0) { throw new Exception("Storage Resource Not Found: " + FileName); } Stream stream = assembly.GetManifestResourceStream(resources[0]); if (stream == null) { throw new Exception("Storage Stream Not Found: " + resources[0]); } //StreamResourceInfo streamInfo = Application.GetResourceStream(new Uri(_filePath)); //if (streamInfo == null) //{ // throw new Exception("Storage Resource Not Found: " + _filePath); //} //Stream stream = streamInfo.Stream; var bw = new BackgroundWorker(); bw.DoWork += OnBackgroundWorkerDoWork; bw.RunWorkerCompleted += OnRunWorkerCompleted; bw.RunWorkerAsync(stream); } catch (Exception ex) { Debug.WriteLine(ex.Message); // create an event argument with failed attempt to read the CSV file EventArg = new CsvDataCompletedEventArgs(ex); // notify when an error occurred while reading the CSV file OnGetDataCompleted(EventArg); } }
private void OnLoadAmericanFlightsCompleted(object sender, CsvDataCompletedEventArgs e) { if (e.Error != null) { return; } this.Flights = ProcessAmericanFlightsData(e.Result); foreach (var airport in Airports) { foreach (var flight in Flights) { if (airport.Code == flight.Origin.Code) { airport.Connections.Add(flight.Destination); airport.ConnectionsTotal++; } } } this.Airports = (from airport in this.Airports where airport.ConnectionsTotal >= 1 select airport).ToList(); this.Airports.Sort((a1, a2) => - (Comparer <double> .Default.Compare(a1.ConnectionsTotal, a2.ConnectionsTotal))); OnLoadDataCompleted(new AirlinesDataCompletedEventArgs(this.Airports, this.Flights)); }