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(); }); }
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); } }