OpenTemp.ParseStations()

        /// <summary>
        /// Read the sttaions file and parse into the list of stations.
        /// </summary>
        /// <remarks>The stations file should be a CSV format with one line per station.
        /// Each line should consist of the station ID (including the country code), the latitude, and the longitude.</remarks>
        /// <returns>Number of stations if successful; -ve for error code</returns>
        protected int ParseStations()
        {
            OpenTemp.WriteLine(string.Format("Reading the stations file '{0}'...", _stationsFile));
            // Open the file
            StreamReader sr;
            try
            {
                sr = new StreamReader(_stationsFile, true);
                OpenTemp.WriteLine("  File opened for reading");
            }
            catch (Exception ex)
            {
                OpenTemp.WriteLine(string.Format("  Exception thrown when opening file:  {0}", ex.ToString()));
                return -1;
            }
            if (sr == null)
            {
                OpenTemp.WriteLine(string.Format("  Failed to open file (check that it exists and the path is correct)"));
                return -2;
            }
            // Parse one line at a time
            int nLines = 1;
            while (!sr.EndOfStream)
            {
                nLines++;

                string line = sr.ReadLine();
                if (line.Length == 0) continue;
                string[] entries = line.Split(',');
                if (entries.Length != 3)
                {
                    OpenTemp.WriteLine(string.Format("  Line {0}: Wrong number of entries ({1}, expected {2})", nLines, entries.Length, 3));
                    sr.Dispose();
                    return -3;
                }
                string countryStation = entries[0];
                if (!_stations.ContainsKey(countryStation))
                {
                    float latitude = float.Parse(entries[1]);       // TODO: Add error handling
                    float longitude = float.Parse(entries[2]);      // TODO: Add error handling
                    _stations.Add(countryStation, new Station(countryStation, longitude, latitude));
                }
                Station station = _stations[countryStation];

                // Increment and continue
                if ((nLines % 100) == 0)
                {
                    OpenTemp.WriteLine(string.Format("  {0} stations parsed", nLines));
                }
            }

            // Cleanup
            sr.Dispose();

            // Done
            OpenTemp.WriteLine(string.Format("  Parsing finished: {0} stations parsed", nLines));
            return nLines;
        }