KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > ddl > schemamanipulation > droproutinestatement


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 JavaDoc run(Object JavaDoc object) throws DException {
18       _ServerSession currentSession = (_ServerSession) object;
19       RoutineDescriptor routineDescriptor = new RoutineDescriptor();
20       setRoutineName(currentSession, routineDescriptor);
21       String JavaDoc schemaOwner = GeneralUtility.getSchemaOwner(routineDescriptor.
22           SPECIFIC_CATALOG, routineDescriptor.SPECIFIC_SCHEMA, currentSession);
23       GeneralUtility.validateUserRights(schemaOwner, currentSession);
24       String JavaDoc dropBehavior = (String JavaDoc) _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 JavaDoc cn = _specificroutinedesignator1.getCatalogName();
38       routineDescriptor.SPECIFIC_CATALOG = cn == null ? currentSession.getCurrentCatalog() : cn;
39       String JavaDoc 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 JavaDoc[] {_specificroutinedesignator1.getRoutineType(), routineDescriptor.getQualifiedSpecificName().getIdentifier()});
46          }
47       } catch (DException ex) {
48          throw new DException("DSE729", new Object JavaDoc[] {_specificroutinedesignator1.getRoutineType(), routineDescriptor.
49                               getQualifiedSpecificName().getIdentifier()});
50       }
51    }
52
53    private void revokePrivilege(_ServerSession currentSession,
54                                 RoutineDescriptor routineDescriptor) throws DException {
55       String JavaDoc schemaOwner = GeneralUtility.getSchemaOwner(routineDescriptor.
56           ROUTINE_CATALOG, routineDescriptor.ROUTINE_SCHEMA, currentSession);
57       String JavaDoc 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 JavaDoc 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 JavaDoc clone() throws CloneNotSupportedException JavaDoc {
83       return this;
84    }
85
86    public String JavaDoc toString() {
87       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
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       /**
102        * Check dependency for Procedure and Function Both.*/

103    }
104 }
105
Popular Tags