001: /*
002: * $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/webman/mainint/db/queries/oracle/Attic/TKDBDocContentPut.java,v 1.7 2001/06/11 09:14:12 alex Exp $
003: *
004: */
005: package com.teamkonzept.webman.mainint.db.queries.oracle;
006:
007: import java.sql.*;
008:
009: import com.teamkonzept.db.*;
010: import com.teamkonzept.webman.mainint.db.queries.content.*;
011: import com.teamkonzept.webman.mainint.WebmanExceptionHandler;
012: import com.teamkonzept.lib.TKNull;
013:
014: import org.apache.log4j.Category;
015:
016: /*
017: * TKDBDocContentPut
018: * Schreibt einen DS fuer einen Document_Content
019: *
020: * Input: Kompl. DS
021: * Output: none
022: */
023: public class TKDBDocContentPut extends TKExtendedPrepQuery {
024:
025: private final static Category cat = Category
026: .getInstance(TKDBDocContentPut.class.getName());
027:
028: public final static boolean isPrepared = true;
029:
030: public final static String[] paramOrder = { "SELECTION_TYPE",
031: "SELECTION_DATA", "SITE_NODE_ID", "SITE_NODE_DOC_IDX",
032: "PRESENTATION_COMPONENT_IDX", "CONTENT_NODE_ID" };
033:
034: public final static Object[][] types = { { "SELECTION_TYPE",
035: new Integer(Types.VARCHAR) } };
036:
037: public final static boolean[] setRelevants = { false };
038:
039: /* public final static String sqlString =
040: "DECLARE @ST VARCHAR(80) " +
041: "DECLARE @SID INT " +
042:
043: "SELECT @ST = ? " +
044: "SELECT @SID = NULL " +
045:
046: "BEGIN TRANSACTION " +
047:
048: "IF ( @ST IS NOT NULL ) " +
049: "BEGIN " +
050: "SELECT " +
051: " @SID = ISNULL(MAX(SELECTION_ID) + 1,0) " +
052: "FROM " +
053: " CONTENT_SELECTION " +
054:
055: "INSERT INTO "+
056: " CONTENT_SELECTION " +
057: " (SELECTION_ID, SELECTION_TYPE, SELECTION_DATA) " +
058: "VALUES " +
059: " (@SID, @ST, ?) " +
060: "END " +
061:
062: "INSERT INTO " +
063: " DOCUMENT_CONTENT " +
064: " (SITE_NODE_ID, SITE_NODE_DOC_IDX, " +
065: " PRESENTATION_COMPONENT_IDX, CONTENT_NODE_ID, " +
066: " SELECTION_ID ) " +
067: "VALUES " +
068: "(?,?,?,?, @SID) " +
069:
070: "COMMIT TRANSACTION "; */
071:
072: protected static Class[] queryClasses = {
073: SelectMaxContentSelection.class,
074: InsertContentSelection.class, InsertDocumentContent.class };
075:
076: public boolean execute() {
077: try {
078:
079: init(queryClasses); // init query objects
080:
081: Object st = queryParams.get("SELECTION_TYPE");
082:
083: cat.debug("SELECTION_TYPE [st]=" + st);
084:
085: // BEGIN TRANSACTION
086: boolean isNotOpen = aTKDBConnection.isAutoCommit();
087: if (isNotOpen) {
088: TKDBManager.beginTransaction(); // begin transaction
089: }
090:
091: Integer sid = null;
092: int max = 0;
093: // IF ( @ST IS NOT NULL )
094: if (st != null && !(st instanceof TKNull)) {
095: cat.debug("SELECTION_TYPE is NOT null");
096: // SELECT @SID = ISNULL(MAX(SELECTION_ID) + 1,0) FROM CONTENT_SELECTION
097: queries[0].execute();
098: ResultSet rs = queries[0].fetchResultSet();
099: if (rs != null && rs.next()) {
100: max = rs.getInt(1) + 1;
101: }
102:
103: sid = new Integer(max);
104: cat.debug("SELECTION_ID [sid]=" + sid);
105:
106: // INSERT INTO CONTENT_SELECTION (SELECTION_ID, SELECTION_TYPE, SELECTION_DATA) VALUES (@SID, @ST, ?)
107: // PARAMS: SELECTION_ID, SELECTION_TYPE (VARCHAR), SELECTION_DATA
108: queries[1].setQueryParams("SELECTION_ID", sid);
109: queries[1].setQueryParams("SELECTION_TYPE", st);
110: queries[1].setQueryParams("SELECTION_DATA", queryParams
111: .get("SELECTION_DATA"));
112: queries[1].execute();
113: // END (of if)
114: }
115:
116: // INSERT INTO DOCUMENT_CONTENT (SITE_NODE_ID, SITE_NODE_DOC_IDX, PRESENTATION_COMPONENT_IDX, CONTENT_NODE_ID, SELECTION_ID ) VALUES (?,?,?,?, @SID)
117: // PARAMS: SITE_NODE_ID, SITE_NODE_DOC_IDX, PRESENTATION_COMPONENT_IDX, CONTENT_NODE_ID, SELECTION_ID
118: queries[2].setQueryParams("SITE_NODE_ID", queryParams
119: .get("SITE_NODE_ID"));
120: queries[2].setQueryParams("SITE_NODE_DOC_IDX", queryParams
121: .get("SITE_NODE_DOC_IDX"));
122: queries[2].setQueryParams("PRESENTATION_COMPONENT_IDX",
123: queryParams.get("PRESENTATION_COMPONENT_IDX"));
124: queries[2].setQueryParams("CONTENT_NODE_ID", queryParams
125: .get("CONTENT_NODE_ID"));
126: queries[2].setQueryParams("SELECTION_ID", sid);
127: queries[2].execute();
128:
129: // COMMIT TRANSACTION
130: if (isNotOpen) {
131: aTKDBConnection.commitTransaction(); // commit all changes
132: }
133:
134: } catch (Throwable t) {
135: TKDBManager.safeRollbackTransaction(t);
136: }
137: return hasResults();
138: }
139:
140: public void initQuery(Connection con) {
141: super.initQuery(con, isPrepared, paramOrder, types,
142: setRelevants, sqlString);
143: }
144: }
|