01: package com.teamkonzept.webman.mainint.db.queries.oracle;
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: public class TKContentInstanceNew extends TKExtendedPrepQuery {
09:
10: public final static boolean isPrepared = true;
11:
12: public final static String[] paramOrder = { "CONTENT_NODE_ID",
13: "INST_NAME" };
14:
15: public final static Object[][] types = { { "INST_NAME",
16: new Integer(Types.VARCHAR) } };
17:
18: public final static boolean[] setRelevants = { true };
19:
20: /* public final static String sqlString =
21: "DECLARE @N_ID INT " +
22: "DECLARE @INST_ID INT " +
23:
24: "BEGIN TRANSACTION " +
25:
26: "SELECT @N_ID = ? " +
27:
28: "SELECT @INST_ID=ISNULL(MAX(INSTANCE_ID)+1, 1) " +
29: "FROM CONTENT_INSTANCE " +
30:
31: "INSERT INTO CONTENT_INSTANCE (CONTENT_NODE_ID, INSTANCE_ID, NAME) " +
32: "VALUES(@N_ID, @INST_ID, ?) " +
33:
34: "COMMIT TRANSACTION " +
35:
36: "SELECT * FROM CONTENT_INSTANCE " +
37: "WHERE INSTANCE_ID = @INST_ID "; */
38:
39: protected static Class[] queryClasses = {
40: SelectMaxFromContentInstance.class,
41: InsertContentInstance.class, SelectAllContentInstance.class };
42:
43: public boolean execute() {
44: try {
45: init(queryClasses); // init query objects
46:
47: Integer contentNodeId = (Integer) queryParams
48: .get("CONTENT_NODE_ID");
49: String instanceName = (String) queryParams.get("INST_NAME");
50:
51: boolean isNotOpen = aTKDBConnection.isAutoCommit();
52: if (isNotOpen) {
53: TKDBManager.beginTransaction();
54: }
55:
56: int inst_id = 1;
57: // SELECT @INST_ID=ISNULL(MAX(INSTANCE_ID)+1, 1) FROM CONTENT_INSTANCE
58: queries[0].execute();
59: ResultSet rs = queries[0].fetchResultSet();
60: if (rs != null && rs.next()) {
61: inst_id = rs.getInt(1) + 1;
62: }
63: Integer instanceId = new Integer(inst_id);
64:
65: // INSERT INTO CONTENT_INSTANCE (CONTENT_NODE_ID, INSTANCE_ID, NAME)
66: // VALUES(@N_ID, @INST_ID, ?)
67: // PARAMS: N_ID, INST_ID, INST_NAME (VARCHAR)
68: queries[1].setQueryParams("N_ID", contentNodeId);
69: queries[1].setQueryParams("INST_ID", instanceId);
70: queries[1].setQueryParams("INST_NAME", instanceName);
71: queries[1].execute();
72:
73: if (isNotOpen) {
74: aTKDBConnection.commitTransaction(); // commit all changes
75: }
76:
77: // SELECT * FROM CONTENT_INSTANCE WHERE INSTANCE_ID = @INST_ID "
78: // PARAMS: INST_ID
79: queries[2].setQueryParams("INST_ID", instanceId);
80: queries[2].execute();
81: addResult(queries[2].fetchResultSet());
82:
83: } catch (Throwable t) {
84: TKDBManager.safeRollbackTransaction(t);
85: }
86: return hasResults();
87: }
88:
89: public void initQuery(Connection con) {
90: super.initQuery(con, isPrepared, paramOrder, types,
91: setRelevants, null);
92: }
93: }
|