Beispiel #1
0
        public string GetNewNodeName(string sourceNodeName, NodeStructureType nodeStructureType)
        {
            Log.LogDebug("NodeStructureEnricher.GetNewNodeName({sourceNodeName}, {nodeStructureType})", sourceNodeName, nodeStructureType.ToString());
            string targetStructureName = NodeStructureTypeToLanguageSpecificName(Engine.Target, nodeStructureType);
            string targetProjectName   = Engine.Target.Config.Project;
            string sourceStructureName = NodeStructureTypeToLanguageSpecificName(Engine.Source, nodeStructureType);
            string sourceProjectName   = Engine.Source.Config.Project;

            // Replace project name with new name (if necessary) and inject nodePath (Area or Iteration) into path for node validation
            string newNodeName;

            if (_prefixProjectToNodes)
            {
                newNodeName = $@"{targetProjectName}\{targetStructureName}\{sourceNodeName}";
            }
            else
            {
                var regex = new Regex(Regex.Escape(sourceProjectName));
                if (sourceNodeName.StartsWith($@"{sourceProjectName}\{sourceStructureName}\"))
                {
                    newNodeName = regex.Replace(sourceNodeName, targetProjectName, 1);
                }
                else
                {
                    newNodeName = regex.Replace(sourceNodeName, $@"{targetProjectName}\{targetStructureName}", 1);
                }
            }

            // Validate the node exists
            if (!TargetNodeExists(newNodeName))
            {
                Log.LogWarning("The Node '{newNodeName}' does not exist, leaving as '{newProjectName}'. This may be because it has been renamed or moved and no longer exists, or that you have not migrateed the Node Structure yet.", newNodeName, targetProjectName);
                newNodeName = targetProjectName;
            }

            // Remove nodePath (Area or Iteration) from path for correct population in work item
            if (newNodeName.StartsWith(targetProjectName + '\\' + targetStructureName + '\\'))
            {
                newNodeName = newNodeName.Remove(newNodeName.IndexOf($@"{targetStructureName}\"), $@"{targetStructureName}\".Length);
            }
            else if (newNodeName.StartsWith(targetProjectName + '\\' + targetStructureName))
            {
                newNodeName = newNodeName.Remove(newNodeName.IndexOf($@"{targetStructureName}"), $@"{targetStructureName}".Length);
            }
            return(newNodeName);
        }
Beispiel #2
0
        public string NodeStructureTypeToLanguageSpecificName(IMigrationClient client, NodeStructureType value)
        {
            // insert switch statement here
            switch (value)
            {
            case NodeStructureType.Area:
                return(client.Config.LanguageMaps.AreaPath);

            case NodeStructureType.Iteration:
                return(client.Config.LanguageMaps.IterationPath);

            default:
                throw new InvalidOperationException("Not a valid NodeStructureType ");
            }
        }