Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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());
                    }
                }
            }
        }