public IDifference[] CompareProcessTemplates(ProcessTemplate current, ProcessTemplate goal) { var differences = new List<IDifference>(); var mm = new MatchAndMap<WorkItemTypeDefinition, string>(i => i.Name, StringComparer.OrdinalIgnoreCase, _processTemplateMap.WorkItemTypeMap); var matchResult = mm.Match(current.WorkItemTypeDefinitions, goal.WorkItemTypeDefinitions); foreach (var goalItem in matchResult.GoalOnly) { differences.Add(new AddedWorkItemTypeDefinitionDifference(goalItem)); } foreach (var currentItem in matchResult.CurrentOnly) { differences.Add(new RemovedWorkItemTypeDefinitionDifference(currentItem.Name)); } var witdComparer = new WorkItemTypeDefinitionComparer(_processTemplateMap); foreach (var pair in matchResult.Pairs) { differences.AddRange(witdComparer.FindDifferences(pair.Current, pair.Goal)); } return differences.ToArray(); }
public ProcessTemplate FromActiveTeamProject(Uri collectionUri, string projectName) { var collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(collectionUri); var processTemplate = new ProcessTemplate { WorkItemTypeDefinitions = GetTeamProjectWorkItemTypeDefinitions(collection, projectName) }; return processTemplate; }
public ProcessTemplate FromCollectionTemplates(Uri collectionUri, string processTemplateName) { var collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(collectionUri); var processTemplate = new ProcessTemplate(); using (var downloader = new ProcessTemplateDownloader(collection, processTemplateName)) { var processTemplateReader = new ProcessTemplateReader(downloader.TemplatePath); processTemplate.WorkItemTypeDefinitions = processTemplateReader.WorkItemTypeDefinitions.ToList(); } return processTemplate; }