KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > field > db > queries > TKDBContentNew


1 package com.teamkonzept.field.db.queries;
2
3 import com.teamkonzept.db.*;
4 import com.teamkonzept.webman.mainint.db.queries.field.SelectMaxVersionIdFromContentVersion;
5 import com.teamkonzept.webman.mainint.db.queries.field.SelectMaxContentIdFromContent;
6 import com.teamkonzept.webman.mainint.db.queries.field.InsertContentIdContent;
7 import com.teamkonzept.webman.mainint.db.queries.content.InsertContentVersion;
8 import com.teamkonzept.webman.mainint.db.queries.field.SelectFromContentVersion;
9
10 import java.sql.*;
11
12 import org.apache.log4j.Category;
13
14 /**
15  * @author Markus Freitag
16  * @version 1.0
17  */

18 public class TKDBContentNew extends TKExtendedPrepQuery {
19
20     /** Logging Category */
21     private static Category cat = Category.getInstance(TKDBContentNew.class.getName());
22     public final static boolean IS_PREPARED = true;
23     public final static String JavaDoc[] PARAM_ORDER =
24         { "INSTANCE_ID", "STATUS_ID", "VERS_INFO", "VERS_AUTHOR" };
25
26     public final static Object JavaDoc[][] PARAM_TYPES = {
27        {"VERS_INFO", new Integer JavaDoc(Types.VARCHAR)},
28        {"VERS_AUTHOR", new Integer JavaDoc(Types.VARCHAR)} };
29
30     public final static boolean[] SET_RELEVANTS = { true };
31
32     protected static Class JavaDoc[] queryClasses = {
33         SelectMaxVersionIdFromContentVersion.class, //[0]
34
SelectMaxContentIdFromContent.class, //[1]
35
InsertContentIdContent.class, //[2]
36
InsertContentVersion.class, //[3]
37
SelectFromContentVersion.class //[4]
38
};
39
40     public boolean execute()
41     {
42
43         try
44         {
45             init(queryClasses); // init query objects
46

47             boolean isNotOpen = aTKDBConnection.isAutoCommit();
48             if (isNotOpen)
49             {
50               TKDBManager.beginTransaction(); // begin transaction
51
}
52
53             ResultSet rs = null;
54
55             // get max(version_id) from content_version
56
queries[0].execute();
57             rs = queries[0].fetchResultSet();
58             int next_version_id = 1;
59             if (rs.next()) {
60               next_version_id = rs.getInt(1) + 1;
61             }
62             Integer JavaDoc versionId = new Integer JavaDoc(next_version_id);
63
64             // get max(content_id) from content
65
queries[1].execute();
66             rs = queries[1].fetchResultSet();
67             int next_content_id = 1;
68             if (rs.next()) {
69               next_content_id = rs.getInt(1) + 1;
70             }
71             Integer JavaDoc contentId = new Integer JavaDoc(next_content_id);
72
73             // insert into content
74
queries[2].setQueryParams("CONT_ID", contentId);
75             queries[2].execute();
76
77             // insert into content_version
78
//"VERSION_ID", "INSTANCE_ID", "CONTENT_ID", "STATUS_ID", "DATE", "VERS_INFO", "VERS_AUTHOR"
79
queries[3].setQueryParams("VERSION_ID",versionId);
80             queries[3].setQueryParams("INSTANCE_ID",queryParams.get("INSTANCE_ID"));
81             queries[3].setQueryParams("CONTENT_ID",contentId);
82             queries[3].setQueryParams("STATUS_ID",queryParams.get("STATUS_ID"));
83             queries[3].setQueryParams("DATE", new Timestamp(System.currentTimeMillis()));
84             queries[3].setQueryParams("VERS_INFO",queryParams.get("VERS_INFO"));
85             queries[3].setQueryParams("VERS_AUTHOR",queryParams.get("VERS_AUTHOR"));
86             queries[3].execute();
87
88             // SELECT CV.*, CI.NAME FROM CONTENT_VERSION CV, CONTENT_INSTANCE CI WHERE CV.VERSION_ID = ? AND CI.INSTANCE_ID = ?
89
queries[4].setQueryParams("VERS_ID", versionId);
90             queries[4].setQueryParams("INST_ID", queryParams.get("INSTANCE_ID"));
91             queries[4].execute();
92             rs = queries[4].fetchResultSet();
93             addResult(rs);
94
95             // COMMIT TRANSACTION
96
if (isNotOpen)
97             {
98             aTKDBConnection.commitTransaction(); // commit all changes
99
}
100
101         }
102         catch(Throwable JavaDoc t)
103         {
104             cat.error("Error while inserting", t);
105             TKDBManager.safeRollbackTransaction(t);
106         }
107         return hasResults();
108     }
109
110     public void initQuery(Connection con) {
111         super.initQuery(
112             con,
113             IS_PREPARED,
114             PARAM_ORDER,
115             PARAM_TYPES,
116             SET_RELEVANTS,
117             null);
118     }
119 }
120
Popular Tags