1 package com.daffodilwoods.daffodildb.server.sql99.ddl.revoke; 2 3 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.*; 10 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*; 11 import com.daffodilwoods.daffodildb.server.sql99.ddl.schemamanipulation.*; 12 import com.daffodilwoods.daffodildb.server.sql99.ddl.utility.*; 13 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*; 14 import com.daffodilwoods.daffodildb.utils.*; 15 import com.daffodilwoods.daffodildb.utils.parser.*; 16 import com.daffodilwoods.database.resource.*; 17 18 public class AbandonedViews { 19 ArrayList abandonedList; 20 _ServerSession serverSession; 21 AbandonedObjectHandler abanObjHan; 22 23 public AbandonedViews(AbandonedObjectHandler temp, _ServerSession serversession) throws DException { 24 serverSession = serversession; 25 abandonedList = new ArrayList(); 26 abanObjHan = temp; 27 } 28 29 public void calculate(ColumnPrivilegeDescriptor cpd, _ServerSession currentSession) throws DException { 30 ArrayList userNSchema = abanObjHan.getUserNSchema(); 31 if (userNSchema == null) { 32 return; 33 } 34 _Executer executerAbandonedViewForColumn = ( (DataDictionary) currentSession.getDataDictionary()).getPreparedStatementGetter().getAbandonedViewForColumnExecuter(); 35 _SelectQueryIterator iter = (_SelectQueryIterator) executerAbandonedViewForColumn.execute(new Object [] {cpd.object_catalog, cpd.object_schema, cpd.object_name, cpd.column_name}); 36 if (iter.first()) { 37 do { 38 ViewDescriptor viewDes = new ViewDescriptor(); 39 viewDes.loadDataFromRecord(iter, serverSession); 40 for (int j = 0, tempsize = userNSchema.size(); j < tempsize; j++) { 41 Object [] obj = (Object []) userNSchema.get(j); 42 if (cpd.getGrantee().equalsIgnoreCase( (String ) obj[0]) && (viewDes.table_schema.equalsIgnoreCase( (String ) obj[1]) && viewDes.table_catalog.equalsIgnoreCase( (String ) obj[2]))) { 43 insertInList(viewDes); 44 } 45 } 46 } while (iter.next()); 47 } 48 } 49 50 public void calculate(TablePrivilegesDescriptor tpd, _ServerSession currentSession) throws DException { 51 ArrayList userNSchema = abanObjHan.getUserNSchema(); 52 if (userNSchema == null) { 53 return; 54 } 55 _Executer executerAbandonedViewForTable = ( (DataDictionary) currentSession.getDataDictionary()).getPreparedStatementGetter().getAbandonedViewForTableExecuter(); 56 _SelectQueryIterator iter = (_SelectQueryIterator) executerAbandonedViewForTable.execute(new Object [] {tpd.object_catalog, tpd.object_schema, tpd.object_name}); 57 if (iter.first()) { 58 do { 59 ViewDescriptor viewDes = new ViewDescriptor(); 60 viewDes.loadDataFromRecord(iter, serverSession); 61 for (int j = 0, tempsize = userNSchema.size(); j < tempsize; j++) { 62 Object [] obj = (Object []) userNSchema.get(j); 63 if (tpd.getGrantee().equalsIgnoreCase( (String ) obj[0]) && (viewDes.table_schema.equalsIgnoreCase( (String ) obj[1]) && viewDes.table_catalog.equalsIgnoreCase( (String ) obj[2]))) { 64 insertInList(viewDes); 65 } 66 } 67 } while (iter.next()); 68 } 69 } 70 71 public void process() throws DException { 72 for (int i = 0, size = abandonedList.size(); i < size; i++) { 73 ViewDescriptor temp = (ViewDescriptor) abandonedList.get(i); 74 ArrayList alreadyAbondenedObjects = abanObjHan.getAreadyAbandenedObjects(); 75 if (alreadyAbondenedObjects == null || !alreadyAbondenedObjects.contains(temp)) { 76 StringBuffer str = new StringBuffer (); 77 str.append("drop view ") 78 .append(QuotedUtility.getUserIdentifier(temp.table_catalog)) 79 .append(".").append(QuotedUtility.getUserIdentifier(temp.table_schema)) 80 .append(".").append(QuotedUtility.getUserIdentifier(temp.table_name)) 81 .append(" cascade"); 82 dropviewstatement st = (dropviewstatement) Parser.parseQuery(str.toString()); 83 st.load(serverSession, temp); 84 String schemaOwner = GeneralUtility.getSchemaOwner(temp.table_catalog, 85 temp.table_schema, serverSession); 86 ArrayList objectsAbondened = st.dropView(temp, serverSession, "cascade", schemaOwner); 87 st.refreshServerSystem(serverSession, temp); 88 abanObjHan.addToAlreadyAbondenedObjets(temp); 89 abanObjHan.addToAlreadyAbondenedObjets(objectsAbondened); 90 } 91 } 92 } 93 94 private void insertInList(ViewDescriptor view) { 95 if (!abandonedList.contains(view)) { 96 abandonedList.add(view); 97 } 98 } 99 100 public void print_abandoned() { 101 if (abandonedList.size() == 0) { 102 return; 103 } 104 for (int i = 0, size = abandonedList.size(); i < size; i++) { 105 ViewDescriptor temp = (ViewDescriptor) abandonedList.get(i); 106 print_view_descriptor(temp, "\t[" + i + "] "); 107 } 108 } 109 110 public void print_view_descriptor(ViewDescriptor vd, String extra) { 111 } 112 } 113 | Popular Tags |