KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.teamkonzept.webman.mainint.db.queries.postgresql;
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  * @author
16  * @version
17  */

18 public class TKDBContentTreeIsChild extends TKExtendedPrepQuery
19 {
20
21     public final static boolean ISPREPARED = true;
22     public final static String JavaDoc[] PARAMORDER = { "CHILD_ID", "PARENT_ID" };
23     public final static Object JavaDoc[][] TYPES = null;
24     public final static boolean[] SETRELEVANTS = { true };
25
26     protected static Class JavaDoc[] queryClasses = {
27         SelectLeftRightNrFromContentTree.class, // [0]
28
SelectChildExists.class, // [1]
29
SelectIsChild.class // [2]
30
};
31
32     public boolean execute()
33     {
34     try
35     {
36         init(queryClasses); // init query objects
37

38         Integer JavaDoc childId = (Integer JavaDoc) queryParams.get("CHILD_ID");
39         Integer JavaDoc parentId = (Integer JavaDoc) queryParams.get("PARENT_ID");
40
41         // OLD: SELECT @LNR = LEFT_NR, @RNR = RIGHT_NR FROM CONTENT_TREE WHERE CONTENT_NODE_ID = ?
42
// NEW: SELECT LEFT_NR, RIGHT_NR FROM CONTENT_TREE WHERE CONTENT_NODE_ID = ?
43
// CLASS: SelectLeftRightNrFromContentTree.class
44
// PARAMS: NODE_ID
45
// [0]
46
queries[0].setQueryParams("NODE_ID", childId);
47           queries[0].execute();
48         Object JavaDoc lnr = null;
49         Object JavaDoc rnr = null;
50         ResultSet rs = queries[0].fetchResultSet();
51         if (rs != null && rs.next())
52         {
53         lnr = rs.getObject(1);
54         rnr = rs.getObject(2);
55         }
56
57         // SELECT @ISCHILD = 0
58
// IF EXISTS (
59
// SELECT 1 FROM CONTENT_TREE WHERE LEFT_NR < @LNR AND RIGHT_NR > @RNR AND CONTENT_NODE_ID = ?
60
// CLASS: SelectChildExists.class
61
// PARAMS: LEFT_NR, RIGHT_NR, PARENT_ID
62
// [1]
63
// )
64
// SELECT @ISCHILD = 1
65
// SELECT @ISCHILD AS ISCHILD
66
// CLASS: SelectIsChild.class
67
// PARAMS: IS_CHILD
68
// [2]
69
queries[1].setQueryParams("LEFT_NR", lnr);
70           queries[1].setQueryParams("RIGHT_NR", rnr);
71           queries[1].setQueryParams("PARENT_ID", parentId);
72           queries[1].execute();
73           rs = queries[1].fetchResultSet();
74         int isChild = 0;
75         if (rs != null && rs.next())
76         {
77         isChild = 1;
78         }
79         queries[2].setQueryParams("IS_CHILD", new Integer JavaDoc(isChild));
80         queries[2].execute();
81         addResult(queries[2].fetchResultSet());
82
83     }
84     catch(Throwable JavaDoc t)
85     {
86         TKDBManager.safeRollbackTransaction(t);
87     }
88     return hasResults();
89     }
90
91     public void initQuery(Connection con)
92     {
93         super.initQuery(con,ISPREPARED, PARAMORDER, TYPES, SETRELEVANTS, null);
94     }
95 }
96
Popular Tags