public void ReadFromDisk(string filename, TfsProject source, TfsProject target) { using (var tw = File.OpenText(filename)) { var serializer = JsonSerializer.Create(); var st = serializer.Deserialize <List <WorkItemFieldMap2> >(new JsonTextReader(tw)); mapping = new Dictionary <WorkItemType, WorkItemType>(); fieldMapping = new List <WorkItemFieldMap>(); foreach (var item in st) { var sourceType = source.project.WorkItemTypes[item.SourceWorkIemType]; var targetType = target.project.WorkItemTypes[item.TargetWorkIemType]; mapping[sourceType] = targetType; var newFm = new WorkItemFieldMap(sourceType, targetType); foreach (var fieldmap in item.MappedReferenceNames) { var sourceFieldDefinition = sourceType.FieldDefinitions.Cast <FieldDefinition>().First(a => a.ReferenceName == fieldmap.Key); var targetFieldDefinition = targetType.FieldDefinitions.Cast <FieldDefinition>().First(a => a.ReferenceName == fieldmap.Value); newFm.mapping[sourceFieldDefinition] = targetFieldDefinition; } fieldMapping.Add(newFm); } } }
public static WorkItemTypeMap MapTypes(TfsProject source, TfsProject target) { WorkItemTypeCollection workItemTypes = target.project.WorkItemTypes; WorkItemTypeMap fieldMap = new WorkItemTypeMap(); foreach (WorkItemType workItemTypeSource in source.project.WorkItemTypes) { List <List <string> > fieldList = new List <List <string> >(); List <string> sourceList = new List <string>(); List <string> targetList = new List <string>(); WorkItemType workItemTypeTarget = null; if (workItemTypes.Contains(workItemTypeSource.Name)) { workItemTypeTarget = workItemTypes[workItemTypeSource.Name]; } else if (workItemTypeSource.Name == "User Story") { workItemTypeTarget = workItemTypes["Product Backlog Item"]; } else if (workItemTypeSource.Name == "Issue") { workItemTypeTarget = workItemTypes["Impediment"]; } else { // not automatically mapped continue; } WorkItemFieldMap m = new WorkItemFieldMap(workItemTypeSource, workItemTypeTarget); m.GenerateDefaultMap(); fieldMap.fieldMapping.Add(m); fieldMap.mapping[workItemTypeSource] = workItemTypeTarget; } return(fieldMap); }