01: /*
02: * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
03: * (http://h2database.com/html/license.html).
04: * Initial Developer: H2 Group
05: */
06: package org.h2.engine;
07:
08: import java.sql.SQLException;
09:
10: import org.h2.message.Message;
11: import org.h2.message.Trace;
12: import org.h2.table.Table;
13: import org.h2.util.ObjectArray;
14:
15: /**
16: * Represents a role. Roles can be granted to users, and to other roles.
17: */
18: public class Role extends RightOwner {
19:
20: private final boolean system;
21:
22: public Role(Database database, int id, String roleName,
23: boolean system) {
24: super (database, id, roleName, Trace.USER);
25: this .system = system;
26: }
27:
28: public String getCreateSQLForCopy(Table table, String quotedName) {
29: throw Message.getInternalError();
30: }
31:
32: public String getDropSQL() {
33: return null;
34: }
35:
36: public String getCreateSQL() {
37: if (system) {
38: return null;
39: }
40: return "CREATE ROLE " + getSQL();
41: }
42:
43: public int getType() {
44: return DbObject.ROLE;
45: }
46:
47: public void removeChildrenAndResources(Session session)
48: throws SQLException {
49: ObjectArray users = database.getAllUsers();
50: for (int i = 0; i < users.size(); i++) {
51: User user = (User) users.get(i);
52: Right right = user.getRightForRole(this );
53: if (right != null) {
54: database.removeDatabaseObject(session, right);
55: }
56: }
57: ObjectArray roles = database.getAllRoles();
58: for (int i = 0; i < roles.size(); i++) {
59: Role r2 = (Role) roles.get(i);
60: Right right = r2.getRightForRole(this );
61: if (right != null) {
62: database.removeDatabaseObject(session, right);
63: }
64: }
65: ObjectArray rights = database.getAllRights();
66: for (int i = 0; i < rights.size(); i++) {
67: Right right = (Right) rights.get(i);
68: if (right.getGrantee() == this ) {
69: database.removeDatabaseObject(session, right);
70: }
71: }
72: database.removeMeta(session, getId());
73: invalidate();
74: }
75:
76: public void checkRename() throws SQLException {
77: }
78:
79: }
|