KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > ddl > schemadefinition > roledefinition


1 package com.daffodilwoods.daffodildb.server.sql99.ddl.schemadefinition;
2
3 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*;
4 import com.daffodilwoods.daffodildb.server.serversystem.*;
5 import com.daffodilwoods.daffodildb.server.sql99.common.*;
6 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*;
7 import com.daffodilwoods.daffodildb.server.sql99.ddl.utility.*;
8 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*;
9 import com.daffodilwoods.daffodildb.server.sql99.token.*;
10 import com.daffodilwoods.database.resource.*;
11
12 public class roledefinition implements SQLschemadefinitionstatement, schemaelement {
13    public SRESERVEDWORD1206543922SRESERVEDWORD1206543922grantor
14        _OptSRESERVEDWORD1206543922SRESERVEDWORD1206543922grantor0;
15    public rolename _rolename1;
16    public SNONRESERVEDWORD136444255 _SNONRESERVEDWORD1364442552;
17    public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439223;
18
19    /**
20     * @param object :- object castable to _ServerSession
21     * Algo
22     * setRole()
23     * - check if any any user exists with the same name,
24     * if yes throw exception
25     * - set roleName in RoleDescriptor
26     * setRoleAuthorization()
27     * - set properties for role Authorization
28     * save role descriptor
29     * save role authorization Descriptor
30     * @return null
31     * @throws DException if role definition is not sucessfully executed
32     */

33    public Object JavaDoc run(Object JavaDoc object) throws DException {
34       _ServerSession currentSession = (_ServerSession) object;
35       RoleDescriptor roleDescriptor = new RoleDescriptor();
36       setRoleName(currentSession, roleDescriptor);
37       RoleAuthorizationDescriptor roleAuthDes = new RoleAuthorizationDescriptor();
38
39       setRoleAuthorization(currentSession, roleDescriptor.role_name, roleAuthDes);
40       roleDescriptor.save(currentSession);
41       roleAuthDes.save(currentSession);
42
43       return null;
44    }
45
46    /**
47     * @param currentSession - the object passed in run method
48     * @param roleDescriptor - Role Descriptor in which role name is to be set
49     * checks if any any user exists with the same name,
50     * if yes throw exception
51     * sets roleName in RoleDescriptor
52     * @throws DException if any user present with the same name(i.e roleName).
53     */

54    private void setRoleName(_ServerSession currentSession, RoleDescriptor roleDescriptor) throws DException {
55       roleDescriptor.role_name = (String JavaDoc) _rolename1.run(null);
56       checkIfUserExistsWithSameName(currentSession, roleDescriptor.role_name);
57    }
58
59    private void checkIfUserExistsWithSameName(_ServerSession currentSession, String JavaDoc role_name) throws
60        DException {
61       _SelectQueryIterator usersIterator = SqlSchemaConstants.getIterator(currentSession, QueryMaker.getUsersQuery(), new Object JavaDoc[] {role_name});
62       if (usersIterator.first() ||
63           role_name.equalsIgnoreCase(SystemTables.SYSTEM)) {
64          throw new DException("DSE876", new Object JavaDoc[] {role_name});
65       }
66    }
67
68    /**
69     * @param currentSession - the obejct passed in run method
70     * @param roleName - the role Name to be set in Role Ath
71     * @param roleAuthDes - RoleAuthorization Desriptor in which
72     * the properties are to be set
73     * set grantee,grantor, isGrantable , role_name
74     * in RoleAuthorizationDescriptor
75     * @throws DException Incase of any internal error.
76     */

77    private void setRoleAuthorization(_ServerSession currentSession,
78                                      String JavaDoc roleName,
79                                      RoleAuthorizationDescriptor
80                                      roleAuthDes) throws
81        DException {
82       setRoleAuthorizationGrantee(currentSession, roleAuthDes);
83       roleAuthDes.grantor = SqlSchemaConstants.SYSTEM;
84       roleAuthDes.is_grantable = SqlSchemaConstants.YES;
85       roleAuthDes.role_name = roleName;
86    }
87
88    /**
89     * @param currentSession - object passed in run statement
90     * @param roleAuthDes - RoleAuthorizationDescriptor
91     * whose grantee is to be set
92     * if WITH ADMIN <grantor> is not specified
93     * if CURRENT_USER == null then CURRENT_ROLE otherwise CURRENT_USER
94     * if WITH ADMIN <grantor> is specified
95     * if grantor == CURRENT_USER then CURRENT_USER
96     * if grantor == CURRENT_ROLE then CURRENT_ROLE
97     * @throws DException in case of internal error.
98     */

99    private void setRoleAuthorizationGrantee(_ServerSession currentSession, RoleAuthorizationDescriptor roleAuthDes) throws DException {
100       if (_OptSRESERVEDWORD1206543922SRESERVEDWORD1206543922grantor0 == null) {
101          String JavaDoc current_user = currentSession.getCurrentUser();
102          roleAuthDes.grantee = currentSession.getCurrentRole() == null ? current_user
103              : currentSession.getCurrentRole();
104       } else {
105          String JavaDoc grantr = _OptSRESERVEDWORD1206543922SRESERVEDWORD1206543922grantor0._grantor0.toString();
106          roleAuthDes.grantee = grantr.equalsIgnoreCase(SqlKeywords.CURRENT_USER)
107              ? currentSession.getCurrentUser()
108              : grantr.equalsIgnoreCase(SqlKeywords.CURRENT_ROLE)
109              ? currentSession.getCurrentRole() : grantr;
110          if (roleAuthDes.grantee == null) {
111             throw new DException("DSE520", null);
112          }
113       }
114    }
115
116    public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
117       return this;
118    }
119
120    public String JavaDoc toString() {
121       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
122       sb.append(" ");
123       sb.append(_SRESERVEDWORD12065439223);
124       sb.append(" ");
125       sb.append(_SNONRESERVEDWORD1364442552);
126       sb.append(" ");
127       sb.append(_rolename1);
128       sb.append(" ");
129       if (_OptSRESERVEDWORD1206543922SRESERVEDWORD1206543922grantor0 != null) {
130          sb.append(_OptSRESERVEDWORD1206543922SRESERVEDWORD1206543922grantor0);
131       }
132       return sb.toString();
133    }
134
135    public void setSchemaDescriptor(_Descriptor schemaDescriptor) throws
136        DException {}
137 }
138
Popular Tags