KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > ddl > revoke > AbandonedObjectHandler


1 package com.daffodilwoods.daffodildb.server.sql99.ddl.revoke;
2
3 /**
4  * @author pardeep
5  */

6 import java.util.*;
7 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*;
8 import com.daffodilwoods.daffodildb.server.serversystem.*;
9 import com.daffodilwoods.daffodildb.server.sql99.common.*;
10 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*;
11 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*;
12 import com.daffodilwoods.daffodildb.utils.parser.*;
13 import com.daffodilwoods.database.resource.*;
14 import com.daffodilwoods.database.general.SystemFields;
15
16 public class AbandonedObjectHandler {
17    String JavaDoc userSchemas = "select schema_owner, schema_name, catalog_name from " + SystemTables.schema_TableName
18        + " where schema_owner in ( ? )";
19
20    AbandonedTriggers abandonedTrigger;
21    AbandonedTableConstraints abandonedTableConstraints;
22    AbandonedViews abandonedView;
23    _ServerSession serverSession;
24    Object JavaDoc parsedUserSchemas;
25    ArrayList userNSchema;
26    ArrayList alreadyAbandenedObjects;
27
28    public AbandonedObjectHandler(_ServerSession tempServerSession) throws DException {
29       abandonedTableConstraints = new AbandonedTableConstraints(this, tempServerSession);
30       abandonedTrigger = new AbandonedTriggers(this, tempServerSession);
31       abandonedView = new AbandonedViews(this, tempServerSession);
32       serverSession = tempServerSession;
33       if (parsedUserSchemas == null) {
34          parsedUserSchemas = Parser.parseQuery(userSchemas);
35       }
36       userNSchema = new ArrayList();
37    }
38
39    public ArrayList getAreadyAbandenedObjects() {
40       return alreadyAbandenedObjects;
41    }
42
43    public void addToAlreadyAbondenedObjets(Object JavaDoc abondenedObject) {
44       if (alreadyAbandenedObjects == null) {
45          alreadyAbandenedObjects = new ArrayList();
46       }
47       alreadyAbandenedObjects.add(abondenedObject);
48    }
49
50    public void addToAlreadyAbondenedObjets(ArrayList abondenedObjectList) {
51       if (abondenedObjectList == null) {
52          return;
53       }
54       if (alreadyAbandenedObjects == null) {
55          alreadyAbandenedObjects = new ArrayList();
56       }
57       alreadyAbandenedObjects.addAll(abondenedObjectList);
58    }
59
60    public void calculate(ArrayList identified, ArrayList modified, ArrayList abandoned, _ServerSession currentSession) throws DException {
61       ArrayList both = identified;
62       if (abandoned != null) {
63          both.addAll(abandoned);
64
65       }
66       HashMap users = new HashMap();
67       int noOfUsers = 0;
68       for (int i = 0, size = both.size(); i < size; i++) {
69          PrivilegeDescriptor pd = (PrivilegeDescriptor) both.get(i);
70          String JavaDoc user = pd.getGrantee();
71          if (!users.containsKey(user)) {
72             users.put(user, null);
73             noOfUsers++;
74          }
75       }
76       userNSchema = getUserSchema(users);
77
78       for (int i = 0, size = both.size(); i < size; i++) {
79          PrivilegeDescriptor pd = (PrivilegeDescriptor) both.get(i);
80          if (pd instanceof TablePrivilegesDescriptor) {
81             tablePrivilegeHandler( (TablePrivilegesDescriptor) pd, currentSession);
82          } else if (pd instanceof ColumnPrivilegeDescriptor) {
83             columnPrivilegeHandler( (ColumnPrivilegeDescriptor) pd, currentSession);
84          } else if (pd instanceof RoutinePrivilegeDescriptor) {
85             routinePrivilegeHandler( (RoutinePrivilegeDescriptor) pd);
86          } else if (pd instanceof UsagePrivilegesDescriptor) {
87             usagePrivilegeHandler( (UsagePrivilegesDescriptor) pd);
88          }
89       }
90    }
91
92    public void process() throws DException {
93       abandonedTrigger.process();
94       abandonedTableConstraints.process();
95       abandonedView.process();
96    }
97
98    private void tablePrivilegeHandler(TablePrivilegesDescriptor tpd, _ServerSession currentSession) throws DException {
99       if (tpd.privilege_type.equalsIgnoreCase(SqlKeywords.TRIGGER)) {
100          triggerTablePrivilegeHandler(tpd, currentSession);
101       } else if (tpd.privilege_type.equalsIgnoreCase(SqlKeywords.SELECT)) {
102          viewTablePrivilegeHandler(tpd, currentSession);
103       }
104    }
105
106    private void columnPrivilegeHandler(ColumnPrivilegeDescriptor cpd, _ServerSession currentSession) throws DException {
107       if (!cpd.column_name.equalsIgnoreCase(SystemFields.systemFields[SystemFields.rowId])) {
108          if (cpd.privilege_type.equalsIgnoreCase(SqlKeywords.REFERENCES)) {
109             referenceColumnPrivilegeHandler(cpd, currentSession);
110          } else if (cpd.privilege_type.equalsIgnoreCase(SqlKeywords.SELECT)) {
111             viewColumnPrivilegeHandler(cpd, currentSession);
112          }
113       }
114    }
115
116    private void routinePrivilegeHandler(RoutinePrivilegeDescriptor rpd) throws DException {
117    }
118
119    private void usagePrivilegeHandler(UsagePrivilegesDescriptor upd) throws DException {
120       if (upd.object_type.equalsIgnoreCase(SqlKeywords.DOMAIN)) {
121          domainUsagePrivilegeHandler(upd);
122       }
123    }
124
125    private void referenceColumnPrivilegeHandler(ColumnPrivilegeDescriptor cpd, _ServerSession currentSession) throws DException {
126       abandonedTableConstraints.calculate(cpd, currentSession);
127    }
128
129    private void triggerTablePrivilegeHandler(TablePrivilegesDescriptor tpd, _ServerSession currentSession) throws DException {
130       abandonedTrigger.calculate(tpd, currentSession);
131    }
132
133    private void domainUsagePrivilegeHandler(UsagePrivilegesDescriptor upd) throws DException {
134    }
135
136    private void viewColumnPrivilegeHandler(ColumnPrivilegeDescriptor cpd, _ServerSession currentSession) throws DException {
137       abandonedView.calculate(cpd, currentSession);
138    }
139
140    private void viewTablePrivilegeHandler(TablePrivilegesDescriptor tpd, _ServerSession currentSession) throws DException {
141       abandonedView.calculate(tpd, currentSession);
142    }
143
144    public ArrayList getUserSchema(HashMap users) throws DException {
145       Object JavaDoc[] allUsers = users.keySet().toArray();
146
147       _SelectQueryIterator iter = SqlSchemaConstants.getIterator(serverSession, parsedUserSchemas.toString(), new Object JavaDoc[] {allUsers});
148       if (iter.first()) {
149          ArrayList userschema = new ArrayList();
150          do {
151             Object JavaDoc[] values = (Object JavaDoc[]) iter.getObject();
152             Object JavaDoc[] obj = new Object JavaDoc[3];
153             obj[0] = values[0];
154             obj[1] = values[1];
155             obj[2] = values[2];
156             userschema.add(obj);
157          } while (iter.next());
158          return userschema.size() == 0 ? null : userschema;
159       }
160       return null;
161    }
162
163    public ArrayList getUserNSchema() {
164       return userNSchema;
165    }
166 }
167
Popular Tags