1 package com.daffodilwoods.daffodildb.server.sql99.ddl.revoke; 2 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 [] {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 [] obj = (Object []) userNSchema.get(j); 36 if (tpd.getGrantee().equalsIgnoreCase( (String ) obj[0]) && (triggerDescriptor.trigger_schema.equalsIgnoreCase( (String ) obj[1]) && triggerDescriptor.trigger_catalog.equalsIgnoreCase( (String ) 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 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 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 |