1 package com.daffodilwoods.daffodildb.server.sql99.ddl.revoke; 2 3 7 import java.util.*; 8 9 import com.daffodilwoods.daffodildb.server.serversystem.*; 10 import com.daffodilwoods.daffodildb.server.sql99.common.*; 11 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*; 12 import com.daffodilwoods.daffodildb.server.sql99.ddl.schemadefinition.*; 13 import com.daffodilwoods.database.general.*; 14 import com.daffodilwoods.database.resource.*; 15 16 public class CalculateIdentified { 17 18 20 private static ArrayList getColumnList(TablePrivilegesDescriptor tpd, 21 _ServerSession serverSession) throws 22 DException { 23 TableDescriptor tableDescriptor = new TableDescriptor(); 24 tableDescriptor.table_catalog = tpd.object_catalog; 25 tableDescriptor.table_schema = tpd.object_schema; 26 tableDescriptor.table_name = tpd.object_name; 27 tableDescriptor.load(serverSession); 28 return tableDescriptor.get_all_column_descriptors(); 29 } 30 31 public static ArrayList getIdentifiedRoleAuthorisationDescriptor( 32 _ServerSession serverSession, 33 ArrayList RADRevoked, ArrayList grantee, String grantor) throws 34 DException { 35 return null; 36 } 37 38 public static ArrayList getIdentifiedPrivilegeDescriptor(_ServerSession 39 serverSession, privileges privilege, ArrayList grantee_list, 40 String grantor) throws DException { 41 42 privilege.setGrantee(grantor); 43 ArrayList returned_list = (ArrayList) privilege.run(serverSession); 44 if (returned_list == null) { 45 throw new DException("DSE1171", null); 46 } 47 48 ArrayList identi_list = new ArrayList(); 49 PrivilegeDescriptor pd, clone_pd; 50 51 ArrayList columnList = null; 52 for (int j = 0, sz = returned_list.size(); j < sz; j++) { 53 for (int i = 0, size = grantee_list.size(); i < size; i++) { 54 pd = (PrivilegeDescriptor) returned_list.get(j); 55 pd.setGrantee(grantee_list.get(i)); 56 pd.setGrantor(grantor); 57 try { 58 if (pd instanceof TablePrivilegesDescriptor) { 59 clone_pd = new TablePrivilegesDescriptor( ( 60 TablePrivilegesDescriptor) pd); 61 if (columnList == null) { 62 columnList = getColumnList( (TablePrivilegesDescriptor) pd, 63 serverSession); 64 } 65 ( (TablePrivilegesDescriptor) clone_pd).load(serverSession); 66 saveColumnPrivilegeDescriptor(serverSession, 67 (TablePrivilegesDescriptor) pd, 68 identi_list, columnList); 69 } else if (pd instanceof ColumnPrivilegeDescriptor) { 70 clone_pd = new ColumnPrivilegeDescriptor( ( 71 ColumnPrivilegeDescriptor) pd); 72 ( (ColumnPrivilegeDescriptor) clone_pd).load(serverSession); 73 } else if (pd instanceof RoutinePrivilegeDescriptor) { 74 clone_pd = new RoutinePrivilegeDescriptor( ( 75 RoutinePrivilegeDescriptor) pd); 76 ( (RoutinePrivilegeDescriptor) clone_pd).load(serverSession); 77 } else if (pd instanceof UsagePrivilegesDescriptor) { 78 clone_pd = new UsagePrivilegesDescriptor( ( 79 UsagePrivilegesDescriptor) pd); 80 ( (UsagePrivilegesDescriptor) clone_pd).load(serverSession); 81 } else { 82 throw new DException("DSE1172", null); 83 } 84 identi_list.add(clone_pd); 85 } catch (DException ex) { 86 if (! (ex.getDseCode().equals("DSE265") || 87 ex.getDseCode().equals("DSE264") || 88 ex.getDseCode().equals("DSE723") || 89 ex.getDseCode().equals("DSE1046"))) { 90 throw ex; 91 } 92 } 93 } 94 } 95 return identi_list.size() == 0 ? null : identi_list; 96 } 97 98 private static void saveColumnPrivilegeDescriptor(_ServerSession 99 serverSession, TablePrivilegesDescriptor tpd, ArrayList identi_list, 100 ArrayList columnList) throws 101 DException { 102 if ( (!tpd.privilege_type.equalsIgnoreCase(SqlKeywords.TRIGGER)) && 103 (!tpd.privilege_type.equalsIgnoreCase(SqlKeywords.DELETE))) { 104 for (int i = 0, size = columnList.size(); i < size; i++) { 105 ColumnDescriptor temp = (ColumnDescriptor) columnList.get(i); 106 if ( (!temp.column_name.equalsIgnoreCase(SystemFields.systemFields[SystemFields.rowId])) || 107 (tpd.privilege_type.equalsIgnoreCase(SqlKeywords.SELECT) || 108 tpd.privilege_type.equalsIgnoreCase(SqlKeywords.REFERENCES))) { 109 ColumnPrivilegeDescriptor cpd = new ColumnPrivilegeDescriptor(); 110 cpd.grantee = tpd.grantee; 111 cpd.grantor = tpd.grantor; 112 cpd.object_catalog = tpd.object_catalog; 113 cpd.object_schema = tpd.object_schema; 114 cpd.object_name = tpd.object_name; 115 cpd.column_name = temp.column_name; 116 cpd.privilege_type = tpd.privilege_type; 117 cpd.load(serverSession); 118 identi_list.add(cpd); 119 } 120 } 121 } 122 } 123 } 124 | Popular Tags |