| 1 package com.daffodilwoods.daffodildb.server.sql99.ddl.schemamanipulation; 2 3 import com.daffodilwoods.daffodildb.server.serversystem.*; 4 import com.daffodilwoods.daffodildb.server.sql99.common.*; 5 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*; 6 import com.daffodilwoods.daffodildb.server.sql99.ddl.schemadefinition.*; 7 import com.daffodilwoods.daffodildb.server.sql99.ddl.utility.*; 8 import com.daffodilwoods.daffodildb.server.sql99.token.*; 9 import com.daffodilwoods.daffodildb.utils.parser.*; 10 import com.daffodilwoods.database.resource.*; 11 12 public class droproutinestatement implements SQLschemamanipulationstatement { 13 public dropbehavior _dropbehavior0; 14 public specificroutinedesignator _specificroutinedesignator1; 15 public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439222; 16 17 public Object run(Object object) throws DException { 18 _ServerSession currentSession = (_ServerSession) object; 19 RoutineDescriptor routineDescriptor = new RoutineDescriptor(); 20 setRoutineName(currentSession, routineDescriptor); 21 String schemaOwner = GeneralUtility.getSchemaOwner(routineDescriptor. 22 SPECIFIC_CATALOG, routineDescriptor.SPECIFIC_SCHEMA, currentSession); 23 GeneralUtility.validateUserRights(schemaOwner, currentSession); 24 String dropBehavior = (String ) _dropbehavior0.run(null); 25 dropRoutine(currentSession, routineDescriptor, dropBehavior); 26 return null; 27 } 28 29 private void checkDependencies(_ServerSession currentSession, 30 RoutineDescriptor routineDes) throws DException { 31 checkTriggerDependency(routineDes, currentSession); 32 checkRoutineDependency(routineDes, currentSession); 33 } 34 35 private void setRoutineName(_ServerSession currentSession, RoutineDescriptor routineDescriptor) 36 throws DException { 37 String cn = _specificroutinedesignator1.getCatalogName(); 38 routineDescriptor.SPECIFIC_CATALOG = cn == null ? currentSession.getCurrentCatalog() : cn; 39 String sn = _specificroutinedesignator1.getSchemaName(); 40 routineDescriptor.SPECIFIC_SCHEMA = sn == null ? currentSession.getCurrentSchema() : sn; 41 routineDescriptor.SPECIFIC_NAME = _specificroutinedesignator1.getObjectName(); 42 try { 43 routineDescriptor.load(currentSession); 44 if (! (_specificroutinedesignator1.getRoutineType().equalsIgnoreCase(routineDescriptor.ROUTINE_TYPE))) { 45 throw new DException("DSE729", new Object [] {_specificroutinedesignator1.getRoutineType(), routineDescriptor.getQualifiedSpecificName().getIdentifier()}); 46 } 47 } catch (DException ex) { 48 throw new DException("DSE729", new Object [] {_specificroutinedesignator1.getRoutineType(), routineDescriptor. 49 getQualifiedSpecificName().getIdentifier()}); 50 } 51 } 52 53 private void revokePrivilege(_ServerSession currentSession, 54 RoutineDescriptor routineDescriptor) throws DException { 55 String schemaOwner = GeneralUtility.getSchemaOwner(routineDescriptor. 56 ROUTINE_CATALOG, routineDescriptor.ROUTINE_SCHEMA, currentSession); 57 String grantQuery = null; 58 if (routineDescriptor.ROUTINE_TYPE.equalsIgnoreCase(SqlKeywords.PROCEDURE)) { 59 grantQuery = QueryMaker.getDropRoutineRevokeQuery(routineDescriptor. 60 getQualifiedSpecificName(), schemaOwner); 61 } else if (routineDescriptor.ROUTINE_TYPE.equalsIgnoreCase(SqlKeywords.FUNCTION)) { 62 grantQuery = QueryMaker.getDropRoutineRevokeQueryForFunction(routineDescriptor. 63 getQualifiedSpecificName(), schemaOwner); 64 } 65 66 revokeprivilegestatement _revokeprivilegestatement = ( 67 revokeprivilegestatement) Parser.parseQuery(grantQuery); 68 _revokeprivilegestatement.setIsSelfInitiated(false); 69 _revokeprivilegestatement.run(currentSession.getSystemServerSession()); 70 } 71 72 public void dropRoutine(_ServerSession currentSession, 73 RoutineDescriptor routineDescriptor, String dropBehavior) 74 throws DException { 75 if (dropBehavior.equalsIgnoreCase(SqlKeywords.RESTRICT)) { 76 checkDependencies(currentSession, routineDescriptor); 77 } 78 revokePrivilege(currentSession, routineDescriptor); 79 routineDescriptor.delete(currentSession); 80 } 81 82 public Object clone() throws CloneNotSupportedException { 83 return this; 84 } 85 86 public String toString() { 87 StringBuffer sb = new StringBuffer (); 88 sb.append(" "); 89 sb.append(_SRESERVEDWORD12065439222); 90 sb.append(" "); 91 sb.append(_specificroutinedesignator1); 92 sb.append(" "); 93 sb.append(_dropbehavior0); 94 return sb.toString(); 95 } 96 97 private void checkTriggerDependency(RoutineDescriptor routineDes, _ServerSession currentSession) throws DException { 98 } 99 100 private void checkRoutineDependency(RoutineDescriptor routineDes, _ServerSession currentSession) throws DException { 101 103 } 104 } 105 | Popular Tags |