Ejemplo n.º 1
0
        private string GetNameFromMetadataStructureItem(MetadataStructureItem structureItem)
        {
            if (structureItem.MetadataItem == null)
            {
                return(structureItem.Caption);
            }

            string insertString;

            if (structureItem.MetadataItem is MetadataField)
            {
                var nameField = GetNameMetadataItem(structureItem.MetadataItem, false);

                var mapItem =
                    (_mapTreeItems.ContainsKey(structureItem.Parent) ? _mapTreeItems[structureItem.Parent] : null) as DataSource;

                var nameObject = mapItem?.AliasAST != null ?
                                 mapItem.NameInQuery :
                                 GetNameMetadataItem(structureItem.MetadataItem.Parent, mapItem == null);

                insertString = $"{nameObject}.{nameField}";
            }
            else
            {
                var mapItem =
                    (_mapTreeItems.ContainsKey(structureItem) ? _mapTreeItems[structureItem] : null) as DataSource;

                insertString = mapItem?.AliasAST != null
                    ? mapItem.NameInQuery
                    : GetNameMetadataItem(structureItem.MetadataItem, mapItem == null);
            }

            return(insertString);
        }
Ejemplo n.º 2
0
        // Closing the current query window on deleting the corresponding user query.
        private void userQueriesView1_UserQueryItemRemoved(object sender, MetadataStructureItem item)
        {
            var childWindow = MdiChildren.OfType <ChildForm>().FirstOrDefault(x => x.UserMetadataStructureItem == item);

            childWindow?.Close();
            SaveSettings();
        }
        // Closing the current query window on deleting the corresponding user query.
        private void QueriesView_OnUserQueryItemRemoved(object sender, MetadataStructureItem item)
        {
            var childWindow =
                MdiContainer1.Children.Cast <ChildWindow>().FirstOrDefault(x => x.UserMetadataStructureItem == item);

            if (childWindow != null)
            {
                childWindow.ForceClose();
            }

            SaveSettings();
        }
        private void DatabaseSchemaView_OnItemDoubleClick(object sender, MetadataStructureItem clickeditem)
        {
            if (clickeditem.MetadataItem == null)
            {
                return;
            }

            // Adding a table to the currently active query.
            var objectMetadata = (MetadataType.ObjectMetadata & clickeditem.MetadataItem.Type) != 0;
            var obj            = (MetadataType.Objects & clickeditem.MetadataItem.Type) != 0;

            if (!obj && !objectMetadata)
            {
                return;
            }

            if (MdiContainer1.ActiveChild == null && MdiContainer1.Children.Count == 0)
            {
                var childWindow = CreateChildWindow();
                if (childWindow == null)
                {
                    return;
                }

                MdiContainer1.Children.Add(childWindow);
                MdiContainer1.ActiveChild = childWindow;
            }

            var window = (ChildWindow)MdiContainer1.ActiveChild;

            if (window == null)
            {
                return;
            }

            var metadataItem = clickeditem.MetadataItem;

            if (metadataItem == null)
            {
                return;
            }

            if ((metadataItem.Type & MetadataType.Objects) <= 0 && metadataItem.Type != MetadataType.Field)
            {
                return;
            }

            using (var qualifiedName = metadataItem.GetSQLQualifiedName(null, true))
            {
                window.QueryView.AddObjectToActiveUnionSubQuery(qualifiedName.GetSQL());
            }
        }
Ejemplo n.º 5
0
        void DBView_ItemDoubleClick(object sender, MetadataStructureItem clickedItem)
        {
            if (clickedItem.MetadataItem == null)
            {
                return;
            }

            // Adding a table to the currently active query.
            if ((MetadataType.Objects & clickedItem.MetadataItem.Type) == 0 &&
                (MetadataType.ObjectMetadata & clickedItem.MetadataItem.Type) == 0)
            {
                return;
            }
            if (ActiveMdiChild == null)
            {
                ChildForm childWindow = CreateChildForm();
                if (childWindow == null)
                {
                    return;
                }
                childWindow.Show();
                childWindow.Activate();
            }
            ChildForm window = (ChildForm)ActiveMdiChild;

            if (window == null)
            {
                return;
            }
            MetadataItem metadataItem = clickedItem.MetadataItem;

            if (metadataItem == null)
            {
                return;
            }
            if ((metadataItem.Type & MetadataType.Objects) <= 0 && metadataItem.Type != MetadataType.Field)
            {
                return;
            }
            using (var qualifiedName = metadataItem.GetSQLQualifiedName(null, true))
            {
                window.QueryView.AddObjectToActiveUnionSubQuery(qualifiedName.GetSQL());
            }
        }
 private void DatabaseSchemaView1_OnItemDoubleClick(object sender, MetadataStructureItem item)
 {
     BtnAdd_OnClick(this, null);
 }
Ejemplo n.º 7
0
        private void ExportUserQueriesToFile(object sender, MetadataStructureItem item)
        {
            var uq = (UserQueriesContainer)sender;

            uq.ExportToXML(Server.MapPath("~/" + filename));
        }
Ejemplo n.º 8
0
        public void QueryBuilderControl1_Init(object sender, EventArgs e)
        {
            // Get instance of QueryBuilder
            QueryBuilder queryBuilder = QueryBuilderControl1.QueryBuilder;

            // Turn this property on to suppress parsing error messages when user types non-SELECT statements in the text editor.
            queryBuilder.BehaviorOptions.AllowSleepMode = true;
            queryBuilder.SyntaxProvider = new MSSQLSyntaxProvider();

            queryBuilder.OfflineMode = true;
            // Load MetaData from XML document. File name stored in WEB.CONFIG file in [/configuration/appSettings/XmlMetaData] key
            try
            {
                var path = ConfigurationManager.AppSettings["XmlMetaData"];
                var xml  = Path.Combine(Server.MapPath(""), path);
                queryBuilder.MetadataContainer.ImportFromXML(xml);
            }
            catch (Exception ex)
            {
                string message = "Can't load metadata from XML.";
                Logger.Error(message, ex);
                StatusBar1.Message.Error(message + " Check log.txt for details.");
            }


            // Initialization of the Metadata Structure object that's
            // responsible for representation of metadata in a tree-like form
            try
            {
                // Disable the automatic metadata structure creation
                queryBuilder.MetadataStructure.AllowChildAutoItems = false;

                // queryBuilder.DatabaseSchemaTreeOptions.DefaultExpandLevel = 0;

                MetadataFilterItem filter;

                // Create a top-level folder containing all objects
                MetadataStructureItem allObjects = new MetadataStructureItem();
                allObjects.Caption    = "All objects";
                allObjects.ImageIndex = queryBuilder.MetadataStructure.Structure.Options.FolderImageIndex;
                filter             = allObjects.MetadataFilter.Add();
                filter.ObjectTypes = MetadataType.All;
                queryBuilder.MetadataStructure.Items.Add(allObjects);

                // Create "Favorites" folder
                MetadataStructureItem favorites = new MetadataStructureItem();
                favorites.Caption    = "Favorites";
                favorites.ImageIndex = queryBuilder.MetadataStructure.Structure.Options.FolderImageIndex;
                queryBuilder.MetadataStructure.Items.Add(favorites);

                MetadataItem          metadataItem;
                MetadataStructureItem item;

                // Add some metadata objects to "Favorites" folder
                metadataItem      = queryBuilder.MetadataContainer.FindItem <MetadataItem>("Orders");
                item              = new MetadataStructureItem();
                item.MetadataItem = metadataItem;
                item.ImageIndex   = queryBuilder.MetadataStructure.Structure.Options.UserTableImageIndex;
                favorites.Items.Add(item);

                metadataItem      = queryBuilder.MetadataContainer.FindItem <MetadataItem>("Order Details");
                item              = new MetadataStructureItem();
                item.MetadataItem = metadataItem;
                item.ImageIndex   = queryBuilder.MetadataStructure.Structure.Options.UserTableImageIndex;
                favorites.Items.Add(item);

                // Create folder with filter
                MetadataStructureItem filteredFolder = new MetadataStructureItem(); // creates dynamic node
                filteredFolder.Caption    = "Filtered by 'Prod%'";
                filteredFolder.ImageIndex = queryBuilder.MetadataStructure.Structure.Options.FolderImageIndex;
                filter             = filteredFolder.MetadataFilter.Add();
                filter.ObjectTypes = MetadataType.Table | MetadataType.View;
                filter.Object      = "Prod%";
                queryBuilder.MetadataStructure.Items.Add(filteredFolder);

                // Clears and loads the first level of the metadata structure tree
                queryBuilder.MetadataStructure.Refresh();
                StatusBar1.Message.Information("Metadata loaded");
            }
            catch (Exception ex)
            {
                string message =
                    "Error loading metadata from the database." +
                    "Check the 'configuration\\connectionStrings' key in the [web.config] file.";
                Logger.Error(message, ex);
                StatusBar1.Message.Error(message + " Check log.txt for details.");
            }
        }
Ejemplo n.º 9
0
        private bool SaveNewUserQuery(ChildForm childWindow)
        {
            if (string.IsNullOrEmpty(childWindow.SqlQuery.SQL))
            {
                MessageBox.Show("Nothing to save: SQL query is empty", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            MetadataStructureItem node = null;
            string title;

            do
            {
                using (QueryNameForm window = new QueryNameForm())
                {
                    window.QueryName = childWindow.SqlQuery.SQLContext.MetadataContainer.GetUniqueItemName(
                        MetadataType.UserQuery,
                        Helpers.Localizer.GetString("strNewQuery", LocalizableConstantsUI.strNewQuery));

                    if (window.ShowDialog() != DialogResult.OK)
                    {
                        return(false);
                    }

                    title = window.QueryName;
                }

                if (!UserQueries.IsUserQueryExist(childWindow.SqlQuery.SQLContext.MetadataContainer, title))
                {
                    var atItem = userQueriesView1.FocusedItem ?? userQueriesView1.MetadataStructure;
                    if (!UserQueries.IsFolder(atItem))
                    {
                        atItem = atItem.Parent;
                    }

                    try
                    {
                        node = UserQueries.AddUserQuery(childWindow.SqlQuery.SQLContext.MetadataContainer, atItem, title,
                                                        childWindow.FormattedQueryText, (int)DefaultImageListImageIndices.VirtualObject, childWindow.QueryView.LayoutSQL);
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return(false);
                    }

                    break;
                }

                var path    = userQueriesView1.GetPathAtUserQuery(title);
                var message = string.IsNullOrEmpty(path)
                    ? @"The same-named query already exists in the root folder."
                    : string.Format("The same-named query already exists in the \"{0}\" folder.", path);

                MessageBox.Show(message, @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            } while(true);
            childWindow.SqlSourceType             = ChildForm.SourceType.UserQuery;
            childWindow.FileSourcePath            = title;
            childWindow.Text                      = title;
            childWindow.UserMetadataStructureItem = node;
            SaveSettings();
            return(true);
        }
 private void databaseSchemaView1_ItemDoubleClick(object sender, MetadataStructureItem item)
 {
     btnAddFilter_Click(this, EventArgs.Empty);
 }
Ejemplo n.º 11
0
        private void ExportUserQueriesToFile(object sender, MetadataStructureItem item)
        {
            var uq = (UserQueriesContainer)sender;

            uq.ExportToXML(_env.WebRootPath + @"/../" + filename);
        }
Ejemplo n.º 12
0
        private void ReloadQueryObjects()
        {
            if (ActiveUnionSubQuery == null)
            {
                return;
            }

            _mapTreeItems.Clear();

            var metadataStructure = new MetadataStructure()
            {
                AllowChildAutoItems = false
            };

            List <DataSource> listDataSource = ActiveUnionSubQuery.GetVisibleDataSources();

            foreach (var dataSource in listDataSource)
            {
                var itemStructure = new MetadataStructureItem {
                    MetadataItem = dataSource.MetadataObject
                };

                _mapTreeItems.Add(itemStructure, dataSource);

                if (dataSource.AliasAST != null && !(dataSource is DataSourceQuery))
                {
                    itemStructure.Caption = dataSource.NameInQuery + " (" +
                                            dataSource.GetObjectNameInQuery(SQLGenerationOptions) + ")";
                }

                if (dataSource.MetadataObject == null)
                {
                    if (string.IsNullOrEmpty(itemStructure.Caption))
                    {
                        itemStructure.Caption = dataSource.NameInQuery;
                    }

                    itemStructure.ImageIndex = 5;

                    foreach (var field in dataSource.Metadata.Fields)
                    {
                        var metadataItemField = new MetadataStructureItem {
                            ImageIndex = 11
                        };
                        _mapTreeItems.Add(metadataItemField, field);

                        if (SQLGenerationOptions.UseAltNames && !string.IsNullOrEmpty(field.AltName))
                        {
                            metadataItemField.Caption = field.AltName;
                        }
                        else
                        {
                            metadataItemField.Caption = field.Name;
                        }

                        itemStructure.Items.Add(metadataItemField);
                    }
                }

                metadataStructure.Items.Add(itemStructure);
            }

            FillQueryObjectsTree(metadataStructure);
        }
Ejemplo n.º 13
0
        private void TreeObjects_OnItemDoubleClick(object sender, MetadataStructureItem clickeditem)
        {
            var name = GetNameMetadataItem(clickeditem.MetadataItem, true);

            InsertTextIntoEditor(name);
        }
Ejemplo n.º 14
0
 private void TreeQueryObjects_OnItemDoubleClick(object sender, MetadataStructureItem clickeditem)
 {
     InsertTextIntoEditor(GetNameFromMetadataStructureItem(clickeditem));
 }
        protected override void OnLoad(EventArgs e)
        {
            // set syntax provider
            queryBuilder.SyntaxProvider = new MSSQLSyntaxProvider();

            // Fill metadata container from the XML file. (For demonstration purposes.)
            try
            {
                queryBuilder.MetadataLoadingOptions.OfflineMode = true;
                queryBuilder.MetadataContainer.ImportFromXML("Northwind.xml");
                queryBuilder.SQL = @"SELECT Orders.OrderID, Orders.CustomerID, Orders.OrderDate, [Order Details].ProductID,
										[Order Details].UnitPrice, [Order Details].Quantity, [Order Details].Discount
									  FROM Orders INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID
									  WHERE Orders.OrderID > 0 AND [Order Details].Discount > 0"                                    ;

                // Disable the automatic metadata structure creation
                queryBuilder.MetadataStructure.AllowChildAutoItems = false;

                MetadataFilterItem filter;

                // Create a top-level folder containing all objects
                var allObjects = new MetadataStructureItem
                {
                    Caption    = "All objects",
                    ImageIndex = queryBuilder.DatabaseSchemaViewOptions.ImageIndices.FolderImageIndex
                };
                filter             = allObjects.MetadataFilter.Add();
                filter.ObjectTypes = MetadataType.All;
                queryBuilder.MetadataStructure.Items.Add(allObjects);

                // Create "Favorites" folder
                var favorites = new MetadataStructureItem
                {
                    Caption    = "Favorites",
                    ImageIndex = queryBuilder.DatabaseSchemaViewOptions.ImageIndices.FolderImageIndex
                };
                queryBuilder.MetadataStructure.Items.Add(favorites);


                // Add some metadata objects to "Favorites" folder
                var metadataItem = queryBuilder.MetadataContainer.FindItem <MetadataItem>("Orders");
                var item1        = new MetadataStructureItem
                {
                    MetadataItem = metadataItem,
                };
                favorites.Items.Add(item1);

                metadataItem = queryBuilder.MetadataContainer.FindItem <MetadataItem>("Order Details");
                var item2 = new MetadataStructureItem
                {
                    MetadataItem = metadataItem,
                };
                favorites.Items.Add(item2);

                // Create folder with filter
                MetadataStructureItem filteredFolder = new MetadataStructureItem
                {
                    Caption    = "Filtered by 'Prod%'",
                    ImageIndex = queryBuilder.DatabaseSchemaViewOptions.ImageIndices.FolderImageIndex
                };             // creates dynamic node
                filter             = filteredFolder.MetadataFilter.Add();
                filter.ObjectTypes = MetadataType.Table | MetadataType.View;
                filter.Object      = "Prod%";
                queryBuilder.MetadataStructure.Items.Add(filteredFolder);

                queryBuilder.InitializeDatabaseSchemaTree();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            base.OnLoad(e);
        }
        private QueryBuilder CreateQueryBuilder()
        {
            // Get instance of QueryBuilder
            var queryBuilder = QueryBuilderStore.Factory.MsSql("MetadataStructure");

            // Turn this property on to suppress parsing error messages when user types non-SELECT statements in the text editor.
            queryBuilder.BehaviorOptions.AllowSleepMode = true;

            queryBuilder.MetadataLoadingOptions.OfflineMode = true;

            // Load MetaData from XML document. File name stored in WEB.CONFIG file in [/configuration/appSettings/Db2XmlMetaData] key
            var path = ConfigurationManager.AppSettings["NorthwindXmlMetaData"];
            var xml  = Path.Combine(Server.MapPath("~"), path);

            queryBuilder.MetadataContainer.ImportFromXML(xml);

            // Initialization of the Metadata Structure object that's
            // responsible for representation of metadata in a tree-like form
            // Disable the automatic metadata structure creation
            queryBuilder.MetadataStructure.AllowChildAutoItems = false;

            // queryBuilder.DatabaseSchemaTreeOptions.DefaultExpandLevel = 0;

            MetadataFilterItem filter;

            // Create a top-level folder containing all objects
            MetadataStructureItem allObjects = new MetadataStructureItem();

            allObjects.Caption = "All objects";
            filter             = allObjects.MetadataFilter.Add();
            filter.ObjectTypes = MetadataType.All;
            queryBuilder.MetadataStructure.Items.Add(allObjects);

            // Create "Favorites" folder
            MetadataStructureItem favorites = new MetadataStructureItem();

            favorites.Caption = "Favorites";
            queryBuilder.MetadataStructure.Items.Add(favorites);

            MetadataItem          metadataItem;
            MetadataStructureItem item;

            // Add some metadata objects to "Favorites" folder
            metadataItem      = queryBuilder.MetadataContainer.FindItem <MetadataItem>("Orders");
            item              = new MetadataStructureItem();
            item.MetadataItem = metadataItem;
            favorites.Items.Add(item);

            metadataItem      = queryBuilder.MetadataContainer.FindItem <MetadataItem>("Order Details");
            item              = new MetadataStructureItem();
            item.MetadataItem = metadataItem;
            favorites.Items.Add(item);

            // Create folder with filter
            MetadataStructureItem filteredFolder = new MetadataStructureItem(); // creates dynamic node

            filteredFolder.Caption = "Filtered by 'Prod%'";
            filter             = filteredFolder.MetadataFilter.Add();
            filter.ObjectTypes = MetadataType.Table | MetadataType.View;
            filter.Object      = "Prod%";
            queryBuilder.MetadataStructure.Items.Add(filteredFolder);

            queryBuilder.SQL = GetDefaultSql();

            return(queryBuilder);
        }
Ejemplo n.º 17
0
        private void UserQueriesChanged(object sender, MetadataStructureItem item)
        {
            var container = (UserQueriesContainer)sender;

            container.ExportToXML(Server.MapPath("UserQueriesStructure.xml"));
        }
Ejemplo n.º 18
0
        private void InitializeQueryBuilder(QueryBuilder queryBuilder)
        {
            queryBuilder.SyntaxProvider = new MSSQLSyntaxProvider();

            // Turn this property on to suppress parsing error messages when user types non-SELECT statements in the text editor.
            queryBuilder.BehaviorOptions.AllowSleepMode = true;

            queryBuilder.MetadataLoadingOptions.OfflineMode = true;

            // Load MetaData from XML document.
            var path = _config["NorthwindXmlMetaData"];
            var xml  = Path.Combine(_env.WebRootPath, path);

            queryBuilder.MetadataContainer.ImportFromXML(xml);

            // Initialization of the Metadata Structure object that's
            // responsible for representation of metadata in a tree-like form
            // Disable the automatic metadata structure creation
            queryBuilder.MetadataStructure.AllowChildAutoItems = false;

            // queryBuilder.DatabaseSchemaTreeOptions.DefaultExpandLevel = 0;

            MetadataFilterItem filter;

            // Create a top-level folder containing all objects
            MetadataStructureItem allObjects = new MetadataStructureItem();

            allObjects.Caption = "All objects";
            filter             = allObjects.MetadataFilter.Add();
            filter.ObjectTypes = MetadataType.All;
            queryBuilder.MetadataStructure.Items.Add(allObjects);

            // Create "Favorites" folder
            MetadataStructureItem favorites = new MetadataStructureItem();

            favorites.Caption = "Favorites";
            queryBuilder.MetadataStructure.Items.Add(favorites);

            MetadataItem          metadataItem;
            MetadataStructureItem item;

            // Add some metadata objects to "Favorites" folder
            metadataItem      = queryBuilder.MetadataContainer.FindItem <MetadataItem>("Orders");
            item              = new MetadataStructureItem();
            item.MetadataItem = metadataItem;
            favorites.Items.Add(item);

            metadataItem      = queryBuilder.MetadataContainer.FindItem <MetadataItem>("Order Details");
            item              = new MetadataStructureItem();
            item.MetadataItem = metadataItem;
            favorites.Items.Add(item);

            // Create folder with filter
            MetadataStructureItem filteredFolder = new MetadataStructureItem(); // creates dynamic node

            filteredFolder.Caption = "Filtered by 'Prod%'";
            filter             = filteredFolder.MetadataFilter.Add();
            filter.ObjectTypes = MetadataType.Table | MetadataType.View;
            filter.Object      = "Prod%";
            queryBuilder.MetadataStructure.Items.Add(filteredFolder);

            queryBuilder.SQL = GetDefaultSql();
        }