private BugzillaProfile Parse(XmlDocument document) { var result = new BugzillaProfile(); var root = document.SelectSingleNode("./{0}".Fmt(LegacyBugzillaProfileFields.XmlRoot)); result.Url = GetValueByName(root, LegacyBugzillaProfileFields.Url); result.Login = GetValueByName(root, LegacyBugzillaProfileFields.Login); result.Password = GetValueByName(root, LegacyBugzillaProfileFields.Password); result.Project = Int32.Parse(GetValueByName(root, LegacyBugzillaProfileFields.Project), CultureInfo.InvariantCulture); result.SavedSearches = GetValueByName(root, LegacyBugzillaProfileFields.Queries); var mapping = GetValueByName(root, LegacyBugzillaProfileFields.Maps); var parser = new LegacyMappingParser(); if (!string.IsNullOrEmpty(mapping)) { parser.Maps = mapping; MapUsers(result, parser); MapPriorities(result, parser); MapSeverities(result, parser); MapEntityState(result, parser); MapRoles(result, root); } return(result); }
private void MapPriorities(IBugTrackingMappingSource result, LegacyMappingParser parser) { foreach (string priority in parser.Priorities.Keys) { Func <Priority, string> comparator = x => x.Name; var tpPriority = GetPriorityBy(parser.Priorities[priority], comparator); if (tpPriority != null) { result.PrioritiesMapping.Add(new MappingElement { Key = priority, Value = Create(tpPriority) }); } } }
private void MapEntityState(BugzillaProfile result, LegacyMappingParser parser) { var project = _context.Projects.Single(p => p.ProjectID == result.Project); var process = _context.Processes.SingleOrDefault(p => p.ProcessID == project.ProcessID); foreach (string state in parser.EntityStates.Keys) { Func <EntityState, string> comparator = x => x.Name; var tpState = GetEntityStateBy(process, BugzillaConstants.BugEntityTypeId, parser.EntityStates[state], comparator); if (tpState != null) { result.StatesMapping.Add(new MappingElement { Key = state, Value = Create(tpState) }); } } }
private void MapUsers(BugzillaProfile result, LegacyMappingParser parser) { foreach (string user in parser.Users.Keys) { var tpUser = GetUserForProjectBy(result.Project, parser.Users[user], x => x.Login); if (tpUser != null) { result.UserMapping.Add(new MappingElement { Key = user, Value = Create(tpUser) }); continue; } tpUser = GetUserForProjectBy(result.Project, parser.Users[user], x => x.Email); if (tpUser != null) { result.UserMapping.Add(new MappingElement { Key = user, Value = Create(tpUser) }); } } }