public WizardInfo() { Migrator = new Migrator(); IsLinking = true; RelationshipsInfo = new RelationshipsInfo(); CanConfirm = false; }
private void LoadRelationships(XmlElement relationshipsNode) { RelationshipsInfo = new RelationshipsInfo(); DataSourceParser.StorageInfo.SourceIdFieldName = null; DataSourceParser.StorageInfo.TestSuiteFieldName = null; DataSourceParser.StorageInfo.LinkRules.Clear(); if (relationshipsNode.Attributes.Count == 1) { bool isLinking; bool.TryParse(relationshipsNode.Attributes[0].Value, out isLinking); IsLinking = isLinking; } // Traverse each child node of the root node foreach (XmlElement node in relationshipsNode.ChildNodes) { switch (node.Name) { case c_sourceIdFieldNodeName: string sourceIdField = node.InnerXml; if (IsValidFieldName(sourceIdField) && (!Migrator.SourceNameToFieldMapping.ContainsKey(sourceIdField) || Migrator.SourceNameToFieldMapping[sourceIdField].IsIdField)) { RelationshipsInfo.SourceIdField = sourceIdField; DataSourceParser.StorageInfo.SourceIdFieldName = sourceIdField; } break; case c_testSuiteFieldNodeName: string testSuiteField = node.InnerXml; if (IsValidFieldName(testSuiteField) && !Migrator.SourceNameToFieldMapping.ContainsKey(testSuiteField) && String.CompareOrdinal(RelationshipsInfo.SourceIdField, testSuiteField) != 0) { RelationshipsInfo.TestSuiteField = testSuiteField; DataSourceParser.StorageInfo.TestSuiteFieldName = testSuiteField; } break; case c_linkTypesRootNodeName: foreach (XmlElement linkNode in node.ChildNodes) { if (String.CompareOrdinal(linkNode.Name, c_linkTypeNodeName) == 0 && linkNode.Attributes.Count == 4 && String.CompareOrdinal(linkNode.Attributes[0].Name, c_linkSourceFieldAttributeName) == 0 && String.CompareOrdinal(linkNode.Attributes[1].Name, c_linkTypeNameAttributeName) == 0 && String.CompareOrdinal(linkNode.Attributes[2].Name, c_linkedWorkItemAttributeName) == 0 && String.CompareOrdinal(linkNode.Attributes[3].Name, c_descriptionAttributeName) == 0) { string sourceField = linkNode.Attributes[0].Value; string linkTypeName = linkNode.Attributes[1].Value; string linkedWorkItemTypeName = linkNode.Attributes[2].Value; string linkDescription = linkNode.Attributes[3].Value; if (IsValidFieldName(sourceField) && !Migrator.SourceNameToFieldMapping.ContainsKey(sourceField) && String.CompareOrdinal(sourceField, RelationshipsInfo.SourceIdField) != 0 && String.CompareOrdinal(sourceField, RelationshipsInfo.TestSuiteField) != 0 && WorkItemGenerator.LinkTypeNames.Contains(linkTypeName) && WorkItemGenerator.WorkItemTypeToCategoryMapping.ContainsKey(WorkItemGenerator.SelectedWorkItemTypeName) && WorkItemGenerator.WorkItemTypeToCategoryMapping.ContainsKey(linkedWorkItemTypeName)) { ILinkRule linkTypeInfo = new LinkRule(WorkItemGenerator.WorkItemTypeToCategoryMapping[WorkItemGenerator.SelectedWorkItemTypeName], sourceField, linkTypeName, WorkItemGenerator.WorkItemTypeToCategoryMapping[linkedWorkItemTypeName], linkDescription); RelationshipsInfo.LinkRules.Add(linkTypeInfo); DataSourceParser.StorageInfo.LinkRules.Add(linkTypeInfo); } } } break; default: break; } } }