01: package com.teamkonzept.webman.mainint.db.queries.oracle;
02:
03: import com.teamkonzept.db.*;
04: import java.sql.*;
05: import com.teamkonzept.webman.mainint.db.queries.content.*;
06: import com.teamkonzept.webman.mainint.WebmanExceptionHandler;
07:
08: /*
09: * TKDBContentTreeDependentST
10: * Liefert alle SITE_NODE_ID 's die im CONTENT_TREE zu C_NODE_ID auf
11: * SITE_TREE ref. Christian diese Liste bitte durchgehen und jeden Node einzeln
12: * loeschen
13: * Input: CONTENT_NODE_ID
14: * Output: liste SITE_NODE_ID
15: */
16: public class TKDBContentTreeDependentST extends TKExtendedPrepQuery {
17:
18: public final static boolean isPrepared = true;
19:
20: public final static String[] paramOrder = { "CONTENT_NODE_ID" };
21:
22: public final static Object[][] types = null;
23:
24: public final static boolean[] setRelevants = { true };
25:
26: /* public final static String sqlString =
27: "DECLARE @L_NR INT " +
28: "DECLARE @R_NR INT " +
29:
30: "SELECT " +
31: " @L_NR = LEFT_NR, @R_NR = RIGHT_NR " +
32: "FROM " +
33: " CONTENT_TREE " +
34: "WHERE " +
35: " CONTENT_NODE_ID = ? " +
36:
37: "SELECT DISTINCT " +
38: " ST.SITE_NODE_ID " +
39: "FROM " +
40: " SITE_TREE ST, CONTENT_TREE CT " +
41: "WHERE " +
42: " ST.PG_CONTENT_NODE = CT.CONTENT_NODE_ID " +
43: "AND " +
44: " CT.LEFT_NR >= @L_NR " +
45: "AND " +
46: " CT.RIGHT_NR <= @R_NR "; */
47:
48: protected static Class[] queryClasses = {
49: SelectLeftRightNrFromContentTree.class,
50: SelectDistinctFromSiteTreeContentTree.class };
51:
52: public boolean execute() {
53: try {
54:
55: init(queryClasses); // init query objects
56:
57: Object lnr = null;
58: Object rnr = null;
59: // SELECT @L_NR = LEFT_NR, @R_NR = RIGHT_NR FROM CONTENT_TREE WHERE CONTENT_NODE_ID = ?
60:
61: queries[0].setQueryParams("NODE_ID", queryParams
62: .get("CONTENT_NODE_ID"));
63: queries[0].execute(); // execute first query
64: ResultSet rs = queries[0].fetchResultSet();
65: if (rs != null && rs.next()) {
66: lnr = rs.getObject(1);
67: rnr = rs.getObject(2);
68: }
69:
70: // SELECT DISTINCT ST.SITE_NODE_ID FROM SITE_TREE ST, CONTENT_TREE CT WHERE ST.PG_CONTENT_NODE = CT.CONTENT_NODE_ID AND CT.LEFT_NR >= @L_NR AND CT.RIGHT_NR <= @R_NR
71: queries[1].setQueryParams("LEFT_NR", lnr);
72: queries[1].setQueryParams("RIGHT_NR", rnr);
73: queries[1].execute();
74: addResult(queries[1].fetchResultSet()); // store result for later use
75: } catch (Throwable t) {
76: TKDBManager.safeRollbackTransaction(t);
77: }
78: return hasResults();
79: }
80:
81: public void initQuery(Connection con) {
82: super.initQuery(con, isPrepared, paramOrder, types,
83: setRelevants, null);
84: }
85: }
|