Exemplo n.º 1
0
 public WizardInfo()
 {
     Migrator          = new Migrator();
     IsLinking         = true;
     RelationshipsInfo = new RelationshipsInfo();
     CanConfirm        = false;
 }
Exemplo n.º 2
0
        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;
                }
            }
        }