1 package com.daffodilwoods.daffodildb.server.sql99.ddl.schemadefinition; 2 3 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*; 4 import com.daffodilwoods.daffodildb.server.serversystem.*; 5 import com.daffodilwoods.daffodildb.server.sql99.common.*; 6 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*; 7 import com.daffodilwoods.daffodildb.server.sql99.dql.tableexpression.fromclause.*; 8 import com.daffodilwoods.daffodildb.server.sql99.token.*; 9 import com.daffodilwoods.database.general.*; 10 import com.daffodilwoods.database.resource.*; 11 12 public class triggerdefinition implements SQLschemadefinitionstatement, schemaelement { 13 public triggeredaction _triggeredaction0; 14 public SRESERVEDWORD1206543922oldornewvaluesaliaslist 15 _OptSRESERVEDWORD1206543922oldornewvaluesaliaslist1; 16 public tablename _tablename2; 17 public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439223; 18 public triggerevent _triggerevent4; 19 public triggeractiontime _triggeractiontime5; 20 public triggername _triggername6; 21 public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439227; 22 public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439228; 23 24 private SchemaDescriptor schemaDescriptor; 25 public void setSchemaDescriptor(_Descriptor schemaDes0) throws 26 DException { 27 schemaDescriptor = (SchemaDescriptor) schemaDes0; 28 } 29 30 52 public Object run(Object object) throws com.daffodilwoods.database.resource. 53 DException { 54 _ServerSession currentSession = ( (_ServerSession) object); 55 boolean isIndependentStt = schemaDescriptor == null; 56 TriggerDescriptor triggerDescriptor = new TriggerDescriptor(); 57 setTriggerTable(triggerDescriptor, currentSession); 58 setTriggerName(currentSession, triggerDescriptor); 59 validateUserPrivilege(triggerDescriptor, currentSession, isIndependentStt); 60 storeTriggerProperties(currentSession, triggerDescriptor); 61 triggerDescriptor.save(currentSession); 62 if (isIndependentStt) { 63 66 currentSession.getDataDictionary().getDDSTriggerOperation().addTrigger( 67 triggerDescriptor.tableDescriptor.getQualifiedTableName(), 68 triggerDescriptor.action_orientation.equalsIgnoreCase(SqlKeywords.ROW), 69 triggerDescriptor); 70 } 71 currentSession.refreshTriggers(triggerDescriptor.tableDescriptor.getQualifiedTableName()); 72 return null; 73 } 74 75 private void setTriggerName(_ServerSession currentSession, 76 TriggerDescriptor triggerDescriptor) throws 77 DException { 78 _triggername6.setTiggerName(triggerDescriptor); 79 checkSchema(triggerDescriptor, currentSession); 80 } 81 82 139 140 144 private void validateUserPrivilege(TriggerDescriptor triggerDescriptor, 145 _ServerSession currentSession, 146 boolean isIndependentStt) throws 147 DException { 148 String currentUser = currentSession.getCurrentUser(); 149 if (isIndependentStt && 150 !currentSession.isEnabledAuthorizationIdentifier(schemaDescriptor.schema_owner, true)) { 151 throw new DException("DSE12", null); 152 } 153 QualifiedIdentifier tableName = triggerDescriptor.tableDescriptor. 154 getQualifiedTableName(); 155 if (!currentSession.getDataDictionary().getPrivilegeCharacteristics(currentUser, _PrivilegeCharacteristics.AUTHORIZATION_ROLE).getPrivilegeTable(tableName). 156 hasTablePrivileges(_PrivilegeTable.TRIGGER)) { 157 throw new DException("DSE27", null); 158 } 159 } 160 161 private void storeTriggerProperties(_ServerSession currentSession, 162 TriggerDescriptor triggerDescriptor) throws 163 DException { 164 triggerDescriptor.condition_timing = (String ) _triggeractiontime5.run(null); 165 setTriggerEvent(triggerDescriptor); 166 _triggeredaction0.setTriggerDescriptor(triggerDescriptor); 167 _triggeredaction0.setTriggerActionOrientation(); 168 setReferences(triggerDescriptor); 169 _triggeredaction0.validateTriggeredAction(currentSession); 170 _triggeredaction0.setTriggerSearchCondition(); 171 _triggeredaction0.setTriggeredStatement(currentSession); 172 175 triggerDescriptor.setActionOrder(currentSession); 176 _triggeredaction0.setTablesIncludedAndColumnIncluded(currentSession); 177 } 178 179 private void setTriggerEvent(TriggerDescriptor triggerDescriptor) throws 180 DException { 181 triggerDescriptor.event_manipulation = (String ) _triggerevent4.run(triggerDescriptor); 182 } 183 184 private void setReferences(TriggerDescriptor triggerDescriptor) throws 185 DException { 186 if (_OptSRESERVEDWORD1206543922oldornewvaluesaliaslist1 != null) { 187 _OptSRESERVEDWORD1206543922oldornewvaluesaliaslist1.setTriggerDescriptor( 188 triggerDescriptor); 189 _OptSRESERVEDWORD1206543922oldornewvaluesaliaslist1.run(null); 190 } 191 } 192 193 public String toString() { 194 StringBuffer sb = new StringBuffer (); 195 sb.append(" "); 196 sb.append(_SRESERVEDWORD12065439228); 197 sb.append(" "); 198 sb.append(_SRESERVEDWORD12065439227); 199 sb.append(" "); 200 sb.append(_triggername6); 201 sb.append(" "); 202 sb.append(_triggeractiontime5); 203 sb.append(" "); 204 sb.append(_triggerevent4); 205 sb.append(" "); 206 sb.append(_SRESERVEDWORD12065439223); 207 sb.append(" "); 208 sb.append(_tablename2); 209 sb.append(" "); 210 if (_OptSRESERVEDWORD1206543922oldornewvaluesaliaslist1 != null) { 211 sb.append(_OptSRESERVEDWORD1206543922oldornewvaluesaliaslist1); 212 } 213 sb.append(" "); 214 sb.append(_triggeredaction0); 215 return sb.toString(); 216 } 217 218 public Object clone() throws CloneNotSupportedException { 219 return this; 220 } 221 222 private void checkSchema(TriggerDescriptor triggerDescriptor, 223 _ServerSession currentSession) throws DException { 224 if (schemaDescriptor != null) { 225 if (triggerDescriptor.trigger_catalog != null) { 226 if (!triggerDescriptor.trigger_catalog.equalsIgnoreCase( 227 schemaDescriptor.catalog_name)) { 228 throw new DException("DSE228", null); 229 } 230 } else { 231 triggerDescriptor.trigger_catalog = schemaDescriptor.catalog_name; 232 233 } 234 if (triggerDescriptor.trigger_schema != null) { 235 if (!triggerDescriptor.trigger_schema.equalsIgnoreCase(schemaDescriptor. 236 schema_name)) { 237 throw new DException("DSE905", null); 238 } 239 } else { 240 triggerDescriptor.trigger_schema = schemaDescriptor.schema_name; 241 } 242 } else { 243 if (triggerDescriptor.trigger_catalog == null) { 244 triggerDescriptor.trigger_catalog = triggerDescriptor.event_object_catalog; 245 } 246 if (triggerDescriptor.trigger_schema == null) { 247 triggerDescriptor.trigger_schema = triggerDescriptor.event_object_schema; 248 } 249 schemaDescriptor = new SchemaDescriptor(); 250 schemaDescriptor.catalog_name = triggerDescriptor.trigger_catalog; 251 schemaDescriptor.schema_name = triggerDescriptor.trigger_schema; 252 schemaDescriptor.load(currentSession); 253 } 254 } 255 256 private void setTriggerTable(TriggerDescriptor triggerDescriptor, 257 _ServerSession connection) throws DException { 258 triggerDescriptor.event_object_catalog = _tablename2.getCatalogName(); 259 triggerDescriptor.event_object_schema = _tablename2.getSchemaName(); 260 triggerDescriptor.event_object_name = _tablename2.getTableName(); 261 if (triggerDescriptor.event_object_schema == null) { 262 triggerDescriptor.event_object_schema = connection.getCurrentSchema(); 263 } 264 if (triggerDescriptor.event_object_catalog == null) { 265 triggerDescriptor.event_object_catalog = connection.getCurrentCatalog(); 266 } 267 TableDescriptor tableDescriptor = new TableDescriptor(); 268 tableDescriptor.table_catalog = triggerDescriptor.event_object_catalog; 269 tableDescriptor.table_schema = triggerDescriptor.event_object_schema; 270 tableDescriptor.table_name = triggerDescriptor.event_object_name; 271 tableDescriptor.load(connection); 272 if (tableDescriptor.table_type.equals(SqlKeywords.VIEW)) { 273 throw new DException("DSE1014", null); 274 } 275 triggerDescriptor.tableDescriptor = tableDescriptor; 276 } 277 } 278 | Popular Tags |