KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > webman > mainint > db > queries > sybase > TKDBContentTreeDeleteNode


1 package com.teamkonzept.webman.mainint.db.queries.sybase;
2
3 import com.teamkonzept.db.*;
4 import java.sql.*;
5
6 /*
7  * TKDBContentTreeDeleteNode
8  * Loescht einen Nodes und alle Seine Kinder, sowie alle
9  * Eintraege in den entspr. CONTENT Tabellen
10  * Input: CONTENT_NODE_ID
11  * Output: Keiner
12  */

13 public class TKDBContentTreeDeleteNode extends TKPrepQuery {
14
15     public final static boolean ISPREPARED =
16         true;
17     
18     public final static String JavaDoc[] PARAMORDER =
19         { "CONTENT_NODE_ID" };
20     
21     public final static Object JavaDoc[][] PARAMTYPES =
22         null;
23         
24     public final static boolean[] SETRELEVANTS =
25         { false };
26         
27     public final static String JavaDoc SQLSTRING =
28         "DECLARE @L_NR INT " +
29         "DECLARE @R_NR INT " +
30         "DECLARE @DIFF INT " +
31         
32         
33         "CREATE TABLE #temp " +
34         "( " +
35         " CONTENT_ID int " +
36         ") " +
37         
38         "CREATE TABLE #temp2 " +
39         "( " +
40         " INSTANCE_ID int " +
41         ") " +
42
43         "BEGIN TRANSACTION " +
44
45         "SELECT " +
46         " @L_NR = LEFT_NR, @R_NR = RIGHT_NR " +
47         "FROM " +
48         " CONTENT_TREE " +
49         "WHERE " +
50         " CONTENT_NODE_ID = ? " +
51         
52         "SELECT @DIFF = @R_NR - @L_NR + 1 " +
53                 
54         "INSERT INTO " +
55         " #temp2 " +
56         " (INSTANCE_ID) " +
57         "SELECT " +
58         " CI.INSTANCE_ID " +
59         "FROM " +
60         " CONTENT_TREE CT, CONTENT_INSTANCE CI " +
61         "WHERE " +
62         " CT.CONTENT_NODE_ID = CI.CONTENT_NODE_ID " +
63         "AND " +
64         " CT.LEFT_NR >= @L_NR " +
65         "AND " +
66         " CT.RIGHT_NR <= @R_NR " +
67
68         "INSERT INTO " +
69         " #temp " +
70         " (CONTENT_ID) " +
71         "SELECT " +
72         " C.CONTENT_ID " +
73         "FROM " +
74         " #temp2 T, CONTENT_VERSION CV, CONTENT C " +
75         "WHERE " +
76         " T.INSTANCE_ID = CV.INSTANCE_ID AND " +
77         " CV.CONTENT_ID = C.CONTENT_ID " +
78         
79         "DELETE FROM " +
80         " CONTENT_VALUE " +
81         "WHERE " +
82         " CONTENT_ID IN " +
83         " (SELECT CONTENT_ID FROM #temp) " +
84         
85         "DELETE FROM " +
86         " CONTENT_NODE " +
87         "WHERE " +
88         " CONTENT_ID IN " +
89         " (SELECT CONTENT_ID FROM #temp) " +
90         
91         "DELETE FROM " +
92         " STRUCTURED_CONTENT " +
93         "WHERE " +
94         " CONTENT_ID IN " +
95         " (SELECT CONTENT_ID FROM #temp) " +
96         
97         "DELETE FROM " +
98         " CONTENT_VERSION " +
99         "WHERE " +
100         " INSTANCE_ID IN (SELECT INSTANCE_ID FROM #temp2) " +
101         
102         "DELETE FROM " +
103         " CONTENT_INSTANCE " +
104         "WHERE " +
105         " INSTANCE_ID IN (SELECT INSTANCE_ID FROM #temp2) " +
106
107         "DELETE FROM " +
108         " CONTENT " +
109         "WHERE " +
110         " CONTENT_ID IN " +
111         " (SELECT CONTENT_ID FROM #temp) " +
112         
113         "DELETE FROM " +
114         " CONTENT_ATTRIBUTE_VALUE " +
115         " WHERE " +
116         " CONTENT_ID IN " +
117         " (SELECT CONTENT_ID FROM #temp) " +
118         
119         "DELETE FROM " +
120         " CONTENT_ATTRIBUTE " +
121         " WHERE NOT ( " +
122         " VALUE_ID IN " +
123         " (SELECT VALUE_ID FROM CONTENT_ATTRIBUTE_VALUE ) ) " +
124         
125         
126         "DELETE FROM " +
127         " CONTENT_TREE " +
128         "WHERE " +
129         " LEFT_NR >= @L_NR " +
130         "AND " +
131         " RIGHT_NR <= @R_NR " +
132
133         "UPDATE " +
134         " CONTENT_TREE " +
135         "SET " +
136         " RIGHT_NR = RIGHT_NR - @DIFF " +
137         "WHERE " +
138         " RIGHT_NR > @R_NR " +
139
140         "UPDATE " +
141         " CONTENT_TREE " +
142         "SET " +
143         " LEFT_NR = LEFT_NR - @DIFF " +
144         "WHERE " +
145         " LEFT_NR > @L_NR " +
146         
147         "COMMIT TRANSACTION " +
148         
149         "DROP TABLE #temp " +
150         "DROP TABLE #temp2 ";
151
152     public void initQuery(Connection con) {
153         super.initQuery(
154             con,
155             ISPREPARED,
156             PARAMORDER,
157             PARAMTYPES,
158             SETRELEVANTS,
159             SQLSTRING );
160     }
161 }
162
Popular Tags