Ejemplo n.º 1
0
        /// <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);
                }
            }
        }
Ejemplo n.º 2
0
        /// <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);
            }
        }