예제 #1
0
        private void DeserializePlanets()
        {
            var planetDtos = JsonFileOperations.DeserializeJsonCollection <PlanetDto>(Constants.PlanetJsonFile);

            using (PlanetHuntersContext ctx = new PlanetHuntersContext())
            {
                StarSystemRepo stRepo = new StarSystemRepo(ctx);
                PlanetRepo     plRepo = new PlanetRepo(ctx);

                foreach (var dto in planetDtos)
                {
                    if (dto.Mass > 0 && dto.Name != null && dto.StarSystem != null)
                    {
                        var planet = new Planet();
                        Mapper.Map(dto, planet);

                        var starSystem = stRepo.SearchFor(s => s.Name == dto.StarSystem).FirstOrDefault();

                        if (starSystem == null)
                        {
                            starSystem = new StarSystem()
                            {
                                Name = dto.StarSystem
                            }
                        }
                        ;

                        starSystem.Planets.Add(planet);
                        planet.HostStarSystem = starSystem;

                        plRepo.Insert(planet);
                        ctx.SaveChanges();

                        this.DebugLog.AppendLine($"Record {dto.Name} successfully imported.");
                    }
                    else
                    {
                        this.DebugLog.AppendLine(Constants.InvalidDataFormat);
                    }
                }
            }
        }
예제 #2
0
        private void DeserializeDiscoveries()
        {
            var xmlDocument = XDocument.Load(Constants.DiscoveryXmlFile).Root.Elements();

            using (PlanetHuntersContext ctx = new PlanetHuntersContext())
            {
                var starRepo       = new StarRepo(ctx);
                var discoveryRepo  = new DiscoveryRepo(ctx);
                var planetRepo     = new PlanetRepo(ctx);
                var telescopeRepo  = new TelescopeRepo(ctx);
                var astronomerRepo = new AstronomerRepo(ctx);

                foreach (var discoveryElem in xmlDocument)
                {
                    bool errorFlag = false;
                    var  discovery = new Discovery();

                    DateTime date          = DateTime.Parse(discoveryElem.Attribute("DateMade").Value);
                    string   telescopeName = discoveryElem.Attribute("Telescope").Value;

                    discovery.DateMade = date;

                    var telescope = telescopeRepo.SearchFor(t => t.Name == telescopeName).FirstOrDefault();
                    if (telescope == null)
                    {
                        errorFlag = true;
                    }
                    else
                    {
                        discovery.Telescope = telescope;
                    }

                    var starsElement = discoveryElem.Elements("Stars");
                    if (starsElement.Elements().Any())
                    {
                        foreach (var sElem in starsElement)
                        {
                            string starName = sElem.Value;
                            var    star     = starRepo.SearchFor(s => s.Name == starName).FirstOrDefault();

                            if (star == null)
                            {
                                errorFlag = true;
                                break;
                            }

                            discovery.Stars.Add(star);
                        }
                    }

                    var planetsElement = discoveryElem.Elements("Planets");
                    if (planetsElement.Elements().Any())
                    {
                        foreach (var pElem in planetsElement)
                        {
                            string planetName = pElem.Value;
                            var    planet     = planetRepo.SearchFor(p => p.Name == planetName).FirstOrDefault();

                            if (planet == null)
                            {
                                errorFlag = true;
                                break;
                            }

                            discovery.Planets.Add(planet);
                        }
                    }

                    var pioneerElement = discoveryElem.Elements("Pioneers").Elements();
                    if (pioneerElement.Any())
                    {
                        foreach (var pElem in pioneerElement)
                        {
                            string[] pName     = pElem.Value.Split(',');
                            string   firstName = pName[0].Trim();
                            string   lastName  = pName[1].Trim();

                            var pioneer = astronomerRepo
                                          .GetAll()
                                          .Where(p => p.FirstName.Equals(firstName) && p.LastName.Equals(lastName))
                                          .FirstOrDefault();

                            if (pioneer == null)
                            {
                                errorFlag = true;
                                break;
                            }

                            discovery.Pioneers.Add(pioneer);
                        }
                    }

                    var observersElement = discoveryElem.Elements("Observers");
                    if (observersElement.Elements().Any())
                    {
                        foreach (var oElem in observersElement)
                        {
                            string[] oName     = oElem.Value.Split(',');
                            string   firstName = oName[0].Trim();
                            string   lastName  = oName[1].Trim();

                            var observer = astronomerRepo
                                           .SearchFor(p => p.FirstName == firstName && p.LastName == lastName)
                                           .FirstOrDefault();

                            if (observer == null)
                            {
                                errorFlag = true;
                                break;
                            }

                            discovery.Observers.Add(observer);
                        }
                    }

                    if (errorFlag == false)
                    {
                        discoveryRepo.Insert(discovery);
                        ctx.SaveChanges();
                    }
                }
            }
        }