public List <string> GetRightsSQL() { List <string> list = new List <string>(); string directRolesAsString = this.GetDirectRolesAsString(); if (directRolesAsString.Length != 0) { StringBuilder builder = new StringBuilder(0x80); builder.Append("GRANT").Append(' ').Append(directRolesAsString); builder.Append(' ').Append("TO").Append(' '); builder.Append(this.GetStatementName()); list.Add(builder.ToString()); } MultiValueHashMap <QNameManager.QName, Right> rights = this.GetRights(); Iterator <QNameManager.QName> iterator = rights.GetKeySet().GetIterator(); while (iterator.HasNext()) { QNameManager.QName key = iterator.Next(); Iterator <Right> iterator2 = rights.Get(key); while (iterator2.HasNext()) { Right right = iterator2.Next(); StringBuilder builder2 = new StringBuilder(0x80); QNameManager.QName name2 = key; switch (name2.type) { case 3: case 4: { Table table = this.granteeManager.database.schemaManager.FindUserTable(null, name2.Name, name2.schema.Name); if (table != null) { builder2.Append("GRANT").Append(' '); builder2.Append(right.GetTableRightsSQL(table)); builder2.Append(' ').Append("ON").Append(' '); builder2.Append("TABLE").Append(' '); builder2.Append(name2.GetSchemaQualifiedStatementName()); } break; } case 7: if (((NumberSequence)this.granteeManager.database.schemaManager.FindSchemaObject(name2.Name, name2.schema.Name, 7)) != null) { builder2.Append("GRANT").Append(' '); builder2.Append("USAGE"); builder2.Append(' ').Append("ON").Append(' '); builder2.Append("SEQUENCE").Append(' '); builder2.Append(name2.GetSchemaQualifiedStatementName()); } break; case 12: if (((SqlType)this.granteeManager.database.schemaManager.FindSchemaObject(name2.Name, name2.schema.Name, 13)) != null) { builder2.Append("GRANT").Append(' '); builder2.Append("USAGE"); builder2.Append(' ').Append("ON").Append(' '); builder2.Append("TYPE").Append(' '); builder2.Append(name2.GetSchemaQualifiedStatementName()); } break; case 13: if (((SqlType)this.granteeManager.database.schemaManager.FindSchemaObject(name2.Name, name2.schema.Name, 13)) != null) { builder2.Append("GRANT").Append(' '); builder2.Append("USAGE"); builder2.Append(' ').Append("ON").Append(' '); builder2.Append("DOMAIN").Append(' '); builder2.Append(name2.GetSchemaQualifiedStatementName()); } break; case 0x10: case 0x11: case 0x18: case 0x1b: { ISchemaObject obj2 = this.granteeManager.database.schemaManager.FindSchemaObject(name2.Name, name2.schema.Name, name2.type); if (obj2 != null) { builder2.Append("GRANT").Append(' '); builder2.Append("EXECUTE").Append(' '); builder2.Append("ON").Append(' '); builder2.Append("SPECIFIC").Append(' '); if (obj2.GetSchemaObjectType() == 0x11) { builder2.Append("PROCEDURE"); } else if (obj2.GetSchemaObjectType() == 0x1b) { builder2.Append("AGGREGATE"); } else { builder2.Append("FUNCTION"); } builder2.Append(' '); builder2.Append(name2.GetSchemaQualifiedStatementName()); } break; } } if (builder2.Length != 0) { builder2.Append(' ').Append("TO").Append(' '); builder2.Append(this.GetStatementName()); list.Add(builder2.ToString()); } } } return(list); }
public static void AddAllSql(OrderedHashSet <object> resolved, OrderedHashSet <object> unresolved, List <string> list, Iterator <object> it, OrderedHashSet <object> newResolved) { while (it.HasNext()) { ISchemaObject key = (ISchemaObject)it.Next(); OrderedHashSet <QNameManager.QName> references = key.GetReferences(); bool flag = true; for (int i = 0; i < references.Size(); i++) { QNameManager.QName name = references.Get(i); if (SqlInvariants.IsSystemSchemaName(name) || (name.schema == SqlInvariants.ModuleQname)) { continue; } int type = name.type; switch (type) { case 3: { if (!resolved.Contains(name)) { flag = false; } continue; } case 4: case 6: case 7: case 8: case 10: case 11: case 15: { continue; } case 5: { if (name.Parent == key.GetName()) { Constraint constraint = ((Table)key).GetConstraint(name.Name); if ((constraint.GetConstraintType() == 3) && !IsChildObjectResolved(constraint, resolved)) { flag = false; } } continue; } case 9: { if (key.GetSchemaObjectType() != 3) { break; } Table table1 = (Table)key; if (!IsChildObjectResolved(table1.GetColumn(table1.FindColumn(name.Name)), resolved)) { flag = false; } continue; } case 12: case 13: case 0x10: case 0x11: goto Label_0147; case 14: { if (name.schema != null) { goto Label_0147; } continue; } default: goto Label_013B; } if (!resolved.Contains(name.Parent)) { flag = false; } continue; Label_013B: if ((type != 0x18) && (type != 0x1b)) { continue; } Label_0147: if (!resolved.Contains(name)) { flag = false; } } if (!flag) { unresolved.Add(key); } else { QNameManager.QName specificName; if (((key.GetSchemaObjectType() == 0x10) || (key.GetSchemaObjectType() == 0x1b)) || (key.GetSchemaObjectType() == 0x11)) { specificName = ((Routine)key).GetSpecificName(); } else { specificName = key.GetName(); } resolved.Add(specificName); if (newResolved != null) { newResolved.Add(key); } if (key.GetSchemaObjectType() == 3) { list.AddRange(((Table)key).GetSql(resolved, unresolved)); } else { if (((key.GetSchemaObjectType() - 0x10) <= 1) && ((Routine)key).IsRecursive) { list.Add(((Routine)key).GetSqlDeclaration()); list.Add(((Routine)key).GetSqlAlter()); continue; } list.Add(key.GetSql()); } } } }