예제 #1
0
파일: Program.cs 프로젝트: romvs/IpGeoBase
        /// <summary>
        /// Обрабатываем базу городов
        /// </summary>
        /// <param name="cityStream"></param>
        static void ProceedCities(Stream cityStream)
        {
            Console.Write("Загружаем локации... ");

            LoadService service = new LoadService();

            string[] data;
            Int32    id;
            string   locationName, regionName, areaName;
            Decimal  latitlude, longitude;

            using (DataReader reader = new DataReader(cityStream))
            {
                while (reader.HasMore())
                {
                    data         = reader.Next();
                    locationName = data[1];
                    regionName   = data[2];
                    areaName     = data[3];

                    if (!Int32.TryParse(data[0], out id))
                    {
                        Console.WriteLine("Ошибка при чтении локаций: неверный формат идентификатора локации");
                        Environment.Exit(1);
                    }

                    if (!Decimal.TryParse(data[4].Replace('.', ','), out latitlude))
                    {
                        Console.WriteLine("Ошибка при чтении локаций: неверный формат широты центра локации");
                        Environment.Exit(1);
                    }

                    if (!Decimal.TryParse(data[5].Replace('.', ','), out longitude))
                    {
                        Console.WriteLine("Ошибка при чтении локаций: неверный формат долготы центра локации");
                        Environment.Exit(1);
                    }

                    Area   area   = service.GetOrCreateArea(areaName);
                    Region region = service.GetOrCreateRegion(regionName, area);
                    service.UpdateOrCreateLocation(id, locationName, latitlude, longitude, region);
                }
            }

            Console.WriteLine("Локации успешно загружены.");
        }