KickJava   Java API By Example, From Geeks To Geeks.

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


1 /**
2  * Jedes Selectstatement erhaelt eine eigene Klasse
3  */

4 package com.teamkonzept.webman.mainint.db.queries.oracle;
5
6 import com.teamkonzept.db.*;
7 import java.sql.*;
8 import com.teamkonzept.webman.mainint.WebmanExceptionHandler;
9
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     /*public final static String sqlString =
28        "DECLARE @VERS_ID INT " +
29        "DECLARE @CONT_ID INT " +
30        "DECLARE @INST_ID INT " +
31
32        "BEGIN TRANSACTION " +
33
34        "SELECT @INST_ID = ? " +
35
36        "SELECT @VERS_ID=ISNULL(MAX(VERSION_ID)+1, 1) " +
37        "FROM CONTENT_VERSION " +
38
39        "SELECT @CONT_ID= " +
40        " ( " +
41        " SELECT MAX (CONTENT_ID) " +
42        " FROM CONTENT_VERSION "+
43        " WHERE INSTANCE_ID = @INST_ID " +
44        " ) " +
45
46        "INSERT INTO CONTENT_VERSION (VERSION_ID, INSTANCE_ID, CONTENT_ID, STATUS_ID, VERSION_DATE, INFO, AUTHOR) " +
47        " VALUES (@VERS_ID, @INST_ID, @CONT_ID, ?, {fn NOW()}, ?, ?) " +
48
49        "COMMIT TRANSACTION " +
50
51        "SELECT CV.*, CI.NAME FROM CONTENT_VERSION CV, CONTENT_INSTANCE CI " +
52        "WHERE CV.VERSION_ID = @VERS_ID AND CI.INSTANCE_ID = @INST_ID "; */

53
54     protected static Class JavaDoc[] queryClasses = {
55     com.teamkonzept.webman.mainint.db.queries.content.SelectMaxContentVersion.class, // [0]
56
com.teamkonzept.webman.mainint.db.queries.content.SelectMaxContentVersionWhere.class, // [1]
57
com.teamkonzept.webman.mainint.db.queries.content.InsertContentVersion.class, // [2]
58
com.teamkonzept.webman.mainint.db.queries.content.SelectContentVersionContentInstance.class // [3]
59
};
60
61     public boolean execute()
62     {
63     try
64     {
65         init(queryClasses); // init query objects
66

67         // SELECT @INST_ID = ?
68
Integer JavaDoc instIdObj = (Integer JavaDoc) queryParams.get("INSTANCE_ID");
69
70         boolean isNotOpen = aTKDBConnection.isAutoCommit();
71         if (isNotOpen)
72         {
73         TKDBManager.beginTransaction();
74         }
75
76         int vers_id = 1;
77         // SELECT @VERS_ID=ISNULL(MAX(VERSION_ID)+1, 1) FROM CONTENT_VERSION
78
queries[0].execute();
79         ResultSet rs = queries[0].fetchResultSet();
80         if (rs != null && rs.next())
81         {
82         vers_id = rs.getInt(1) + 1;
83         }
84
85         //int cont_id = 0;
86
Object JavaDoc contIdObj = null;
87         // SELECT @CONT_ID= ( SELECT MAX (CONTENT_ID) FROM CONTENT_VERSION WHERE INSTANCE_ID = @INST_ID )
88
// PARAMS: INSTANCE_ID
89
queries[1].setQueryParams("INSTANCE_ID", instIdObj);
90         queries[1].execute();
91         rs = queries[1].fetchResultSet();
92         if (rs != null && rs.next())
93         {
94         contIdObj = rs.getObject(1);
95         }
96
97         // INSERT INTO CONTENT_VERSION (VERSION_ID, INSTANCE_ID, CONTENT_ID, STATUS_ID, VERSION_DATE, INFO, AUTHOR)
98
// VALUES (@VERS_ID, @INST_ID, @CONT_ID, ?, {fn NOW()}, ?, ?)
99
// PARAMS: VERSION_ID, INSTANCE_ID, CONTENT_ID, STATUS_ID, DATE (DATE), VERS_INFO (VARCHAR), VERS_AUTHOR (VARCHAR)
100
queries[2].setQueryParams("VERSION_ID", new Integer JavaDoc(vers_id));
101         queries[2].setQueryParams("INSTANCE_ID", instIdObj);
102         queries[2].setQueryParams("CONTENT_ID", contIdObj);
103         queries[2].setQueryParams("STATUS_ID",
104                       queryParams.get("STATUS_ID"));
105         queries[2].setQueryParams("DATE",
106                       new java.sql.Timestamp JavaDoc(System.
107                                  currentTimeMillis
108                                  ()));
109         queries[2].setQueryParams("VERS_INFO",
110                       queryParams.get("VERS_INFO"));
111         queries[2].setQueryParams("VERS_AUTHOR",
112                       queryParams.get("VERS_AUTHOR"));
113         queries[2].execute();
114
115         if (isNotOpen)
116         {
117         aTKDBConnection.commitTransaction(); // commit all changes
118
}
119
120         // SELECT CV.*, CI.NAME FROM CONTENT_VERSION CV, CONTENT_INSTANCE CI
121
// WHERE CV.VERSION_ID = @VERS_ID AND CI.INSTANCE_ID = @INST_ID
122
// PARAMS: VERSION_ID, INSTANCE_ID
123
queries[3].setQueryParams("VERSION_ID", new Integer JavaDoc(vers_id));
124         queries[3].setQueryParams("INSTANCE_ID", instIdObj);
125         queries[3].execute();
126         addResult(queries[3].fetchResultSet());
127
128     }
129     catch(Throwable JavaDoc t)
130     {
131         TKDBManager.safeRollbackTransaction(t);
132     }
133     return hasResults();
134     }
135
136     public void initQuery(Connection con)
137     {
138     super.initQuery(con,
139             isPrepared, paramOrder, types, setRelevants, null);
140     }
141 }
142
Popular Tags