Beispiel #1
0
        public NodeModel()
        {
            Region = new Region();

            City = new City();

            University = new University();

            Faculty = new Faculty();

            Speciality = new Speciality();

            FacultyToSpeciality = new FacultyToSpeciality();
        }
        public void Import()
        {
            var service = new DataImportXmlService(Server.MapPath("~/App_Data/Data.xml"));

            var importingData = service.Parse();

            var specialityList = new List<string>();

            var facultyList = new List<string>();

            foreach (var node in importingData)
            {
                regionManager.Create(node.Region);

                cityManager.Create(node.City);

                universityManager.Create(node.University);

                if (!String.IsNullOrEmpty(node.Faculty.Name) && !facultyList.Contains(node.Faculty.Name))
                {
                    facultyManager.Create(node.Faculty);

                    facultyList.Add(node.Faculty.Name);
                }

                if (!String.IsNullOrEmpty(node.Speciality.Name) && !specialityList.Contains(node.Speciality.Name))
                {
                    specialityManager.TryCreate(node.Speciality);

                    specialityList.Add(node.Speciality.Name);
                }

            }

            foreach (var node in importingData)
            {
                var facultyToSpeciality = new FacultyToSpeciality();

                var spec = specialityManager.GetByName(node.Speciality.Name);

                var fac = facultyManager.GetByName(node.Faculty.Name);

                if (fac != null && spec != null)
                {
                    facultyToSpeciality.Faculty = facultyManager.GetByName(node.Faculty.Name);

                    facultyToSpeciality.Speciality = specialityManager.GetByName(node.Speciality.Name);

                    facToSpecProvider.Create(facultyToSpeciality);
                }
            }
        }
        public List<NodeModel> Parse()
        {
            if (!OpenDataFile(filePath))
                return null;

            var results = new List<NodeModel>();

            foreach(XElement region in document.Root.Elements())
            {
                if (String.IsNullOrEmpty(region.Attribute("name").Value) || regionList.Contains(region.Attribute("name").Value))
                    continue;

                var regionModel = new Region();

                regionList.Add(region.Attribute("name").Value);

                regionModel.Name = region.Attribute("name").Value;

                regionModel.Fields.Add(GetKey(), translator.Translate(regionModel.Name, Translator.Languages.Uk, Translator.Languages.En));

                foreach(XElement city in region.Elements())
                {
                    if (String.IsNullOrEmpty(city.Attribute("name").Value) || cityList.Contains(city.Attribute("name").Value))
                        continue;

                    var cityModel = new City();

                    cityList.Add(city.Attribute("name").Value);

                    cityModel.Name = city.Attribute("name").Value;

                    cityModel.Region = regionModel;

                    cityModel.Fields.Add(GetKey(), translator.Translate(cityModel.Name, Translator.Languages.Uk, Translator.Languages.En));

                    foreach (XElement university in city.Elements())
                    {
                        if (String.IsNullOrEmpty(university.Attribute("name").Value) || universityList.Contains(university.Attribute("name").Value))
                            continue;

                        var universityModel = new University();

                        universityList.Add(university.Attribute("name").Value);

                        universityModel.Name = university.Attribute("name").Value;

                        universityModel.City = cityModel;

                        universityModel.Fields.Add(GetKey(), translator.Translate(universityModel.Name, Translator.Languages.Uk, Translator.Languages.En));

                        foreach (XElement faculty in university.Elements())
                        {
                            if (String.IsNullOrEmpty(faculty.Attribute("name").Value))
                                continue;

                            var facultyModel = new Faculty();

                            facultyModel.University = universityModel;

                            facultyModel.Name = faculty.Attribute("name").Value;

                            facultyModel.Fields.Add(GetKey(), translator.Translate(facultyModel.Name, Translator.Languages.Uk, Translator.Languages.En));

                            foreach(XElement speciality in faculty.Elements())
                            {

                                if (String.IsNullOrEmpty(speciality.Attribute("name").Value))
                                    continue;

                                var specialityModel = new Speciality();

                                var facultyToSpecialityModel = new FacultyToSpeciality();

                                specialityModel.Name = speciality.Attribute("name").Value;

                                specialityModel.Fields.Add(GetKey(), translator.Translate(specialityModel.Name, Translator.Languages.Uk, Translator.Languages.En));

                                facultyToSpecialityModel.Speciality = specialityModel;

                                facultyToSpecialityModel.Faculty = facultyModel;

                                var node = new NodeModel
                                {
                                    Region = regionModel,
                                    City = cityModel,
                                    University = universityModel,
                                    Faculty = facultyModel,
                                    Speciality = specialityModel,
                                    FacultyToSpeciality = facultyToSpecialityModel
                                };

                                results.Add(node);
                            }
                        }
                    }
                }
            }

            return results;
        }