protected virtual void OkClicked(object sender, EventArgs e)
        {
            if (context.IsTemporary)
            {
                try {
                    //make it a real connection context and fill in the database
                    IConnectionPool pool = DbFactoryService.CreateConnectionPool(DatabaseConnection);
                    pool.Initialize();
                    ISchemaProvider provider = DbFactoryService.CreateSchemaProvider(DatabaseConnection,
                                                                                     pool);

                    DatabaseSchema db = provider.CreateDatabaseSchema(settingsWidget.ConnectionSettings.Database);
                    OnBeforeDatabaseCreation(db);
                    ((AbstractEditSchemaProvider)provider).CreateDatabase(db);

                    context.ConnectionSettings.Database = settingsWidget.ConnectionSettings.Database;
                    context.ConnectionSettings.Name     = settingsWidget.ConnectionSettings.Name;
                    context.IsTemporary = false;
                    MessageService.ShowMessage(AddinCatalog.GetString("Database has been created."));
                    ConnectionContextService.AddDatabaseConnectionContext(context);
                } catch (Exception ex) {
                    QueryService.RaiseException(ex);
                    Respond(ResponseType.Close);
                    return;
                }
            }
            Respond(ResponseType.Ok);
        }
        protected virtual void RefreshClickedThreaded(object state)
        {
            DatabaseConnectionSettings settings = state as DatabaseConnectionSettings;
            DatabaseConnectionContext  context  = new DatabaseConnectionContext(settings);
            IDbFactory         fac  = DbFactoryService.GetDbFactory(settings.ProviderIdentifier);
            FakeConnectionPool pool = null;

            try {
                pool = new FakeConnectionPool(fac, fac.ConnectionProvider, context);
                pool.Initialize();
                if (pool.HasErrors)
                {
                    MessageService.ShowError(pool.Error);
                    return;
                }

                ISchemaProvider          prov      = fac.CreateSchemaProvider(pool);
                DatabaseSchemaCollection databases = prov.GetDatabases();

                DispatchService.GuiDispatch(delegate() {
                    foreach (DatabaseSchema db in databases)
                    {
                        storeDatabases.AppendValues(db.Name);
                    }
                });
                isDatabaseListEmpty = databases.Count == 0;
            } catch {
            } finally {
                if (pool != null)
                {
                    pool.Close();
                }
            }

            if (isDatabaseListEmpty)
            {
                DispatchService.GuiDispatch(delegate() {
                    storeDatabases.AppendValues(AddinCatalog.GetString("No databases found!"));
                });
            }
            else
            {
                DispatchService.GuiDispatch(delegate() {
                    TreeIter iter;
                    if (storeDatabases.GetIterFirst(out iter))
                    {
                        comboDatabase.SetActiveIter(iter);
                    }
                });
            }
        }
Beispiel #3
0
        protected void OnQueryCommand()
        {
            TableNode node = (TableNode)CurrentNode.DataItem;

            IdentifierExpression tableId = new IdentifierExpression(node.Table.Name);
            SelectStatement      sel     = new SelectStatement(new FromTableClause(tableId));

            SqlQueryView view = new SqlQueryView();

            view.SelectedConnectionContext = node.ConnectionContext;

            IDbFactory fac = DbFactoryService.GetDbFactory(node.ConnectionContext.ConnectionSettings);

            view.Text = fac.Dialect.GetSql(sel);

            IdeApp.Workbench.OpenDocument(view, true);
        }
Beispiel #4
0
        protected virtual void OpenClicked(object sender, System.EventArgs e)
        {
            DatabaseConnectionSettings settingsCopy = CreateDatabaseConnectionSettings();
            IDbFactory fac = DbFactoryService.GetDbFactory(settingsCopy.ProviderIdentifier);

            string database = null;

            if (fac.GuiProvider.ShowSelectDatabaseDialog(false, out database))
            {
                if (isDatabaseListEmpty)
                {
                    storeDatabases.Clear();                      //clear the fake node
                }
                isDatabaseListEmpty = false;

                TreeIter iter = storeDatabases.AppendValues(database);
                comboDatabase.SetActiveIter(iter);
            }
        }
        protected virtual void TestClickedThreaded(object state)
        {
            DatabaseConnectionSettings settings = state as DatabaseConnectionSettings;
            DatabaseConnectionContext  context  = new DatabaseConnectionContext(settings);
            IDbFactory fac = DbFactoryService.GetDbFactory(settings.ProviderIdentifier);

            bool   success = false;
            string error   = null;

            FakeConnectionPool  pool = null;
            IPooledDbConnection conn = null;

            try {
                pool    = new FakeConnectionPool(fac, fac.ConnectionProvider, context);
                success = pool.Initialize();
                error   = pool.Error;
            } catch (System.Data.DataException ex) {
                error   = ex.Message;
                success = false;
            } finally {
                if (conn != null)
                {
                    conn.Release();
                    conn.Dispose();
                }
                if (pool != null)
                {
                    pool.Close();
                }
            }

            DispatchService.GuiDispatch(delegate() {
                buttonTest.Sensitive = true;
                if (success)
                {
                    labelTest.Text = AddinCatalog.GetString("Test Succeeded.");
                }
                else
                {
                    labelTest.Text = AddinCatalog.GetString("Test Failed: {0}.", error);
                }
            });
        }