KickJava   Java API By Example, From Geeks To Geeks.

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


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

5 import java.util.*;
6 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*;
7 import com.daffodilwoods.daffodildb.server.serversystem.*;
8 import com.daffodilwoods.daffodildb.server.sql99.*;
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.database.general.*;
13 import com.daffodilwoods.database.resource.*;
14
15 public class AbandonedTriggers {
16    ArrayList abandonedList;
17    _ServerSession serverSession;
18    AbandonedObjectHandler abanObjHan;
19
20    public AbandonedTriggers(AbandonedObjectHandler temp, _ServerSession serversession) throws DException {
21       serverSession = serversession;
22       abanObjHan = temp;
23       abandonedList = new ArrayList();
24    }
25
26    public void calculate(TablePrivilegesDescriptor tpd, _ServerSession currentSession) throws DException {
27       ArrayList userNSchema = abanObjHan.getUserNSchema();
28       _Executer executerTriggerOnTableForUser = ( (DataDictionary) currentSession.getDataDictionary()).getPreparedStatementGetter().getTriggerOnTableExecuter();
29       _SelectQueryIterator iter = (_SelectQueryIterator) executerTriggerOnTableForUser.execute(new Object JavaDoc[] {tpd.object_catalog, tpd.object_schema, tpd.object_name, tpd.getGrantee()});
30       if (iter.first()) {
31          do {
32             TriggerDescriptor triggerDescriptor = new TriggerDescriptor();
33             triggerDescriptor.loadDataFromRecord(iter);
34             for (int j = 0, tempsize = userNSchema.size(); j < tempsize; j++) {
35                Object JavaDoc[] obj = (Object JavaDoc[]) userNSchema.get(j);
36                if (tpd.getGrantee().equalsIgnoreCase( (String JavaDoc) obj[0]) && (triggerDescriptor.trigger_schema.equalsIgnoreCase( (String JavaDoc) obj[1]) && triggerDescriptor.trigger_catalog.equalsIgnoreCase( (String JavaDoc) obj[2]))) {
37                   abandonedList.add(triggerDescriptor);
38                }
39             }
40          } while (iter.next());
41       }
42    }
43
44    public void process() throws DException {
45       for (int i = 0, size = abandonedList.size(); i < size; i++) {
46          TriggerDescriptor temp = (TriggerDescriptor) abandonedList.get(i);
47          temp.delete(serverSession);
48          /**
49           * Make a new method refreshDataDictionary related to bugs 11656. */

50          refreshDataDictionary(serverSession, temp);
51       }
52    }
53
54    public void print_abandoned() {
55       if (abandonedList.size() == 0) {
56          return;
57       }
58       for (int i = 0, size = abandonedList.size(); i < size; i++) {
59          TriggerDescriptor temp = (TriggerDescriptor) abandonedList.get(i);
60          print_trigger_descriptor(temp, "\t[" + i + "] ");
61       }
62    }
63
64    public void print_trigger_descriptor(TriggerDescriptor td, String JavaDoc extra) {
65    }
66
67    public void refreshDataDictionary(_ServerSession currentSession,
68                                      TriggerDescriptor triggerDes) throws DException {
69       QualifiedIdentifier tableName = new QualifiedIdentifier(
70           triggerDes.event_object_catalog, triggerDes.event_object_schema, triggerDes.event_object_name);
71       currentSession.refreshTriggers(tableName);
72       currentSession.getDataDictionary().getDDSTriggerOperation().removeTrigger(tableName,
73           triggerDes.action_orientation.equalsIgnoreCase(SqlKeywords.ROW), triggerDes);
74    }
75 }
76
Popular Tags