KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > webman > mainint > db > queries > TKDBContentNewVersion


1 package com.teamkonzept.webman.mainint.db.queries;
2
3 import com.teamkonzept.db.*;
4 import java.sql.*;
5 import com.teamkonzept.webman.mainint.WebmanExceptionHandler;
6 import com.teamkonzept.webman.mainint.db.queries.content.SelectMaxContentVersion;
7 import com.teamkonzept.webman.mainint.db.queries.content.SelectMaxContentVersionWhere;
8 import com.teamkonzept.webman.mainint.db.queries.content.InsertContentVersion;
9 import com.teamkonzept.webman.mainint.db.queries.content.SelectContentVersionContentInstance;
10
11 public class TKDBContentNewVersion extends TKExtendedPrepQuery
12 {
13
14     public final static boolean ISPREPARED = true;
15
16     public final static String JavaDoc[] PARAMORDER = {
17     "INSTANCE_ID", "STATUS_ID", "VERS_INFO", "VERS_AUTHOR"
18     };
19
20     public final static Object JavaDoc[][] TYPES =
21     { {"VERS_INFO", new Integer JavaDoc(Types.VARCHAR)},
22     {"VERS_AUTHOR", new Integer JavaDoc(Types.VARCHAR)},
23     };
24
25     public final static boolean[] SETRELEVANTS = { false };
26
27     protected static Class JavaDoc[] queryClasses = {
28       SelectMaxContentVersion.class, // [0]
29
SelectMaxContentVersionWhere.class, // [1]
30
InsertContentVersion.class, // [2]
31
SelectContentVersionContentInstance.class // [3]
32
};
33
34     public boolean execute()
35     {
36     try
37     {
38         init(queryClasses); // init query objects
39

40         // SELECT @INST_ID = ?
41
Integer JavaDoc instIdObj = (Integer JavaDoc) queryParams.get("INSTANCE_ID");
42
43         boolean isNotOpen = aTKDBConnection.isAutoCommit();
44         if (isNotOpen)
45         {
46         TKDBManager.beginTransaction();
47         }
48
49         int vers_id = 1;
50         // SELECT @VERS_ID=ISNULL(MAX(VERSION_ID)+1, 1) FROM CONTENT_VERSION
51
queries[0].execute();
52         ResultSet rs = queries[0].fetchResultSet();
53         if (rs != null && rs.next())
54         {
55         vers_id = rs.getInt(1) + 1;
56         }
57
58         //int cont_id = 0;
59
Object JavaDoc contIdObj = null;
60         // SELECT @CONT_ID= ( SELECT MAX (CONTENT_ID) FROM CONTENT_VERSION WHERE INSTANCE_ID = @INST_ID )
61
// PARAMS: INSTANCE_ID
62
queries[1].setQueryParams("INSTANCE_ID", instIdObj);
63         queries[1].execute();
64         rs = queries[1].fetchResultSet();
65         if (rs != null && rs.next())
66         {
67         contIdObj = rs.getObject(1);
68         }
69
70         // INSERT INTO CONTENT_VERSION (VERSION_ID, INSTANCE_ID, CONTENT_ID, STATUS_ID, VERSION_DATE, INFO, AUTHOR)
71
// VALUES (@VERS_ID, @INST_ID, @CONT_ID, ?, {fn NOW()}, ?, ?)
72
// PARAMS: VERSION_ID, INSTANCE_ID, CONTENT_ID, STATUS_ID, DATE (DATE), VERS_INFO (VARCHAR), VERS_AUTHOR (VARCHAR)
73
queries[2].setQueryParams("VERSION_ID", new Integer JavaDoc(vers_id));
74         queries[2].setQueryParams("INSTANCE_ID", instIdObj);
75         queries[2].setQueryParams("CONTENT_ID", contIdObj);
76         queries[2].setQueryParams("STATUS_ID",
77                       queryParams.get("STATUS_ID"));
78         queries[2].setQueryParams("DATE",
79                       new java.sql.Timestamp JavaDoc(System.
80                                  currentTimeMillis
81                                  ()));
82         queries[2].setQueryParams("VERS_INFO",
83                       queryParams.get("VERS_INFO"));
84         queries[2].setQueryParams("VERS_AUTHOR",
85                       queryParams.get("VERS_AUTHOR"));
86         queries[2].execute();
87
88         if (isNotOpen)
89         {
90         aTKDBConnection.commitTransaction(); // commit all changes
91
}
92
93         // SELECT CV.*, CI.NAME FROM CONTENT_VERSION CV, CONTENT_INSTANCE CI
94
// WHERE CV.VERSION_ID = @VERS_ID AND CI.INSTANCE_ID = @INST_ID
95
// PARAMS: VERSION_ID, INSTANCE_ID
96
queries[3].setQueryParams("VERSION_ID", new Integer JavaDoc(vers_id));
97         queries[3].setQueryParams("INSTANCE_ID", instIdObj);
98         queries[3].execute();
99         addResult(queries[3].fetchResultSet());
100
101     }
102     catch(Throwable JavaDoc t)
103     {
104         TKDBManager.safeRollbackTransaction(t);
105     }
106     return hasResults();
107     }
108
109     public void initQuery(Connection con)
110     {
111     super.initQuery(con,
112             ISPREPARED, PARAMORDER, TYPES, SETRELEVANTS, null);
113     }
114 }
115
Popular Tags