KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > webman > mainint > db > queries > oracle > TKDBContentTreeDeleteDependentDC


1 package com.teamkonzept.webman.mainint.db.queries.oracle;
2 import java.sql.*;
3 import com.teamkonzept.db.*;
4 import com.teamkonzept.webman.mainint.db.queries.content.*;
5 import com.teamkonzept.webman.mainint.db.queries.oracle.helper.
6
    CheckTableExistence;
7 import com.teamkonzept.webman.mainint.WebmanExceptionHandler;
8
9 /*
10  * TKDBContentTreeDeleteDependentDC
11  * loescht alle Eintraeg in DC die abhaengkeiten in CONTENT_TREE haben
12  * Input: CONTENT_NODE_ID
13  * Output: none
14  */

15 public class TKDBContentTreeDeleteDependentDC extends TKExtendedPrepQuery
16 {
17     public final static boolean isPrepared = true;
18
19     public final static String JavaDoc[] paramOrder = { "CONTENT_NODE_ID" };
20
21     public final static Object JavaDoc[][] types = null;
22
23     public final static boolean[] setRelevants = { false };
24
25 /* public final static String sqlString =
26         "DECLARE @L_NR INT " +
27         "DECLARE @R_NR INT " +
28
29
30         "CREATE TABLE #temp " +
31         "( " +
32         " CONTENT_NODE_ID int " +
33         ") " +
34
35         "BEGIN TRANSACTION " +
36
37         "SELECT " +
38         " @L_NR = LEFT_NR, @R_NR = RIGHT_NR " +
39         "FROM " +
40         " CONTENT_TREE " +
41         "WHERE " +
42         " CONTENT_NODE_ID = ? " +
43
44
45         "INSERT INTO " +
46         " #temp " +
47         " (CONTENT_NODE_ID) " +
48         "SELECT " +
49         " (CONTENT_NODE_ID) " +
50         "FROM " +
51         " CONTENT_TREE " +
52         "WHERE " +
53         " LEFT_NR >= @L_NR " +
54         "AND " +
55         " RIGHT_NR <= @R_NR " +
56
57         "DELETE FROM " +
58         " CONTENT_SELECTION " +
59         "WHERE " +
60         " SELECTION_ID IN ( " +
61             "SELECT " +
62             " SELECTION_ID " +
63             "FROM " +
64             " DOCUMENT_CONTENT " +
65             "WHERE " +
66             " CONTENT_NODE_ID IN ( " +
67                 "SELECT " +
68                 " CONTENT_NODE_ID " +
69                 "FROM " +
70                 " #temp " +
71                 ") " +
72             "AND " +
73             " SELECTION_ID IS NOT NULL " +
74         ") " +
75
76         "DELETE FROM " +
77         " DOCUMENT_CONTENT " +
78         "WHERE " +
79         " CONTENT_NODE_ID IN ( " +
80             "SELECT " +
81             " CONTENT_NODE_ID " +
82             "FROM " +
83             " #temp " +
84         ") " +
85
86         "COMMIT TRANSACTION " +
87
88         "DROP TABLE #temp "; */

89
90
91     protected static Class JavaDoc[] queryClasses = {
92     CheckTableExistence.class, // [0]
93
CreateTempTableContentNodeId.class, // [1]
94
SelectLeftRightNrFromContentTree.class, // [2]
95
InsertIntoTempTableContentNodeId.class, // [3]
96
DeleteFromContentSelection2.class, // [4]
97
DeleteFromDocumentContent2.class // [5]
98
};
99
100     public boolean execute()
101     {
102     try
103     {
104
105         init(queryClasses); // init query objects
106

107         Object JavaDoc contentNodeId = queryParams.get("CONTENT_NODE_ID");
108
109         boolean isNotOpen = aTKDBConnection.isAutoCommit();
110         if (isNotOpen)
111         {
112         TKDBManager.beginTransaction(); // begin transaction
113
}
114
115         // CLASS: CheckTableExistence.class
116
// PARAMS: TABLE_NAME (=WEBMAN_TEMP)
117
// [0]
118
queries[0].setQueryParams("TABLE_NAME", "WEBMAN_TEMP"); // check existence!!!
119
queries[0].execute();
120         ResultSet exist = queries[0].fetchResultSet();
121         if (exist != null && exist.next())
122         {
123         }
124         else
125         {
126         // CREATE GLOBAL TEMPORARY TABLE WEBMAN_TEMP (CONTENT_NODE_ID int)
127
queries[1].execute();
128         }
129
130
131         // OLD: SELECT @L_NR = LEFT_NR, @R_NR = RIGHT_NR FROM CONTENT_TREE WHERE CONTENT_NODE_ID = ?
132
// NEW: SELECT LEFT_NR, RIGHT_NR FROM CONTENT_TREE WHERE CONTENT_NODE_ID = ?
133
// CLASS: SelectLeftRightNrFromContentTree.class
134
// PARAMS: NODE_ID
135
// [2]
136
queries[2].setQueryParams("NODE_ID", contentNodeId);
137         queries[2].execute();
138         ResultSet rs2 = queries[2].fetchResultSet();
139         Object JavaDoc leftNr = null;
140         Object JavaDoc rightNr = null;
141         if (rs2 != null && rs2.next())
142         {
143         leftNr = rs2.getObject(1);
144         rightNr = rs2.getObject(2);
145         }
146
147
148         // OLD: INSERT INTO #temp (CONTENT_NODE_ID) SELECT (CONTENT_NODE_ID) FROM CONTENT_TREE WHERE LEFT_NR >= @L_NR AND RIGHT_NR <= @R_NR
149
// NEW: INSERT INTO WEBMAN_TEMP SELECT CONTENT_NODE_ID FROM CONTENT_TREE WHERE LEFT_NR >= ? AND RIGHT_NR <= ?
150
// CLASS: InsertTempTable1ContentNodeId.class
151
// PARAMS: LEFT_NR, RIGHT_NR
152
// [3]
153
queries[3].setQueryParams("LEFT_NR", leftNr);
154         queries[3].setQueryParams("RIGHT_NR", rightNr);
155         queries[3].execute();
156
157
158         // OLD: DELETE FROM CONTENT_SELECTION WHERE SELECTION_ID IN ( SELECT SELECTION_ID FROM DOCUMENT_CONTENT WHERE CONTENT_NODE_ID IN ( SELECT CONTENT_NODE_ID FROM #temp ) AND SELECTION_ID IS NOT NULL )
159
// NEW: DELETE FROM CONTENT_SELECTION WHERE SELECTION_ID IN ( SELECT SELECTION_ID FROM DOCUMENT_CONTENT WHERE CONTENT_NODE_ID IN ( SELECT CONTENT_NODE_ID FROM WEBMAN_TEMP ) AND SELECTION_ID IS NOT NULL )
160
// CLASS: DeleteFromContentSelection2.class
161
// [4]
162
queries[4].execute();
163
164
165         // OLD: DELETE FROM DOCUMENT_CONTENT WHERE CONTENT_NODE_ID IN ( SELECT CONTENT_NODE_ID FROM #temp )
166
// NEW: DELETE FROM DOCUMENT_CONTENT WHERE CONTENT_NODE_ID IN ( SELECT CONTENT_NODE_ID FROM WEBMAN_TEMP )
167
// CLASS: DeleteFromDocumentContent2.class
168
// [5]
169
queries[5].execute();
170
171         // COMMIT TRANSACTION " +
172
if (isNotOpen)
173         {
174         aTKDBConnection.commitTransaction(); // commit all changes
175
}
176
177     }
178     catch(Throwable JavaDoc t)
179     {
180         TKDBManager.safeRollbackTransaction(t);
181     }
182     return hasResults();
183     }
184
185     public void initQuery(Connection con)
186     {
187     super.initQuery(con,
188             isPrepared, paramOrder, types, setRelevants, null);
189     }
190 }
191
Popular Tags