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

Get() public method

public Get ( ) : IEnumerable
return IEnumerable
        public IEnumerable<StationTiploc> Get()
        {
            const string sql = @"
                SELECT
                    [Tiploc].[TiplocId],
                    [Tiploc].[Tiploc],
                    [Tiploc].[Nalco],
                    [Tiploc].[Description],
                    [Tiploc].[CRS],
                    [Tiploc].[Stanox],
                    [Station].[StationName],
                    [Station].[Location].[Lat] AS [Lat],
                    [Station].[Location].[Long] AS [Lon]
                FROM [Tiploc]
                LEFT JOIN [Station] ON [Tiploc].[TiplocId] = [Station].[TiplocId]";

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

Usage Example

        static void Main(string[] args)
        {
            // this data is fetchable via http://nrodwiki.rockshore.net/index.php/ReferenceData
            List<TDElement> allSmartData = new List<TDElement>();

            foreach (string smartExtract in Directory.GetFiles(".", "SMARTExtract*.json"))
            {
                Trace.TraceInformation("Loading SMART data from {0}", smartExtract);
                string smartData = File.ReadAllText(smartExtract);
                allSmartData.AddRange(JsonConvert.DeserializeObject<TDContainer>(smartData).BERTHDATA);
            }

            TDContainer container = new TDContainer
            {
                BERTHDATA = allSmartData
            };
            ILookup<string, TDElement> tdElementsByArea = allSmartData
                .Where(td => !string.IsNullOrEmpty(td.STANOX))
                .ToLookup(td => td.TD);

            if (args.Length > 0 && args[0].Equals("extract", System.StringComparison.InvariantCultureIgnoreCase))
            {
                System.Console.WriteLine("Writing to SMARTExtract.txt");
                File.WriteAllText("SMARTExtract.txt",
                    string.Join(Environment.NewLine, container.BERTHDATA.Select(b => b.ToString())));
                return;
            }

            TiplocRepository _tiplocRepo = new TiplocRepository();

            var dbTiplocs = _tiplocRepo.Get();

            string tiplocData = File.ReadAllText("CORPUSExtract.json");
            ILookup<string, TiplocCode> tiplocByStanox = JsonConvert.DeserializeObject<TiplocContainer>(tiplocData).TIPLOCDATA
                .Select(t => t.ToTiplocCode())
                .ToLookup(t => t.Stanox);

            System.Console.WriteLine("Loaded {0} TD Elements", container.BERTHDATA.Count());

            System.Console.WriteLine("Enter Query");
            string data;
            while (!string.IsNullOrEmpty((data = System.Console.ReadLine())))
            {
                if (data.StartsWith("query=", StringComparison.InvariantCultureIgnoreCase))
                {
                    GenerateQuery(data, tdElementsByArea, tiplocByStanox);
                    continue;
                }
                var clauses = data.Split(',');
                if (!clauses.Any())
                    break;

                var results = container.BERTHDATA
                    .Where(t => t.TD.Equals(clauses[0], System.StringComparison.InvariantCultureIgnoreCase));

                if (clauses.Length > 1)
                {
                    results = results.Where(t => t.FROMBERTH.Equals(clauses[1], System.StringComparison.InvariantCultureIgnoreCase));
                }

                results = results
                    .OrderBy(t => t.STANME)
                    .ThenBy(t => string.IsNullOrEmpty(t.PLATFORM) ? -1 : int.Parse(t.PLATFORM))
                    .ThenBy(t => t.EventType);

                System.Console.WriteLine(string.Join("", Enumerable.Repeat("=", 72).ToArray()));

                System.Console.WriteLine("TD".PadRight(4) +
                    "F-B".PadRight(6) +
                    "T-B".PadRight(6) +
                    "F-L".PadRight(4) +
                    "T-L".PadRight(4) +
                    "STANME".PadRight(10) +
                    "P".PadRight(4) +
                    "EVENT-TYPE".PadRight(12) +
                    "STEP-TYPE".ToString().PadRight(10) +
                    "OFFSET".ToString().PadRight(6));
                System.Console.WriteLine(string.Join("", Enumerable.Repeat("=", 72).ToArray()));

                foreach (var result in results)
                {
                    System.Console.WriteLine(result);
                }
                System.Console.WriteLine(string.Join("", Enumerable.Repeat("=", 72).ToArray()));

            }
        }