KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.teamkonzept.webman.mainint.db.queries.oracle;
2
3 import com.teamkonzept.db.*;
4 import java.sql.*;
5 import com.teamkonzept.webman.mainint.db.queries.content.*;
6 import com.teamkonzept.webman.mainint.WebmanExceptionHandler;
7
8 /*
9  * TKDBContentTreeIsChild
10  * Sagt ob die CHILD_ID ein Nachfolger von PARENT_ID im CONTENT_TREE ist
11  *
12  * Input: PARENT_ID CHILD_ID
13  * Output: ISCHILD = 1 oder 0
14  */

15 public class TKDBContentTreeIsChild extends TKExtendedPrepQuery
16 {
17
18     public final static boolean isPrepared = true;
19
20     public final static String JavaDoc[] paramOrder = { "CHILD_ID", "PARENT_ID" };
21
22     public final static Object JavaDoc[][] types = null;
23
24     public final static boolean[] setRelevants = { true };
25
26 /* public final static String sqlString =
27         "DECLARE @ISCHILD int " +
28         "DECLARE @LNR int " +
29         "DECLARE @RNR int " +
30
31         "SELECT " +
32         " @LNR = LEFT_NR, " +
33         " @RNR = RIGHT_NR " +
34         "FROM " +
35         " CONTENT_TREE " +
36         "WHERE " +
37         " CONTENT_NODE_ID = ? " +
38
39         "SELECT @ISCHILD = 0 " +
40
41         "IF EXISTS ( " +
42             "SELECT " +
43             " 1 " +
44             "FROM " +
45             " CONTENT_TREE " +
46             "WHERE " +
47             " LEFT_NR < @LNR " +
48             "AND " +
49             " RIGHT_NR > @RNR " +
50             "AND " +
51             " CONTENT_NODE_ID = ? " +
52             ") " +
53                 " SELECT @ISCHILD = 1 " +
54         "SELECT @ISCHILD AS ISCHILD "; */

55
56     protected static Class JavaDoc[] queryClasses = {
57     SelectLeftRightNrFromContentTree.class, // [0]
58
SelectChildExists.class, // [1]
59
SelectIsChild.class // [2]
60
};
61
62     public boolean execute()
63     {
64     try
65     {
66         init(queryClasses); // init query objects
67

68         Integer JavaDoc childId = (Integer JavaDoc) queryParams.get("CHILD_ID");
69         Integer JavaDoc parentId = (Integer JavaDoc) queryParams.get("PARENT_ID");
70
71         // OLD: SELECT @LNR = LEFT_NR, @RNR = RIGHT_NR FROM CONTENT_TREE WHERE CONTENT_NODE_ID = ?
72
// NEW: SELECT LEFT_NR, RIGHT_NR FROM CONTENT_TREE WHERE CONTENT_NODE_ID = ?
73
// CLASS: SelectLeftRightNrFromContentTree.class
74
// PARAMS: NODE_ID
75
// [0]
76
queries[0].setQueryParams("NODE_ID", childId);
77           queries[0].execute();
78         Object JavaDoc lnr = null;
79         Object JavaDoc rnr = null;
80         ResultSet rs = queries[0].fetchResultSet();
81         if (rs != null && rs.next())
82         {
83         lnr = rs.getObject(1);
84         rnr = rs.getObject(2);
85         }
86
87         // SELECT @ISCHILD = 0
88
// IF EXISTS (
89
// SELECT 1 FROM CONTENT_TREE WHERE LEFT_NR < @LNR AND RIGHT_NR > @RNR AND CONTENT_NODE_ID = ?
90
// CLASS: SelectChildExists.class
91
// PARAMS: LEFT_NR, RIGHT_NR, PARENT_ID
92
// [1]
93
// )
94
// SELECT @ISCHILD = 1
95
// SELECT @ISCHILD AS ISCHILD
96
// CLASS: SelectIsChild.class
97
// PARAMS: IS_CHILD
98
// [2]
99
queries[1].setQueryParams("LEFT_NR", lnr);
100           queries[1].setQueryParams("RIGHT_NR", rnr);
101           queries[1].setQueryParams("PARENT_ID", parentId);
102           queries[1].execute();
103           rs = queries[1].fetchResultSet();
104         int isChild = 0;
105         if (rs != null && rs.next())
106         {
107         isChild = 1;
108         }
109         queries[2].setQueryParams("IS_CHILD", new Integer JavaDoc(isChild));
110         queries[2].execute();
111         addResult(queries[2].fetchResultSet());
112
113     }
114     catch(Throwable JavaDoc t)
115     {
116         TKDBManager.safeRollbackTransaction(t);
117     }
118     return hasResults();
119     }
120
121     public void initQuery(Connection con)
122     {
123     super.initQuery(con,
124             isPrepared, paramOrder, types, setRelevants, null);
125     }
126 }
127
Popular Tags