KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > ddl > schemamanipulation > droprolestatement


1 package com.daffodilwoods.daffodildb.server.sql99.ddl.schemamanipulation;
2
3 import java.util.*;
4
5 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*;
6 import com.daffodilwoods.daffodildb.server.serversystem.*;
7 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*;
8 import com.daffodilwoods.daffodildb.server.sql99.ddl.schemadefinition.*;
9 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*;
10 import com.daffodilwoods.daffodildb.server.sql99.token.*;
11 import com.daffodilwoods.daffodildb.utils.*;
12 import com.daffodilwoods.daffodildb.utils.parser.*;
13 import com.daffodilwoods.database.resource.*;
14
15 public class droprolestatement implements SQLschemamanipulationstatement {
16    public rolename _rolename0;
17    public SNONRESERVEDWORD136444255 _SNONRESERVEDWORD1364442551;
18    public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439222;
19    ArrayList revokeSt = new ArrayList();
20    ArrayList roleDesc = new ArrayList();
21
22    public Object JavaDoc run(Object JavaDoc object) throws DException {
23       _ServerSession currentSession = (_ServerSession) object;
24       RoleDescriptor roleDes = new RoleDescriptor();
25       RoleAuthorizationDescriptor roleAuthDes = new RoleAuthorizationDescriptor();
26       setRoleName(currentSession, roleDes);
27       setRoleAthorization(currentSession, roleDes.role_name, roleAuthDes);
28       checkIsActiveRole(currentSession, roleDes.role_name);
29       validatePrivileges(currentSession, roleAuthDes.grantee);
30       getAllDependentRolesForDrop(currentSession, roleDes.role_name, revokeSt, roleDesc);
31       dropAllDependentRoles(currentSession);
32       revokeRolePrivileges(currentSession, roleAuthDes);
33       roleDes.delete(currentSession);
34       return null;
35    }
36
37    private void setRoleName(_ServerSession currentSession, RoleDescriptor roleDes) throws DException {
38       String JavaDoc roleName = (String JavaDoc) _rolename0.run(null);
39       roleDes.role_name = roleName;
40       try {
41          roleDes.load(currentSession);
42       } catch (Exception JavaDoc ex) {
43          throw new DException("DSE8092", new Object JavaDoc[] {roleDes.role_name});
44       }
45    }
46
47    private void setRoleAthorization(_ServerSession currentSession, String JavaDoc roleName, RoleAuthorizationDescriptor roleAuthDes) throws DException {
48       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
49       query.append("select * from ").append(SystemTables.role_authorization_TableName)
50           .append(" where role_name = ? and grantor = ? and is_grantable = 'yes' ");
51       _SelectQueryIterator iterator = SqlSchemaConstants.getIterator(currentSession, query.toString(), new Object JavaDoc[] {roleName, SystemTables.SYSTEM});
52       if (iterator.first());
53       roleAuthDes.loadDataFromRecord(iterator);
54    }
55
56    private void validatePrivileges(_ServerSession currentSession, String JavaDoc authIdentifier) throws DException {
57       String JavaDoc currentUser = currentSession.getCurrentUser();
58       String JavaDoc currentRole = currentSession.getCurrentRole();
59       if (currentRole != null) {
60          if (!(currentSession.isEnabledAuthorizationIdentifier(authIdentifier, false))) {
61             throw new DException("DSE8143", new Object JavaDoc[] {currentRole});
62          }
63       } else {
64          if (! (currentUser.equalsIgnoreCase(ServerSystem.browserUser))) {
65             if (!(currentSession.isEnabledAuthorizationIdentifier(authIdentifier, false))) {
66                throw new DException("DSE8143", new Object JavaDoc[] {currentUser});
67             }
68          }
69       }
70    }
71
72    private void checkIsActiveRole(_ServerSession currentSession, String JavaDoc roleName) throws DException {
73       if (currentSession.isActiveAuthorization(roleName)) {
74          throw new DException("DSE8098", new Object JavaDoc[] {roleName});
75       }
76    }
77
78    private void revokeRolePrivileges(_ServerSession currentSession,
79                                      RoleAuthorizationDescriptor roleAuthDes) throws
80        DException {
81       StringBuffer JavaDoc revokeQuery = new StringBuffer JavaDoc();
82       revokeQuery.append("revoke ").append(QuotedUtility.getUserIdentifier(roleAuthDes.role_name))
83           .append(" from ").append(QuotedUtility.getUserIdentifier(roleAuthDes.grantee))
84           .append(" CASCADE");
85       revokerolestatement _revokeRoleSt = (revokerolestatement) Parser.parseQuery(
86           revokeQuery.toString());
87       _revokeRoleSt.run(currentSession.getSystemServerSession());
88    }
89
90    public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
91       return this;
92    }
93
94    public String JavaDoc toString() {
95       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
96       sb.append(" ");
97       sb.append(_SRESERVEDWORD12065439222);
98       sb.append(" ");
99       sb.append(_SNONRESERVEDWORD1364442551);
100       sb.append(" ");
101       sb.append(_rolename0);
102       return sb.toString();
103    }
104
105    /**
106     * Write new method getAllDependentRolesForDrop for role optimization by harvinder. */

107    private void getAllDependentRolesDescriporsForDrop(_ServerSession serverSession, String JavaDoc grantee, ArrayList revokeSt, ArrayList roleDesc) throws DException {
108       StringBuffer JavaDoc queryForUserRoles = new StringBuffer JavaDoc();
109       queryForUserRoles.append(" select * from ")
110           .append(SystemTables.role_authorization_TableName).append(" where grantee = ? and grantor = ?");
111       _SelectQueryIterator rolesIterator = SqlSchemaConstants.getIterator(
112           serverSession, queryForUserRoles.toString(), new Object JavaDoc[] {grantee, SystemTables.SYSTEM});
113          if (rolesIterator.first()) {
114          do {
115             Object JavaDoc[] values = (Object JavaDoc[]) rolesIterator.getObject();
116             StringBuffer JavaDoc revokeQuery = new StringBuffer JavaDoc();
117             revokeQuery.append("revoke ").append(QuotedUtility.getUserIdentifier(values[0].toString()))
118                 .append(" from ").append(QuotedUtility.getUserIdentifier(grantee))
119                 .append(" CASCADE");
120             revokerolestatement _revokeRoleSt = (revokerolestatement) Parser.parseQuery(revokeQuery.toString());
121             revokeSt.add(_revokeRoleSt);
122
123             RoleDescriptor roleDes = new RoleDescriptor();
124             roleDes.role_name = (String JavaDoc) values[0];
125             roleDes.load(serverSession);
126             roleDesc.add(roleDes);
127             getAllDependentRolesDescriporsForDrop(serverSession, roleDes.role_name, revokeSt, roleDesc);
128          } while (rolesIterator.next());
129       }
130    }
131
132    private void getAllDependentRolesForDrop(_ServerSession serverSession, String JavaDoc grantee, ArrayList revokeSt, ArrayList roleDesc) throws DException {
133       revokeRoleAuthDescriptor(serverSession, grantee);
134       getAllDependentRolesDescriporsForDrop(serverSession, grantee, revokeSt, roleDesc);
135    }
136
137    private void revokeRoleAuthDescriptor(_ServerSession serverSession, String JavaDoc grantee) throws DException {
138       StringBuffer JavaDoc queryForRolesAuthDes = new StringBuffer JavaDoc();
139       queryForRolesAuthDes.append(" select * from ")
140           .append(SystemTables.role_authorization_TableName).append(" where grantee = ? ");
141       _SelectQueryIterator rolesAuthIterator = SqlSchemaConstants.getIterator(
142           serverSession, queryForRolesAuthDes.toString(), new Object JavaDoc[] {grantee});
143       if (rolesAuthIterator.first()) {
144          do {
145             Object JavaDoc[] values = (Object JavaDoc[]) rolesAuthIterator.getObject();
146             String JavaDoc grantor=(String JavaDoc) values[2];
147             if(!grantor.equalsIgnoreCase(SystemTables.SYSTEM)){
148                RoleAuthorizationDescriptor roleAuthDes = new RoleAuthorizationDescriptor();
149                roleAuthDes.role_name = (String JavaDoc) values[0];
150                roleAuthDes.grantee = (String JavaDoc) values[1];
151                roleAuthDes.grantor = grantor;
152                roleAuthDes.is_grantable = (String JavaDoc) values[3];
153                roleAuthDes.load(serverSession);
154                roleAuthDes.delete(serverSession);
155             }
156          } while (rolesAuthIterator.next());
157       }
158    }
159
160    /**
161     * Write new method dropAllDependentRoles for role optimization by harvinder. */

162    private void dropAllDependentRoles(_ServerSession currentSession) throws DException {
163       for (int i = 0; i < revokeSt.size(); i++) {
164          revokerolestatement _revokeRoleSt = (revokerolestatement) revokeSt.get(i);
165          _revokeRoleSt.run(currentSession.getSystemServerSession());
166       }
167       for (int j = 0; j < roleDesc.size(); j++) {
168          RoleDescriptor roleDes1 = (RoleDescriptor) roleDesc.get(j);
169          roleDes1.delete(currentSession);
170       }
171    }
172 }
173
Popular Tags