private void Filter(ref DataBaseMetaData metaData, TagInfo tags, string filterExpression) { var tableList = new List <TableMetaData>(); for (var i = 0; i < metaData.Tables.Length; i++) { var table = metaData.Tables[i]; if (StringUtility.GlobMany(table.TableInfo.Name, filterExpression) == false) { continue; } if ((table.TableInfo.DerivedTags & tags) != tags) { continue; } var tableInfo = table.TableInfo; tableInfo.Columns = tableInfo.Columns.Where(item => (item.DerivedTags & tags) == tags).ToArray(); table.TableInfo = tableInfo; tableList.Add(table); } metaData.Tables = tableList.ToArray(); }
private void Initialize(DataBaseMetaData metaData) { foreach (var item in metaData.TypeCategories) { if (item.Path == this.Root.Path) { continue; } this.Categories.Prepare(item.Path); } foreach (var item in metaData.Types) { var typeInfo = item.TypeInfo; var typeState = item.TypeState; var type = this.Types.AddNew(Authentication.System, typeInfo.Name, typeInfo.CategoryPath); type.Initialize(typeInfo); type.SetTypeState(typeState); } foreach (var item in metaData.TypeCategories) { var category = this.Categories[item.Path]; if (item.AccessInfo.IsPrivate == true && item.AccessInfo.IsInherited == false) { category.SetAccessInfo(item.AccessInfo); } if (item.LockInfo.IsLocked == true && item.LockInfo.IsInherited == false) { category.SetLockInfo(item.LockInfo); } } foreach (var item in metaData.Types) { var itemName = new ItemName(item.Path); var type = this.Types[itemName.Name]; if (item.AccessInfo.IsPrivate == true && item.AccessInfo.IsInherited == false) { type.SetAccessInfo(item.AccessInfo); } if (item.LockInfo.IsLocked == true && item.LockInfo.IsInherited == false) { type.SetLockInfo(item.LockInfo); } } }
public TypeContext(DataBase dataBase, DataBaseMetaData metaData) { this.dataBase = dataBase; this.Initialize(metaData); }
private void Initialize(DataBaseMetaData metaData) { foreach (var item in metaData.TableCategories) { if (item.Path == this.Root.Path) { continue; } this.Categories.Prepare(item.Path); } foreach (var item in metaData.Tables) { var tableInfo = item.TableInfo; var tableState = item.TableState; var table = this.Tables.AddNew(Authentication.System, tableInfo.Name, tableInfo.CategoryPath); table.Initialize(tableInfo); table.SetTableState(tableState); } foreach (var item in metaData.Tables) { var tableInfo = item.TableInfo; if (tableInfo.TemplatedParent == string.Empty) { continue; } var table = this.Tables[tableInfo.Name]; table.TemplatedParent = this.Tables[tableInfo.TemplatedParent]; if (table.TemplatedParent == null) { throw new Exception(); } } foreach (var item in metaData.TableCategories) { var category = this.Categories[item.Path]; if (item.AccessInfo.IsPrivate == true && item.AccessInfo.IsInherited == false) { category.SetAccessInfo(item.AccessInfo); } if (item.LockInfo.IsLocked == true && item.LockInfo.IsInherited == false) { category.SetLockInfo(item.LockInfo); } } foreach (var item in metaData.Tables) { var itemName = new ItemName(item.Path); var table = this.Tables[itemName.Name]; if (item.AccessInfo.IsPrivate == true && item.AccessInfo.IsInherited == false) { table.SetAccessInfo(item.AccessInfo); } if (item.LockInfo.IsLocked == true && item.LockInfo.IsInherited == false) { table.SetLockInfo(item.LockInfo); } } }