void CreateFolderHyerarchy(string[] toCreate, QueryItem currentItem, int focus = 0)
        {
            if (currentItem is QueryFolder)
            {
                QueryFolder currentFolder = (QueryFolder)currentItem;

                if (!currentFolder.Contains(toCreate[focus]))
                {
                    currentFolder.Add(new QueryFolder(toCreate[focus]));
                    Trace.WriteLine(string.Format("  Created: {0}", toCreate[focus]));
                }
                if (toCreate.Length != focus + 1)
                {
                    CreateFolderHyerarchy(toCreate, currentFolder[toCreate[focus]], focus + 1);
                }
            }
        }
Example #2
0
        private void CreateFolderHyerarchy(string[] toCreate, QueryItem currentItem, int focus = 0)
        {
            if (currentItem is QueryFolder)
            {
                QueryFolder currentFolder = (QueryFolder)currentItem;

                if (!currentFolder.Contains(toCreate[focus]))
                {
                    currentFolder.Add(new QueryFolder(toCreate[focus]));
                    Log.LogInformation("  Created: {0}", toCreate[focus]);
                }
                if (toCreate.Length != focus + 1)
                {
                    CreateFolderHyerarchy(toCreate, currentFolder[toCreate[focus]], focus + 1);
                }
            }
        }
Example #3
0
        private static QueryDefinition FindQuery(string queryPath, QueryFolder queryFolder)
        {
            var parts = queryPath.Split('\\');

            for (int i = 0; i < parts.Length - 1; i++)
            {
                queryFolder = queryFolder[parts[i]] as QueryFolder;
            }
            string queryName = parts[parts.Length - 1];

            if (!queryFolder.Contains(queryName))
            {
                return(null);
            }
            var queryDef = queryFolder[queryName] as QueryDefinition;

            return(queryDef);
        }
Example #4
0
        public static QueryItem GetQueryItemFromPath(string path, string projectName)
        {
            string[]  strArray  = path.Split(cPathSeperators);
            int       length    = strArray.Length;
            QueryItem queryItem = (QueryItem)TfsContext.WorkItemStore.Projects[projectName].QueryHierarchy;

            for (int index = 0; index < length; ++index)
            {
                string      name        = strArray[index];
                QueryFolder queryFolder = queryItem as QueryFolder;
                if (queryFolder != null && queryFolder.Contains(name))
                {
                    queryItem = queryFolder[name];
                }
                else
                {
                    queryItem = (QueryItem)null;
                    break;
                }
            }
            return(queryItem);
        }
        private void SetQueryItem(QueryFolder queryFolder, QueryFolder parentFolder, string sourceProjectName)
        {
            QueryItem newItem = null;
            foreach (QueryItem subQuery in queryFolder)
            {
                try
                {
                    if (subQuery.GetType() == typeof(QueryFolder))
                    {
                        newItem = new QueryFolder(subQuery.Name);
                        if (!parentFolder.Contains(subQuery.Name))
                        {
                            parentFolder.Add(newItem);
                            store.Projects[projectName].QueryHierarchy.Save();
                            SetQueryItem((QueryFolder)subQuery, (QueryFolder)newItem, sourceProjectName);
                        }
                        else
                        {
                            logger.WarnFormat("Query Folder {0} already exists", subQuery);
                        }
                    }
                    else
                    {
                        QueryDefinition oldDef = (QueryDefinition)subQuery;
                        string queryText = oldDef.QueryText.Replace(sourceProjectName, projectName).Replace("User Story", "Product Backlog Item").Replace("Issue", "Impediment");

                        newItem = new QueryDefinition(subQuery.Name, queryText);
                        if (!parentFolder.Contains(subQuery.Name))
                        {
                            parentFolder.Add(newItem);
                            store.Projects[projectName].QueryHierarchy.Save();
                        }
                        else
                        {
                            logger.WarnFormat("Query Definition {0} already exists", subQuery);
                        }
                    }
                }
                catch (Exception ex)
                {
                    if (newItem != null)
                        newItem.Delete();
                    logger.ErrorFormat("Error creating Query: {0} : {1}", subQuery, ex.Message);
                    continue;
                }
            }
        }
Example #6
0
        public static void CopySubStuff(QueryFolder sourceQueryFolder, QueryFolder targetQueryFolder)
        {
            var workItemStore = sourceQueryFolder.Project.Store;

            var variables = new Dictionary <string, string>
            {
                { "project", sourceQueryFolder.Project.Name }
            };

            foreach (var sourceQueryFolderSubItem in sourceQueryFolder)
            {
                if (sourceQueryFolderSubItem is QueryDefinition sourceQueryDefinition)
                {
                    //this is a query definition
                    //only try to migrate query if query is valid.
                    try
                    {
                        var query = new Query(workItemStore, sourceQueryDefinition.QueryText, variables);

                        if (sourceQueryDefinition.QueryType == QueryType.List)
                        {
                            query.RunQuery();
                        }
                        else
                        {
                            query.RunLinkQuery();
                        }
                    }
                    catch (Microsoft.TeamFoundation.WorkItemTracking.Client.ValidationException)
                    {
                        //query was not valid: iteration path no longer exists or something alike.
                        continue;
                    }
                    catch
                    {
                        //crash
                        throw;
                    }

                    string queryText = sourceQueryDefinition.QueryText;
                    queryText = queryText.Replace(sourceQueryDefinition.Project.Name, targetQueryFolder.Project.Name);
                    if (targetQueryFolder.Contains(sourceQueryDefinition.Name))
                    {
                        targetQueryFolder[sourceQueryDefinition.Name].Delete();
                    }

                    targetQueryFolder.Add(new QueryDefinition(sourceQueryDefinition.Name, queryText));
                }
                else
                {
                    if (sourceQueryFolderSubItem is QueryFolder sourceSubQueryFolder)
                    {
                        //this is a query folder
                        var targetSubQueryFolder = new QueryFolder(sourceSubQueryFolder.Name);
                        if (targetQueryFolder.Contains(sourceSubQueryFolder.Name))
                        {
                            targetQueryFolder[targetSubQueryFolder.Name].Delete();
                        }

                        targetQueryFolder.Add(targetSubQueryFolder);
                        CopySubStuff(sourceSubQueryFolder, targetSubQueryFolder);
                    }
                }
            }
        }