1 package com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors; 2 3 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*; 4 import com.daffodilwoods.daffodildb.server.serversystem.*; 5 import com.daffodilwoods.daffodildb.server.serversystem.dmlvalidation.constraintsystem.*; 6 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*; 7 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*; 8 import com.daffodilwoods.database.general.*; 9 import com.daffodilwoods.database.resource.*; 10 11 public class ColumnPrivilegeDescriptor extends PrivilegeDescriptor { 12 13 public String column_name; 14 public String privilege_type; 15 16 public ColumnPrivilegeDescriptor() throws DException { 17 } 18 19 public ColumnPrivilegeDescriptor(ColumnPrivilegeDescriptor cpd) throws DException { 20 object_catalog = (cpd.object_catalog == null) 21 ? null : cpd.object_catalog.toString(); 22 object_name = (cpd.object_name == null) 23 ? null : cpd.object_name.toString(); 24 object_schema = (cpd.object_schema == null) 25 ? null : cpd.object_schema.toString(); 26 privilege_type = (cpd.privilege_type == null) 27 ? null : cpd.privilege_type; 28 column_name = (cpd.column_name == null) ? null : cpd.column_name; 29 grantee = (cpd.grantee == null) ? null : cpd.grantee.toString(); 30 grantor = (cpd.grantor == null) ? null : cpd.grantor.toString(); 31 is_grantable = (cpd.is_grantable == null) 32 ? null : cpd.is_grantable.toString(); 33 } 34 35 public int hashCode() { 36 return privilege_type.hashCode() * 3 37 + column_name.toUpperCase().hashCode() * 5 38 + getGrantee().toUpperCase().hashCode() * 7 39 + getGrantor().toUpperCase().hashCode() * 9 40 + object_catalog.toUpperCase().hashCode() * 11 41 + object_schema.toUpperCase().hashCode() * 13 42 + object_name.toUpperCase().hashCode() * 17; 43 } 44 45 public boolean equals(Object temp) { 46 if (! (temp instanceof ColumnPrivilegeDescriptor)) { 47 return false; 48 } 49 50 ColumnPrivilegeDescriptor pd = (ColumnPrivilegeDescriptor) temp; 51 return ( ( (privilege_type == null) && (pd.privilege_type == null)) || privilege_type.equalsIgnoreCase(pd.privilege_type)) 52 && ( ( (column_name == null) && (pd.column_name == null)) || column_name.equalsIgnoreCase(pd.column_name)) 53 && ( ( (getGrantee() == null) && (pd.getGrantee() == null)) || getGrantee().equalsIgnoreCase(pd.getGrantee())) 54 && ( ( (getGrantor() == null) && (pd.getGrantor() == null)) || getGrantor().equalsIgnoreCase(pd.getGrantor())) 55 && ( ( (object_catalog == null) && (pd.object_catalog == null)) || object_catalog.equalsIgnoreCase(pd.object_catalog)) 56 && ( ( (object_schema == null) && (pd.object_schema == null)) || object_schema.equalsIgnoreCase(pd.object_schema)) 57 && ( ( (object_name == null) && (pd.object_name == null)) || object_name.equalsIgnoreCase(pd.object_name)) 58 && ( ( (is_grantable == null) && (pd.is_grantable == null)) || is_grantable.equalsIgnoreCase(pd.is_grantable)); 59 } 60 61 public void load(_ServerSession serverSession) throws DException { 62 DataDictionary dd = (DataDictionary) serverSession.getDataDictionary(); 63 _SelectQueryIterator iter = (_SelectQueryIterator) dd.getPreparedStatementGetter().getColumnPrivilegesTableExecuter().executeForFresh(new Object [] {grantor, grantee, object_catalog, object_schema, object_name, column_name, privilege_type}); 64 if (!iter.first()) { 65 throw new DException("DSE264", new Object [] {object_catalog, object_schema, object_name, column_name, privilege_type}); 66 } else { 67 Object [] obj = (Object []) iter.getObject(); 68 loadDataFromRecord(obj); 69 } 70 } 71 72 public void save(_ServerSession serverSession) throws DException { 73 Object [] parameters = new Object [] {grantor, 74 grantee, 75 object_catalog, 76 object_schema, 77 object_name, 78 column_name, 79 privilege_type, 80 is_grantable 81 }; 82 try { 83 SqlSchemaConstants.insert(serverSession, SqlSchemaConstants.column_privileges_TableName, null, parameters); 84 } catch (PrimaryConstraintException de) { 85 DException tde = new DException("DSE1139", new Object [] {privilege_type, grantor, grantee, getTableName(), column_name}); 86 throw tde; 87 } catch (SizeMisMatchException de) { 88 if (de.getDseCode().equals("DSE773")) { 89 DException tde = new DException("DSE8103", null); 90 throw tde; 91 } 92 } catch (DException de) { 93 if (de.getDseCode().equals("DSE1255")) { 94 DException tde = new DException("DSE1139", new Object [] {privilege_type, grantor, grantee, getTableName(), column_name}); 95 throw tde; 96 } 97 if (de.getDseCode().equals("DSE773")) { 98 DException tde = new DException("DSE8103", null); 99 throw tde; 100 } 101 throw de; 102 } 103 } 104 105 public void delete(_ServerSession serverSession) throws DException { 106 booleanvalueexpression condition = ( (DataDictionary) serverSession.getDataDictionary()).getPreparedStatementGetter().getColumnPrivilegesTableCondition(); 107 super.deleteColumnPrivilegeDescriptor(serverSession, SqlSchemaConstants.column_privileges_TableName, condition, new Object [] {grantor, grantee, object_catalog, object_schema, object_name, privilege_type, column_name}); 108 } 109 110 private void loadDataFromRecord(Object [] values) throws DException { 111 grantor = values[SystemTablesFields.columnPrivileges_grantor]; 112 grantee = values[SystemTablesFields.columnPrivileges_grantee]; 113 object_catalog = (String ) values[SystemTablesFields.columnPrivileges_object_catalog]; 114 object_schema = (String ) values[SystemTablesFields.columnPrivileges_object_schema]; 115 object_name = (String ) values[SystemTablesFields.columnPrivileges_object_name]; 116 column_name = (String ) values[SystemTablesFields.columnPrivileges_column_name]; 117 privilege_type = (String ) values[SystemTablesFields.columnPrivileges_privilege_type]; 118 is_grantable = (String ) values[SystemTablesFields.columnPrivileges_is_grantable]; 119 } 120 121 public void loadDataFromRecord(_SelectQueryIterator iter) throws DException { 122 loadDataFromRecord( (Object []) iter.getObject()); 123 } 124 125 private String getTableName() { 126 StringBuffer tableName = new StringBuffer (); 127 tableName.append(object_catalog).append(".").append(object_schema).append(".").append(object_name); 128 return tableName.toString(); 129 } 130 131 public int getDescriptorType() { 132 return COLUMN_PRIVILEGE_DESCRIPTOR; 133 } 134 135 public void updateIsGrantableValue(_ServerSession serversession, String isGrantable) throws DException { 136 booleanvalueexpression condition = ( (DataDictionary) serversession. 137 getDataDictionary()). 138 getPreparedStatementGetter().getColumnPrivilegesTableCondition(); 139 super.update(serversession, SystemTables.column_privileges_TableName, condition, 140 new Object [] {grantor, grantee, object_catalog, object_schema, 141 object_name, privilege_type, column_name} 142 , 143 new Object [] {isGrantable} 144 , 145 new int[] {SystemTablesFields.columnPrivileges_is_grantable}); 146 } 147 } 148 | Popular Tags |