01: package com.teamkonzept.webman.mainint.db.queries;
02:
03: import com.teamkonzept.db.*;
04: import java.sql.*;
05: import com.teamkonzept.webman.mainint.WebmanExceptionHandler;
06: import com.teamkonzept.webman.mainint.db.queries.content.*;
07:
08: /**
09: *
10: * @author
11: * @version
12: */
13: public class TKDBContentNewVersionByVersionId extends
14: TKExtendedPrepQuery {
15:
16: public final static boolean ISPREPARED = true;
17:
18: public final static String[] ORDER = { "INSTANCE_ID", "VERSION_ID",
19: "STATUS_ID", "VERS_INFO", "VERS_AUTHOR" };
20:
21: public final static Object[][] TYPES = {
22: { "VERS_INFO", new Integer(Types.VARCHAR) },
23: { "VERS_AUTHOR", new Integer(Types.VARCHAR) } };
24:
25: public final static boolean[] SETRELEVANTS = { false };
26:
27: protected static Class[] queryClasses = {
28: SelectContentIDFromContentVersion.class,
29: SelectMaxContentVersion.class, InsertContentVersion.class };
30:
31: public boolean execute() {
32: try {
33: init(queryClasses); // init query objects
34:
35: boolean isNotOpen = aTKDBConnection.isAutoCommit();
36: if (isNotOpen) {
37: TKDBManager.beginTransaction();
38: }
39:
40: int cont_id = 0;
41: // SELECT @CONT_ID= (SELECT CONTENT_ID FROM CONTENT_VERSION WHERE VERSION_ID = @VERS_ID)
42: // PARAMS: VERSION_ID
43:
44: queries[0].setQueryParams("VERSION_ID", queryParams
45: .get("VERSION_ID"));
46: queries[0].execute();
47: ResultSet rs = queries[0].fetchResultSet();
48: if (rs != null && rs.next()) {
49: cont_id = rs.getInt(1);
50: }
51:
52: int new_vers_id = 1;
53: // SELECT @NEW_VERS_ID=ISNULL(MAX(VERSION_ID)+1, 1) FROM CONTENT_VERSION
54: queries[1].execute();
55: rs = queries[1].fetchResultSet();
56: if (rs != null && rs.next()) {
57: new_vers_id = rs.getInt(1) + 1;
58: }
59:
60: // INSERT INTO CONTENT_VERSION (VERSION_ID, INSTANCE_ID, CONTENT_ID, STATUS_ID, DATE, INFO, AUTHOR)
61: // VALUES (@NEW_VERS_ID, @INST_ID, @CONT_ID, ?, {fn NOW()}, ?, ?)
62: // PARAMS: VERSION_ID, INSTANCE_ID, CONTENT_ID, STATUS_ID, DATE, VERS_INFO, VERS_AUTHOR
63: // TYPES: VERS_INFO: Types.VARCHAR, VERS_AUTHOR: Types.VARCHAR
64: queries[2].setQueryParams("VERSION_ID", new Integer(
65: new_vers_id));
66: queries[2].setQueryParams("INSTANCE_ID", queryParams
67: .get("INSTANCE_ID"));
68: queries[2].setQueryParams("CONTENT_ID",
69: new Integer(cont_id));
70: queries[2].setQueryParams("STATUS_ID", queryParams
71: .get("STATUS_ID"));
72: queries[2].setQueryParams("DATE", new java.sql.Timestamp(
73: System.currentTimeMillis()));
74: queries[2].setQueryParams("VERS_INFO", queryParams
75: .get("VERS_INFO"));
76: queries[2].setQueryParams("VERS_AUTHOR", queryParams
77: .get("VERS_AUTHOR"));
78: queries[2].execute();
79:
80: if (isNotOpen) {
81: aTKDBConnection.commitTransaction(); // commit all changes
82: }
83:
84: } catch (Throwable t) {
85: TKDBManager.safeRollbackTransaction(t);
86: }
87: return hasResults();
88: }
89:
90: public void initQuery(Connection con) {
91: super.initQuery(con, ISPREPARED, ORDER, TYPES, SETRELEVANTS,
92: null);
93: }
94: }
|