public void addNewTable(string name, DatabaseConnectionContext context, ISchemaProvider schemaProvider)
 {
     //TODO: improve way of assing last parameter
     TableModel tableModel  = new TableModel (name,context,schemaProvider,true);
     TableFigure tableFigure = new TableFigure (tableModel,canvas,diagram);
     tableModel.FigureOwner = tableFigure;
     view.Drawing.Add (tableFigure);
     System.Console.WriteLine("added table");
     foreach ( IFigure fig in view.Drawing.FiguresEnumerator){
         System.Console.WriteLine("figura"+fig.ToString());
     }
     diagram.AddTable(tableFigure);
 }
 public void UpdateOptionalityFk(TableModel sourceTable, kindOptionality optionality)
 {
     Model.UpdateOptionalityFk (sourceTable, optionality);
 }
 public TableFigure(TableModel metadata, ModelerCanvas ownerCanvas, DatabaseModel databaseModel)
 {
     Model = metadata;
     canvas = ownerCanvas;
     dbModel = databaseModel;
     _width = 100;
     _height = 100;
     _showingTriggers = false;
     _showingIndexes = false;
     selectionColumnMode = false;
     populateTable ();
     syncFigureMetrics ();
     iconsWidth = IconFactory.GetIcon ("Resources.primarykey.png").Width * 2;
     //TODO: iconfactory should select largest icon and then add not just add first
     DisplayBox = new RectangleD (0.0, 0.0, _width, _height);
     OnFigureChanged (new FigureEventArgs (this, DisplayBox));
 }
 private void UpdateOptionalityFk(TableModel sourceTable, kindOptionality optionality)
 {
     if(figEnd!=null){
         figEnd.UpdateOptionalityFk(sourceTable, optionality);
     }
 }
 public void UpdateOptionalityFk(TableModel sourceTable, kindOptionality optionality)
 {
     foreach(ConstraintSchema cs in TableSchema.Constraints){
         if(cs is ForeignKeyConstraintSchema && (cs as ForeignKeyConstraintSchema).ReferenceTableName==sourceTable.Name){
             ForeignKeyConstraintSchema fkc = (cs as ForeignKeyConstraintSchema);
             foreach(ColumnSchema fkCol in fkc.Columns){
                 if(optionality==kindOptionality.optional)
                     fkCol.IsNullable=false;
                 else
                     fkCol.IsNullable=true;
             }
         }
     }
 }
 //TODO: change for IEnumerable?
 public List<ColumnFkFigure> addFkConstraint(TableModel source, kindOptionality optionality)
 {
     List<ColumnFkFigure> items = new List<ColumnFkFigure> ();
     ForeignKeyConstraintSchema fkc = new ForeignKeyConstraintSchema (source.TableSchema.SchemaProvider);
     fkc.ReferenceTableName = source.Name;
     fkc.ReferenceTable = source.TableSchema;
     fkc.Name = source.Name + "_" + TableSchema.Name + "_fk";
     foreach (ColumnFigure col in source.columns) {
         if (col.PrimaryKey) {
             ColumnSchema fkCol = new ColumnSchema (col.ColumnModel);
             //Remove column level pk if any
             ConstraintSchema tmp=null;
             foreach(ConstraintSchema cs in fkCol.Constraints)
                 if(cs is PrimaryKeyConstraintSchema)
                     tmp=cs;
             if(tmp!=null)
                 fkCol.Constraints.Remove(tmp);
             //TODO: create a function that just get three letters from table name using a standard
             fkCol.Name = fkCol.Name + "_" + (col.ColumnModel.Parent as TableSchema).Name + "_fk"; //TODO: should be checked that this name doesn't exists at table yet
             fkCol.Parent = TableSchema;
             if(optionality==kindOptionality.optional)
                 fkCol.IsNullable=false;
             else
                 fkCol.IsNullable=true;
             fkc.Columns.Add (fkCol);
             TableSchema.Columns.Add (fkCol);
             fkc.ReferenceColumns.Add (col.ColumnModel);
             Console.WriteLine("NO JODA 555 666 CREE Fk figure con:" + " Tabla: "+(col.ColumnModel.Parent as TableSchema).Name +"." +col.ColumnModel.Name);
             ColumnFkFigure fk = new ColumnFkFigure (fkCol, FigureOwner, col.ColumnModel.Name , (col.ColumnModel.Parent as TableSchema).Name);
             this.columns.Add (fk);
             items.Add (fk);
         }
     }
     if(fkc.Columns.Count > 0){
         TableSchema.Constraints.Add (fkc);
         return items;
     }else
         return null;
 }
 public void addTable(string name, DatabaseConnectionContext context, ISchemaProvider schemaProvider, bool create)
 {
     TableModel tableModel = new TableModel(name,context,schemaProvider,false);
     TableFigure tableFigure = new TableFigure (tableModel,canvas,diagram);
     tableModel.FigureOwner=tableFigure;
     view.Drawing.Add (tableFigure);
     System.Console.WriteLine("added table22222");
     foreach ( IFigure fig in view.Drawing.FiguresEnumerator){
         System.Console.WriteLine("figura"+fig.ToString());
     }
     diagram.AddTable(tableFigure);
 }