TrainNotifier.Service.TiplocRepository.GetTiplocs C# (CSharp) Method

GetTiplocs() public method

public GetTiplocs ( ) : IEnumerable
return IEnumerable
        public IEnumerable<TiplocCode> GetTiplocs()
        {
            const string sql = @"
                SELECT
                    [Tiploc].[TiplocId],
                    [Tiploc].[Tiploc],
                    [Tiploc].[Nalco],
                    [Tiploc].[Description],
                    [Tiploc].[CRS],
                    [Tiploc].[Stanox]
                FROM [Tiploc]";

            return Query<TiplocCode>(sql, null);
        }

Usage Example

        static void Main(string[] args)
        {
            TraceHelper.SetupTrace();
            AppDomain.CurrentDomain.UnhandledException += (s, e) =>
            {
                Trace.TraceError("Unhandled Exception: {0}", e.ExceptionObject);
                TraceHelper.FlushLog();
                Environment.Exit(1);
            };

            var options = new Options();
            CommandLine.CommandLineParser.Default.ParseArguments(args, options);
            bool delete = true;
            var tiprep = new TiplocRepository();
            var tiplocs = tiprep.GetTiplocs().ToList();
            var schedrep = new ScheduleRepository();
            var aRep = new AssociationRepository();

            string tempDir = Path.GetTempPath();
            Trace.TraceInformation("Temporary Directory is {0}", tempDir);
            string gzFile = Path.Combine(tempDir, string.Format("{0:yyyyMMdd}.gz", DateTime.UtcNow));
            string jsonFile = Path.Combine(tempDir, string.Format("{0:yyyyMMdd}.json", DateTime.UtcNow));
            Trace.TraceInformation("GZIP File is {0}", gzFile);
            Trace.TraceInformation("JSON File is {0}", jsonFile);
            bool fail = false;
            try
            {
                if (options.ForceDownload || !File.Exists(gzFile))
                {
                    ScheduleService.DownloadSchedule(gzFile,
                        // defaults to all
                        options.Toc,
                        // defaults to daily
                        options.ScheduleType,
                        // defaults to previous day (e.g. on monday download sunday - http://nrodwiki.rockshore.net/index.php/Schedule)
                        options.Day.HasValue ? options.Day.Value : DateTime.Today.AddDays(-1).DayOfWeek);
                }
                else
                {
                    Trace.TraceInformation("File {0} already exists", gzFile);
                }
                if (options.ForceDownload || !File.Exists(jsonFile))
                {
                    using (FileStream originalFileStream = File.OpenRead(gzFile))
                    {
                        using (FileStream decompressedFileStream = File.Create(jsonFile))
                        {
                            using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
                            {
                                Console.WriteLine("Decompressing {0} to {1}", gzFile, jsonFile);
                                decompressionStream.CopyTo(decompressedFileStream);
                                Console.WriteLine("Decompressed: {0}", jsonFile);
                            }
                        }
                    }
                }
                else
                {
                    Trace.TraceInformation("File {0} already exists", jsonFile);
                }
                if (File.Exists(jsonFile))
                {
                    foreach (string row in File.ReadLines(jsonFile))
                    {
                        var rowData = JsonConvert.DeserializeObject<dynamic>(row);
                        try
                        {
                            if (rowData.JsonTimetableV1 != null
                                && options.ScheduleType == ScheduleType.DailyUpdate
                                && !options.Day.HasValue)
                            {
                                if (!options.IgnoreWrongDate)
                                {
                                    // defaults to previous day (e.g. on monday download sunday - http://nrodwiki.rockshore.net/index.php/Schedule)
                                    DateTime dateCheck = DateTime.Today;
                                    DateTime unixTs = new DateTime(1970, 1, 1);
                                    DateTime date = unixTs.AddSeconds((double)rowData.JsonTimetableV1.timestamp);
                                    if (date.Date != dateCheck)
                                    {
                                        fail = true;
                                        throw new Exception(string.Format("Time stamp in file is for {0:dd/MM/yyyy} but requested {1:dd/MM/yyyy}",
                                            date, dateCheck));
                                    }
                                }
                            }
                            else if (rowData.JsonScheduleV1 != null)
                            {
                                AddSchedule(tiprep, tiplocs, schedrep, rowData);
                            }
                            else if (rowData.JsonAssociationV1 != null)
                            {
                                AddAssociation(rowData, tiplocs, tiprep, aRep);
                            }
                        }
                        catch (Exception e)
                        {
                            Trace.TraceError(e.ToString());
                            fail = true;
                            delete = false;
                            throw;
                        }
                    }
                }
            }
            catch (Exception)
            {
                fail = true;
            }
            finally
            {
                if (options.Delete && delete)
                {
                    File.Delete(gzFile);
                    File.Delete(jsonFile);
                }
                TraceHelper.FlushLog();
            }
            if (fail)
            {
                Environment.Exit(1);
            }
        }