private void DeserializeStars() { var xmlDocument = XDocument.Load(Constants.StarXmlFile).Root.Elements(); using (PlanetHuntersContext ctx = new PlanetHuntersContext()) { StarSystemRepo syRepo = new StarSystemRepo(ctx); StarRepo stRepo = new StarRepo(ctx); foreach (var starElem in xmlDocument) { StringReader reader = new StringReader(starElem.ToString()); XmlSerializer serializer = new XmlSerializer(typeof(StarDto)); var starDto = (StarDto)serializer.Deserialize(reader); if (starDto.Temperature > 2400 && starDto.Name != null && starDto.StarSystem != null) { var starSystem = syRepo.SearchFor(s => s.Name == starDto.StarSystem).FirstOrDefault(); if (starSystem == null) { starSystem = new StarSystem() { Name = starDto.StarSystem } } ; var star = new Star(); Mapper.Map(starDto, star); star.HostStarSystem = starSystem; stRepo.Insert(star); ctx.SaveChanges(); this.DebugLog.AppendLine($"Record {star.Name} successfully imported."); } else { this.DebugLog.AppendLine(Constants.InvalidDataFormat); } } } }
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(); } } } }