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);
     }
 }
Exemple #4
0
 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));
 }
Exemple #5
0
        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");
        }
Exemple #6
0
        //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);
            }
        }
Exemple #7
0
        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));
        }