Esempio n. 1
0
        static async Task Main(string[] args)
        {
            var stopwatch = new Stopwatch();

            stopwatch.Start();

            var collector = new CollectorPipeline();

            ReadHillCsv(collector);

            var mountains       = collector.Of <Mountain>().Items;
            var classifications = collector.Of <Classification>().Items;
            var maps            = collector.Of <Map>().Items;
            var regions         = collector.Of <Region>().Items;
            var counties        = collector.Of <County>().Items;

            var mountainContainer = new MountainContainer();
            await mountainContainer.Create();

            await mountainContainer.Save(mountains);

            var aspectsContainer = new GenericContainer("mountainAspects");
            await aspectsContainer.Create();

            await aspectsContainer.Save(classifications);

            await aspectsContainer.Save(maps);

            await aspectsContainer.Save(regions);

            await aspectsContainer.Save(counties);

            stopwatch.Stop();
            var seconds = stopwatch.ElapsedMilliseconds / 1000;

            Console.WriteLine($"Time taken: {seconds:#,##0s}");

            await File.WriteAllTextAsync(
                Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "scotlands-mountains-data.json"),
                JsonConvert.SerializeObject(new
            {
                mountains,
                classifications,
                maps,
                regions,
                counties
            }));
        }
Esempio n. 2
0
        private static void ReadHillCsv(CollectorPipeline collector)
        {
            using var csv = new HillCsvReader();
            csv.Read();
            csv.ReadHeader();

            csv.GetRecords <dynamic>()
            .Select(RecordAsDictionary)
            .OrderByDescending(Height)
            .ToList()
            .ForEach(x =>
            {
                if (IsScottish(x))
                {
                    collector.CollectFrom(new CollectorContext(x));
                }
            });
        }