// utility function for loading details about choosed specific objects protected void LoadSpecificObjectDetail(string objtype, Action <SpecificObjectStructure> loadFunc) { List <NameWithSchema> objfilter; if (!WantSpecificObjectDetail(objtype, out objfilter)) { return; } m_db.SpecByType(objtype); if (objfilter != null) { foreach (var oname in objfilter) { SpecificObjectStructure speco = (SpecificObjectStructure)m_db.FindSpecificObject(objtype, oname); if (speco == null) { speco = m_db.AddSpecificObject(objtype, DialectName, oname); } loadFunc(speco); } } else { // load all specific objects of given type foreach (SpecificObjectStructure o in m_db.SpecificObjects[objtype]) { loadFunc(o); } } }
public void ChangeSpecificObject(ISpecificObjectStructure obj, ISpecificObjectStructure newobj) { SpecificObjectStructure o = Structure.FindOrCreateSpecificObject(obj); AddOperation(new AlterOperation_ChangeSpecificObject { OldObject = o, NewObject = new SpecificObjectStructure(newobj) }); }
public void RenameSpecificObject(ISpecificObjectStructure obj, NameWithSchema name) { SpecificObjectStructure o = Structure.FindOrCreateSpecificObject(obj); AddOperation(new AlterOperation_RenameSpecificObject { OldObject = o, NewName = name }); }
public void DropSpecificObject(ISpecificObjectStructure obj, PlanPosition pos) { SpecificObjectStructure o = Structure.FindOrCreateSpecificObject(obj); AddOperation(new AlterOperation_DropSpecificObject { OldObject = o }, pos); }
public void CreateSpecificObject(ISpecificObjectStructure obj, PlanPosition pos) { SpecificObjectStructure o = new SpecificObjectStructure(obj); AddOperation(new AlterOperation_CreateSpecificObject { NewObject = o }, pos); }
public void ChangeSpecificObjectSchema(ISpecificObjectStructure obj, string newschema) { SpecificObjectStructure spec = FindSpecificObject(obj); if (spec != null) { spec.ObjectName = new NameWithSchema(newschema, spec.ObjectName.Name); } }
public void RenameSpecificObject(ISpecificObjectStructure obj, string newname) { SpecificObjectStructure spec = FindSpecificObject(obj); if (spec != null) { spec.ObjectName = new NameWithSchema(spec.ObjectName.Schema, newname); } }
public void DropSpecificObject(ISpecificObjectStructure obj) { SpecificObjectStructure spec = FindSpecificObject(obj); if (spec != null) { ((SpecificObjectCollection)SpecificObjects[spec.ObjectType]).Remove(spec); } }
public SpecificObjectStructure AddSpecificObject(string objtype, string dialect, NameWithSchema name) { SpecificObjectStructure res = new SpecificObjectStructure(); res.ObjectName = name; res.ObjectType = objtype; res.SpecificDialect = dialect; SpecByType(res.ObjectType).Add(res); return(res); }
public SpecificObjectStructure AddSpecificObject(ISpecificObjectStructure obj, bool reuseGroupId) { SpecificObjectStructure res = new SpecificObjectStructure(obj); if (!reuseGroupId) { res.GroupId = Guid.NewGuid().ToString(); } SpecByType(res.ObjectType).Add(res); return(res); }
public void AlterSpecificObject(ISpecificObjectStructure olddef, ISpecificObjectStructure newdef) { SpecificObjectStructure old = FindSpecificObject(olddef); old.Comment = newdef.Comment; old.CreateSql = newdef.CreateSql; old.ObjectName = newdef.ObjectName; old.SpecificData.Clear(); old.SpecificData.AddAll(newdef.SpecificData); old.SpecificDialect = newdef.SpecificDialect; old.DependsOn = null; // clear dependency information }
ISpecificObjectStructure CreateStructure(NameWithSchema name) { SpecificObjectStructure res = new SpecificObjectStructure(); if (m_obj != null) { res.GroupId = m_obj.GroupId; } res.ObjectType = m_objtype; res.CreateSql = codeEditor1.Text; res.ObjectName = name; res.Comment = tbxComment.Text; res.SpecificDialect = Dialect.DialectName; return(res); }
public void Edit() { if (!EditEnabled()) { return; } var dbconn = this.FindDatabaseConnection(ConnPack); if (dbconn.DatabaseCaps.ExecuteSql) { OpenQueryParameters pars = new OpenQueryParameters(); IPhysicalConnection newconn = Connection.CreateConnection(); string dbname = DatabaseName; if (dbname != null) { newconn.AfterOpen += ConnTools.ChangeDatabaseCallback(dbname); } pars.GenerateSql = delegate(IPhysicalConnection conn) { var props = new SqlFormatProperties { OmitVersionTests = true }; var dbs = conn.PhysicalFactory.CreateDatabaseSource(conn, dbname); var so = new SpecificObjectStructure(dbs.LoadSpecificObjectDetail(DbObjectType, DbObjectName)); if (dbconn.Dialect != null) { so.CreateSql = dbconn.Dialect.ReformatSpecificObject(so.ObjectType, so.CreateSql); } string drop = newconn.Dialect.GenerateScript(dmp => { dmp.DropSpecificObject(so); }, props); string create = newconn.Dialect.GenerateScript(dmp => { dmp.CreateSpecificObject(so); }, props); return(drop + "\n\nGO\n\n" + create); }; MainWindow.Instance.OpenContent(new QueryFrame(newconn, pars)); } else { var frm = new SpecificObjectFrame(dbconn.CloneSource(), LoadStructure(), new ObjectEditorPars { }); MainWindow.Instance.OpenContent(frm); } }
protected void LoadSpecificObjectListAndDetail(string objtype, string query, Action <DataRow, SpecificObjectStructure> loadFunc) { List <NameWithSchema> objfilter; if (!WantSpecificObjectList(objtype) && !WantSpecificObjectDetail(objtype, out objfilter)) { return; } m_db.SpecByType(objtype); foreach (DataRow row in query.StartsWith("@") ? CachedSchemaRows(query.Substring(1)) : CachedQueryRows(query)) { SpecificObjectStructure so = new SpecificObjectStructure(); so.ObjectType = objtype; so.SpecificDialect = m_dialect.DialectName; loadFunc(row, so); if (m_members.IgnoreSystemObjects && m_dialect.IsSystemObject(objtype, so.ObjectName)) { continue; } m_db.AddSpecificObject(so, true); } }
protected virtual void LoadViewRow(DataRow row, SpecificObjectStructure so) { so.CreateSql = row["VIEW_DEFINITION"].SafeToString(); }