コード例 #1
0
        private void InitializeThreaded(object state)
        {
            tables      = schemaProvider.GetTables();
            dataTypes   = schemaProvider.GetDataTypes();
            columns     = originalTable.Columns;
            constraints = originalTable.Constraints;
            triggers    = originalTable.Triggers;
            //TODO: indices
            indexes = new IndexSchemaCollection();

            System.Text.StringBuilder builder = new System.Text.StringBuilder();
            builder.Append("Loading editor for TABLE ");
            builder.Append(originalTable.Name);
            builder.AppendLine();
            builder.Append("    columns = ");
            builder.Append(columns.Count);
            builder.AppendLine();
            builder.Append("constraints = ");
            builder.Append(constraints.Count);
            builder.AppendLine();

            try {
                foreach (ColumnSchema col in columns)
                {
                    int dummy = col.Constraints.Count;                     //get column constraints
                    builder.Append("CONSTRAINTS ");
                    builder.Append(col.Name);
                    builder.Append(" ");
                    builder.Append(dummy);
                    builder.AppendLine();
                }
                LoggingService.LogDebug(builder.ToString());
            } catch (Exception ee) {
                LoggingService.LogDebug(builder.ToString());
                LoggingService.LogError(ee.ToString());
            }

            if (action == SchemaActions.Alter)             //make a duplicate if we are going to alter the table
            {
                this.table = originalTable.Clone() as TableSchema;
            }

            DispatchService.GuiDispatch(delegate() {
                InitializeGui();
            });
        }
コード例 #2
0
        protected void OnCreateTable()
        {
            BaseNode            node           = CurrentNode.DataItem as BaseNode;
            IDbFactory          fac            = node.ConnectionContext.DbFactory;
            IEditSchemaProvider schemaProvider = (IEditSchemaProvider)node.ConnectionContext.SchemaProvider;

            // Need to detect if it is a previous (saved) table with the same name.
            string name    = AddinCatalog.GetString("NewTable");
            int    lastIdx = 0;
            TableSchemaCollection tables = schemaProvider.GetTables();

            for (int t = tables.Count - 1; t > -1; t--)
            {
                if (tables[t].Name.ToLower() == name.ToLower())
                {
                    name = string.Concat(name, "1");
                    break;
                }
                else if (tables[t].Name.StartsWith(name, StringComparison.OrdinalIgnoreCase))
                {
                    string idx = tables[t].Name.Substring(name.Length);
                    int    newIdx;
                    if (int.TryParse(idx, out newIdx))
                    {
                        lastIdx = newIdx;
                        break;
                    }
                }
            }
            if (lastIdx != 0)
            {
                name = String.Concat(name, lastIdx + 1);
            }

            TableSchema table = schemaProvider.CreateTableSchema(name);

            if (fac.GuiProvider.ShowTableEditorDialog(schemaProvider, table, true))
            {
                ThreadPool.QueueUserWorkItem(new WaitCallback(OnCreateTableThreaded), new object[] { schemaProvider, table, node } as object);
            }
        }