private static void ImportQuery(WorkItemQueryInfo query, QueryHierarchy queryHierarchy)
        {
            var currentFolder = queryHierarchy.OfType <QueryFolder>().FirstOrDefault(i => !i.IsPersonal);

            if (currentFolder == null)
            {
                throw new InvalidOperationException("The query hierarchy does not contain a shared (non-personal) root folder.");
            }
            var currentFolderNameIndex = 0;
            var pathComponents         = (query.Path ?? string.Empty).Split('/');

            while (currentFolderNameIndex < pathComponents.Length)
            {
                var childFolderName = pathComponents[currentFolderNameIndex];
                if (currentFolder.Contains(childFolderName))
                {
                    var itemWithName = currentFolder[childFolderName];
                    if (itemWithName is QueryDefinition)
                    {
                        throw new ArgumentException("A query folder was requested but a query file with the same name exists at the same location: " + childFolderName);
                    }
                    else
                    {
                        currentFolder = (QueryFolder)itemWithName;
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(childFolderName))
                    {
                        // If childFolderName is empty then we import into the root, otherwise create the folder.
                        var newFolder = new QueryFolder(childFolderName);
                        currentFolder.Add(newFolder);
                        currentFolder = newFolder;
                    }
                }
                currentFolderNameIndex++;
            }

            if (currentFolder.Contains(query.Name))
            {
                var itemWithName = currentFolder[query.Name];
                if (itemWithName is QueryFolder)
                {
                    throw new ArgumentException("A query file was requested but a query folder with the same name exists at the same location: " + query.Name);
                }
                else
                {
                    var existingQuery = (QueryDefinition)itemWithName;
                    existingQuery.QueryText = query.Text;
                }
            }
            else
            {
                var newQuery = new QueryDefinition(query.Name, query.Text);
                currentFolder.Add(newQuery);
            }
        }
 public WorkItemQueryExport(WorkItemQueryInfo query, string saveAsFileName)
 {
     this.Query = query;
     this.SaveAsFileName = saveAsFileName;
 }