コード例 #1
0
ファイル: DbTable.cs プロジェクト: janproch/datadmin
 public void LoadFrom(ITableStructure table)
 {
     _Columns.Clear();
     _Constraints.Clear();
     //_ReferencedFrom.Clear();
     FullName = table.FullName;
     Comment  = table.Comment;
     //Name = table.FullName.Name;
     //SchemaName = table.FullName.Schema;
     foreach (IColumnStructure col in table.Columns)
     {
         _Columns.Add(new ColumnStructure(col));
     }
     foreach (IConstraint cnt in table.Constraints)
     {
         _Constraints.Add(Constraint.CreateCopy(cnt));
     }
     //foreach (IForeignKey fk in table.ReferencedFrom)
     //{
     //    _ReferencedFrom.Add(new ForeignKey(fk));
     //}
     SpecificData.AddAll(table.SpecificData);
     FixedData = table.FixedData;
     //FilledMembers = table.FilledMembers;
 }
コード例 #2
0
        public void CreateConstraint(ITableStructure table, IConstraint newcnt, PlanPosition pos)
        {
            TableStructure tbl = Structure.FindOrCreateTable(table.FullName);

            AddOperation(new AlterOperation_CreateConstraint {
                ParentTable = tbl, NewObject = Constraint.CreateCopy(newcnt)
            }, pos);
        }
コード例 #3
0
ファイル: DbTable.cs プロジェクト: janproch/datadmin
 protected void CopyFromTable(ITableStructure src, bool hardAssign)
 {
     if (hardAssign || ShouldCopy(src, TableStructureMembers.SpecificDetails))
     {
         base.AssignFrom(src);
     }
     if (hardAssign || ShouldCopy(src, TableStructureMembers.ColumnNames))
     {
         var oldcols = new List <ColumnStructure>();
         foreach (ColumnStructure c in _Columns)
         {
             oldcols.Add(c);
         }
         _Columns.Clear();
         foreach (var col in src.Columns)
         {
             ColumnStructure scol = (from c in oldcols where c.ColumnName == col.ColumnName select c).FirstOrDefault();
             if (scol != null)
             {
                 scol.AssignFrom(col);
             }
             else
             {
                 scol = new ColumnStructure(col);
             }
             _Columns.Add(scol);
         }
     }
     if (hardAssign || ShouldCopy(src, TableStructureMembers.ColumnTypes))
     {
         foreach (var col in src.Columns)
         {
             ColumnStructure scol = this.FindColumn(col.ColumnName) as ColumnStructure;
             if (scol != null)
             {
                 scol.AssignFrom(col);
             }
         }
     }
     if (hardAssign || ShouldCopy(src, TableStructureMembers.Constraints))
     {
         foreach (var cnt in src.Constraints)
         {
             Constraint scnt = this.FindConstraint(cnt) as Constraint;
             if (scnt != null)
             {
                 scnt.AssignFrom(scnt);
             }
             else
             {
                 _Constraints.Add(Constraint.CreateCopy(cnt));
             }
         }
     }
 }
コード例 #4
0
ファイル: DbDatabase.cs プロジェクト: janproch/datadmin
        public void CreateConstraint(IConstraint constraint)
        {
            var newcnt = Constraint.CreateCopy(constraint);

            newcnt.GroupId = Guid.NewGuid().ToString();
            var t = FindTable(constraint.Table.FullName);

            if (t != null)
            {
                t._Constraints.Add(newcnt);
            }
        }
コード例 #5
0
        public Constraint_TreeNode(ITableSource conn, ITableStructure table, IConstraint constraint, ITreeNode parent)
            : base(conn, parent, constraint.Name ?? "noname")
        {
            m_constraint = constraint;
            m_table      = table;
            m_conn       = conn;

            var appobj = new ConstraintAppObject();

            appobj.FillFromTable(m_conn);
            appobj.Constraint = Constraint.CreateCopy(m_constraint);
            SetAppObject(appobj);
        }
コード例 #6
0
ファイル: TableAppObject.cs プロジェクト: janproch/datadmin
 public void FillRelatedConstraints(IConstraintCollection constraints)
 {
     foreach (var cnt in constraints)
     {
         var ccnt = cnt as IColumnsConstraint;
         if (ccnt == null)
         {
             continue;
         }
         if (Array.IndexOf(ccnt.Columns.GetNames(), Column.ColumnName) >= 0)
         {
             RelatedConstraints.Add(Constraint.CreateCopy(ccnt));
         }
     }
 }
コード例 #7
0
        public static AbstractObjectStructure CloneObject(this IAbstractObjectStructure obj)
        {
            var tbl = obj as ITableStructure;

            if (tbl != null)
            {
                return(new TableStructure(tbl));
            }
            var col = obj as IColumnStructure;

            if (col != null)
            {
                return(new ColumnStructure(col));
            }
            var cnt = obj as IConstraint;

            if (cnt != null)
            {
                return(Constraint.CreateCopy(cnt));
            }
            var spe = obj as ISpecificObjectStructure;

            if (spe != null)
            {
                return(new SpecificObjectStructure(spe));
            }
            var sch = obj as ISchemaStructure;

            if (sch != null)
            {
                return(new SchemaStructure(sch));
            }
            var dom = obj as IDomainStructure;

            if (dom != null)
            {
                return(new DomainStructure(dom));
            }
            var dbs = obj as IDatabaseStructure;

            if (dbs != null)
            {
                return(new DatabaseStructure(dbs));
            }
            return(null);
        }
コード例 #8
0
        public override void GetObjectList(List <AppObject> objs, AppObject appobj, ConnectionPack connpack)
        {
            ObjectPath      objpath = appobj.GetObjectPath();
            IDatabaseSource conn    = appobj.FindDatabaseConnection(connpack);

            if (conn != null && conn.Connection.IsOpened)
            {
                var ts = conn.InvokeLoadTableStructure(objpath.ObjectName, TableStructureMembers.ConstraintsNoRefs);
                foreach (var cnt in ts.Constraints)
                {
                    var cobj = new ConstraintAppObject();
                    cobj.Constraint = Constraint.CreateCopy(cnt);
                    cobj.FillFromTable(conn.GetTable(objpath.ObjectName));
                    objs.Add(cobj);
                }
            }
            objs.SortByKey(o => o.ToString());
        }
コード例 #9
0
ファイル: DbDatabase.cs プロジェクト: janproch/datadmin
        public Constraint FindOrCreateConstraint(IConstraint cnt)
        {
            var t = FindTable(cnt.Table.FullName);

            if (t == null)
            {
                t = AddTable(new TableStructure {
                    FullName = cnt.Table.FullName
                }, true);
            }
            Constraint res = t.FindConstraint(cnt) as Constraint;

            if (res == null)
            {
                res = Constraint.CreateCopy(cnt);
                t._Constraints.Add(res);
            }
            return(res);
        }
コード例 #10
0
ファイル: DbDatabase.cs プロジェクト: janproch/datadmin
        public void AddObject(IAbstractObjectStructure obj, bool reuseGrouId)
        {
            var col = obj as IColumnStructure;

            if (col != null)
            {
                var t = FindTable(col.Table.FullName);
                if (t == null)
                {
                    t = AddTable(new TableStructure {
                        FullName = col.Table.FullName
                    }, true);
                }
                t.AddColumn(col, reuseGrouId);
                return;
            }
            var cnt = obj as IConstraint;

            if (cnt != null)
            {
                var t = FindTable(cnt.Table.FullName);
                if (t == null)
                {
                    t = AddTable(new TableStructure {
                        FullName = cnt.Table.FullName
                    }, true);
                }
                var newcnt = Constraint.CreateCopy(cnt);
                if (!reuseGrouId)
                {
                    newcnt.GroupId = Guid.NewGuid().ToString();
                }
                t._Constraints.Add(newcnt);
                return;
            }
            var tbl = obj as ITableStructure;

            if (tbl != null)
            {
                AddTable(tbl, reuseGrouId);
                return;
            }
            var spe = obj as ISpecificObjectStructure;

            if (spe != null)
            {
                AddSpecificObject(spe, reuseGrouId);
                return;
            }
            var sch = obj as ISchemaStructure;

            if (sch != null)
            {
                AddSchema(sch, reuseGrouId);
                return;
            }
            var dom = obj as IDomainStructure;

            if (dom != null)
            {
                AddDomain(dom, reuseGrouId);
                return;
            }
        }
コード例 #11
0
        public void ChangeConstraint(IConstraint constraint, IConstraint newconstraint)
        {
            Constraint cnt = Structure.FindOrCreateConstraint(constraint);

            AddOperation(new AlterOperation_ChangeConstraint {
                OldObject = cnt, ParentTable = (TableStructure)cnt.Table, NewObject = Constraint.CreateCopy(newconstraint)
            });
        }