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); } } }
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); } } }
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); }
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; } } }
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); } } } }