Ejemplo n.º 1
0
 /// <summary>
 /// Creates an internal representation of the given projects query hierarchy
 /// </summary>
 /// <param name="project">The project</param>
 /// <param name="q">The current queryfolder</param>
 /// <param name="qi">The internal wrapper for the current queryfolder</param>
 /// <param name="level">The recursion depth</param>
 private void ProcessQueryHierarchy(Project project, QueryFolder q, TfsQueryFolder qi, int level)
 {
     foreach (QueryItem item in q)
     {
         if (item is QueryFolder)
         {
             TfsQueryFolder sub = new TfsQueryFolder()
             {
                 Title    = item.Name,
                 Children = new List <ITfsQueryItem>(),
                 Parent   = qi,
                 Level    = level
             };
             qi.Children.Add(sub);
             ProcessQueryHierarchy(project, item as QueryFolder, sub, level + 1);
         }
         else
         {
             var      wis = TfsTeamProjectCollection.GetService <WorkItemStore>();
             TfsQuery sub = new TfsQuery(wis, project)
             {
                 Title           = item.Name,
                 Parent          = qi,
                 QueryDefinition = (item as QueryDefinition),
                 Level           = level
             };
             qi.Children.Add(sub);
         }
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Entry point method for fetching all queries for a given project (the active one)
        /// </summary>
        /// <returns>The root query folder for the active project</returns>
        private ITfsQueryFolder GetAllQueries()
        {
            try
            {
                var wis            = TfsTeamProjectCollection.GetService <WorkItemStore>();
                var project        = wis.Projects[ActiveTeamProject.Name];
                var queryHierarchy = project.QueryHierarchy;

                var result = new TfsQueryFolder()
                {
                    Title    = queryHierarchy.Name,
                    Children = new List <ITfsQueryItem>(),
                    Parent   = null,
                    Level    = 0
                };
                ProcessQueryHierarchy(project, queryHierarchy, result, 1);
                return(result);
            }
            catch (NullReferenceException)
            {
                // This can happen due to a parallel refresh (ActiveTeamProject switches to null)
                return(null);
            }
        }