KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > field > db > queries > oracle > TKDBContentValuePut


1 package com.teamkonzept.field.db.queries.oracle;
2
3 import com.teamkonzept.db.*;
4 import com.teamkonzept.webman.mainint.db.queries.field.InsertEmptyClob;
5 import com.teamkonzept.webman.mainint.db.queries.field.SelectEmptyClob;
6
7 import java.sql.*;
8
9 import oracle.sql.CLOB;
10
11 import org.apache.log4j.Category;
12
13 public class TKDBContentValuePut extends TKExtendedPrepQuery {
14
15     private static Category cat = Category.getInstance(TKDBContentValuePut.class.getName());
16
17     public final static boolean IS_PREPARED =
18         true;
19     
20     public final static String JavaDoc[] PARAM_ORDER =
21         { "CONTENT_ID", "CONTENT_NODE_ID", "IDX", "VALUE", MEDIA_ID };
22     
23     public final static Object JavaDoc[][] PARAM_TYPES =
24         null;
25         
26     public final static boolean[] SET_RELEVANTS =
27         { false };
28         
29    protected static Class JavaDoc[] queryClasses = {
30     InsertEmptyClob.class, // [0]
31
SelectEmptyClob.class // [1]
32
};
33
34     public boolean execute()
35     {
36     try
37     {
38         init(queryClasses); // init query objects
39

40         boolean isNotOpen = aTKDBConnection.isAutoCommit();
41         if (isNotOpen)
42         {
43         TKDBManager.beginTransaction(); // begin transaction
44
}
45
46         // insert am empty clob locator...
47
// NOTE: the (sub-)query below uses Oracle extensions to JDBC!
48
queries[0].setQueryParams("CONTENT_ID", queryParams.get("CONTENT_ID"));
49             queries[0].setQueryParams("CONTENT_NODE_ID", queryParams.get("CONTENT_NODE_ID"));
50             queries[0].setQueryParams("IDX", queryParams.get("IDX"));
51             queries[0].setQueryParams(MEDIA_ID, queryParams.get(MEDIA_ID));
52         queries[0].execute();
53
54         // retrieve newly inserted (empty) clob and set "VALUE"
55
queries[1].setQueryParams("CONTENT_ID", queryParams.get("CONTENT_ID"));
56             queries[1].setQueryParams("CONTENT_NODE_ID", queryParams.get("CONTENT_NODE_ID"));
57             queries[1].setQueryParams("IDX", queryParams.get("IDX"));
58         queries[1].execute();
59         ResultSet rs = queries[1].fetchResultSet();
60         if (rs.next()) {
61         CLOB clob = (CLOB) rs.getClob(1);
62         String JavaDoc value = (String JavaDoc) queryParams.get("VALUE");
63         int written = clob.putString(1, value);
64         cat.debug(written + " chars written");
65         }
66
67         // COMMIT TRANSACTION
68
if (isNotOpen)
69         {
70         aTKDBConnection.commitTransaction(); // commit all changes
71
}
72
73     }
74     catch(Throwable JavaDoc t)
75     {
76         cat.error("Error while inserting clob data", t);
77         TKDBManager.safeRollbackTransaction(t);
78     }
79     return hasResults();
80     }
81
82     public void initQuery(Connection con) {
83         super.initQuery(
84             con,
85             IS_PREPARED,
86             PARAM_ORDER,
87             PARAM_TYPES,
88             SET_RELEVANTS,
89             null);
90     }
91 }
92
Popular Tags