/// <summary> /// Updates the given collection with a new item (COMMENT TYPE LAYOUT, Hack) /// </summary> /// <param name="collectionToBeUpdated">Collection to be updated</param> /// <param name="newItem">New item to manage</param> private static void UpdateCollectionWithCommentRootNode(List <TreeNode> collectionToBeUpdated, RoutineDataRecord newItem) { // root node TreeNode rootNode = null; if (collectionToBeUpdated.All(n => (n.Name != newItem.Tag.Title))) { rootNode = new TreeNode { Name = newItem.Tag.Title, Text = newItem.Tag.Title, Tag = new TreeNodeMetaData { NodeType = NodeType.Comment }, ImageKey = string.Format("ico_{0}", newItem.Tag.Title.ToLower()), SelectedImageKey = string.Format("ico_{0}", newItem.Tag.Title.ToLower()) }; collectionToBeUpdated.Add(rootNode); } else { rootNode = collectionToBeUpdated.First(n => (n.Name == newItem.Tag.Title)); } // schema node var nodeSchema = rootNode.Nodes.Cast <TreeNode>().FirstOrDefault(t => ((TreeNodeMetaData)t.Tag).NodeType == NodeType.Schema && t.Name == newItem.Schema); if (nodeSchema == null) { // adds the new schema node to the root node nodeSchema = new TreeNode { Name = newItem.Schema, Text = String.Format(Resources.NodeTextSchema, newItem.Schema), Tag = new TreeNodeMetaData { NodeType = NodeType.Schema }, ImageKey = @"ico_schema", SelectedImageKey = @"ico_schema" }; rootNode.Nodes.Add(nodeSchema); } // object type node TreeNode nodeObjectType = null; switch (newItem.Type) { case RoutineType.StoredProcedure: nodeObjectType = nodeSchema.Nodes.Cast <TreeNode>().FirstOrDefault(t => ((TreeNodeMetaData)t.Tag).NodeType == NodeType.RootStoredProcedure); if (nodeObjectType == null) { nodeObjectType = new TreeNode { Text = Resources.RootNodeTextProcedures, Tag = new TreeNodeMetaData { NodeType = NodeType.RootStoredProcedure }, ImageKey = @"ico_procedure", SelectedImageKey = @"ico_procedure" }; nodeSchema.Nodes.Add(nodeObjectType); } break; case RoutineType.Function: nodeObjectType = nodeSchema.Nodes.Cast <TreeNode>().FirstOrDefault(t => ((TreeNodeMetaData)t.Tag).NodeType == NodeType.RootFunction); if (nodeObjectType == null) { nodeObjectType = new TreeNode { Text = Resources.RootNodeTextFunctions, Tag = new TreeNodeMetaData { NodeType = NodeType.RootFunction }, ImageKey = @"ico_function", SelectedImageKey = @"ico_function" }; nodeSchema.Nodes.Add(nodeObjectType); } break; default: break; } // item node if (nodeObjectType != null) { var nodeItem = nodeObjectType.Nodes.Cast <TreeNode>().FirstOrDefault(t => ((TreeNodeMetaData)t.Tag).NodeType == NodeType.StoredProcedure && t.Name == newItem.FullName); if (nodeItem == null) { nodeItem = new TreeNode { Name = newItem.FullName, Text = newItem.FullName, Tag = new TreeNodeMetaData { NodeType = NodeType.StoredProcedure }, ImageKey = @"ico_procedure", SelectedImageKey = @"ico_procedure" }; nodeObjectType.Nodes.Add(nodeItem); } // comment node var nodeComment = nodeItem.Nodes.Cast <TreeNode>().FirstOrDefault(t => ((TreeNodeMetaData)t.Tag).NodeType == NodeType.Comment && t.Name == newItem.Id.ToString()); if (nodeComment == null) { nodeComment = new TreeNode { Name = newItem.Id.ToString(), Text = newItem.Definition, Tag = new TreeNodeMetaData { NodeType = NodeType.Comment, TodoItem = newItem.TodoItem }, ImageKey = string.Format("ico_{0}", newItem.Tag.Title.ToLower()), SelectedImageKey = string.Format("ico_{0}", newItem.Tag.Title.ToLower()) }; nodeItem.Nodes.Add(nodeComment); } } }
/// <summary> /// Updates the given collection with a new item (OBJECT TYPE LAYOUT, Functions) /// </summary> /// <param name="collectionToBeUpdated">Collection to be updated</param> /// <param name="newItem">New item to manage</param> private static void UpdateCollectionWithFunctionRootNode(List <TreeNode> collectionToBeUpdated, RoutineDataRecord newItem) { // root node TreeNode rootNode = null; if (collectionToBeUpdated.All(n => ((TreeNodeMetaData)n.Tag).NodeType != NodeType.RootFunction)) { rootNode = new TreeNode { Text = Resources.RootNodeTextFunctions, Tag = new TreeNodeMetaData { NodeType = NodeType.RootFunction }, ImageKey = @"ico_folder", SelectedImageKey = @"ico_folder" }; collectionToBeUpdated.Add(rootNode); } else { rootNode = collectionToBeUpdated.First(n => ((TreeNodeMetaData)n.Tag).NodeType == NodeType.RootFunction); } // schema node var nodeSchema = rootNode.Nodes.Cast <TreeNode>().FirstOrDefault(t => ((TreeNodeMetaData)t.Tag).NodeType == NodeType.Schema && t.Name == newItem.Schema); if (nodeSchema == null) { // adds the new schema node to the root node nodeSchema = new TreeNode { Name = newItem.Schema, Text = String.Format(Resources.NodeTextSchema, newItem.Schema), Tag = new TreeNodeMetaData { NodeType = NodeType.Schema }, ImageKey = @"ico_schema", SelectedImageKey = @"ico_schema" }; rootNode.Nodes.Add(nodeSchema); } // item node var nodeItem = nodeSchema.Nodes.Cast <TreeNode>().FirstOrDefault(t => ((TreeNodeMetaData)t.Tag).NodeType == NodeType.Function && t.Name == newItem.FullName); if (nodeItem == null) { nodeItem = new TreeNode { Name = newItem.FullName, Text = newItem.FullName, Tag = new TreeNodeMetaData { NodeType = NodeType.Function }, ImageKey = @"ico_function", SelectedImageKey = @"ico_function" }; nodeSchema.Nodes.Add(nodeItem); } // comment node var nodeComment = nodeItem.Nodes.Cast <TreeNode>().FirstOrDefault(t => ((TreeNodeMetaData)t.Tag).NodeType == NodeType.Comment && t.Name == newItem.CommentIndex.ToString()); if (nodeComment == null) { nodeComment = new TreeNode { Name = newItem.CommentIndex.ToString(), Text = newItem.Definition, Tag = new TreeNodeMetaData { NodeType = NodeType.Comment, TodoItem = newItem.TodoItem }, ImageKey = string.Format("ico_{0}", newItem.Tag.Title.ToLower()), SelectedImageKey = string.Format("ico_{0}", newItem.Tag.Title.ToLower()) }; nodeItem.Nodes.Add(nodeComment); } }