001: /*
002: * $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/webman/mainint/db/queries/Attic/TKDBPresContInsert.java,v 1.6 2001/08/15 13:15:40 markus Exp $
003: *
004: */
005: /**
006: * Jedes Selectstatement erhaelt eine eigene Klasse
007: */package com.teamkonzept.webman.mainint.db.queries;
008:
009: import java.sql.*;
010:
011: import com.teamkonzept.db.*;
012: import com.teamkonzept.webman.mainint.WebmanExceptionHandler;
013: import com.teamkonzept.webman.mainint.db.queries.presentation.*;
014:
015: /*
016: * TKDBPresContInsert
017: * input "PRESENTATION_ID", "COMPONENT_TYPE", "INTEGRATION_TYPE",
018: * "INTEGRATION_NAME", "INTEGRATION_SHORTNAME", "FORM_ID",
019: *
020: * ouptut neu erzeugter DS aus PRESENTATION_CONTENT
021: *
022: * erzeugt neuen Eintrag in PRESENTATION_COMPONENT + PRESENTATION_CONTENT
023: */
024: public class TKDBPresContInsert extends TKExtendedPrepQuery {
025:
026: public final static boolean isPrepared = true;
027:
028: public final static String[] order = { "PRESENTATION_ID",
029: "COMPONENT_TYPE", "INTEGRATION_TYPE", "INTEGRATION_NAME",
030: "INTEGRATION_SHORTNAME", "FORM_ID" };
031:
032: public final static Object[][] types = {
033: { "INTEGRATION_NAME", new Integer(Types.VARCHAR) },
034: { "INTEGRATION_SHORTNAME", new Integer(Types.VARCHAR) } };
035:
036: public final static boolean[] setRelevants = { true };
037:
038: /* public final static String sqlString =
039: "DECLARE @PIDX int " +
040: "DECLARE @PID int " +
041:
042: "SELECT @PID = ? " +
043:
044: "BEGIN TRANSACTION " +
045:
046: "SELECT " +
047: " @PIDX=ISNULL(MAX(PRESENTATION_COMPONENT_IDX)+1, 0) " +
048: "FROM " +
049: " PRESENTATION_COMPONENT " +
050: "WHERE " +
051: " PRESENTATION_ID = @PID " +
052:
053: "INSERT INTO " +
054: " PRESENTATION_COMPONENT " +
055: " (PRESENTATION_ID, PRESENTATION_COMPONENT_IDX, " +
056: " COMPONENT_TYPE, INTEGRATION_TYPE, " +
057: " INTEGRATION_NAME, INTEGRATION_SHORTNAME) " +
058: "VALUES " +
059: " (@PID, @PIDX, ?, ?, ?, ?) " +
060:
061: "INSERT INTO " +
062: " PRESENTATION_CONTENT " +
063: " (PRESENTATION_ID, PRESENTATION_COMPONENT_IDX, " +
064: " FORM_ID) " +
065: "VALUES " +
066: " (@PID, @PIDX, ?) " +
067:
068: "SELECT " +
069: " * " +
070: "FROM " +
071: " PRESENTATION_CONTENT " +
072: "WHERE " +
073: " PRESENTATION_ID = @PID " +
074: "AND " +
075: " PRESENTATION_COMPONENT_IDX = @PIDX " +
076:
077: "COMMIT "; */
078:
079: protected static Class[] queryClasses = {
080: SelectMaxPresentationComponent.class,
081: InsertPresentationComponent.class,
082: InsertPresentationContent.class,
083: SelectPresentationContent.class };
084:
085: public boolean execute() {
086: try {
087: init(queryClasses);
088:
089: Integer presId = (Integer) queryParams
090: .get("PRESENTATION_ID");
091:
092: boolean isNotOpen = aTKDBConnection.isAutoCommit();
093: if (isNotOpen) {
094: TKDBManager.beginTransaction();
095: }
096:
097: // SELECT MAX(PRESENTATION_COMPONENT_IDX) FROM PRESENTATION_COMPONENT WHERE PRESENTATION_ID = @PID
098: queries[0].setQueryParams("PRESENTATION_ID", queryParams
099: .get("PRESENTATION_ID"));
100: queries[0].execute();
101: int pidx = 0;
102: ResultSet rs = queries[0].fetchResultSet();
103: if (rs != null && rs.next()) {
104: pidx = rs.getInt(1) + 1;
105: }
106: Integer presComp = new Integer(pidx);
107:
108: // INSERT INTO PRESENTATION_COMPONENT (PRESENTATION_ID, PRESENTATION_COMPONENT_IDX, COMPONENT_TYPE, INTEGRATION_TYPE, INTEGRATION_NAME, INTEGRATION_SHORTNAME) VALUES (@PID, @PIDX, ?, ?, ?, ?)
109: queries[1].setQueryParams("PRESENTATION_ID", presId);
110: queries[1].setQueryParams("PRESENTATION_COMPONENT_IDX",
111: presComp);
112: queries[1].setQueryParams("COMPONENT_TYPE", queryParams
113: .get("COMPONENT_TYPE"));
114: queries[1].setQueryParams("INTEGRATION_TYPE", queryParams
115: .get("INTEGRATION_TYPE"));
116: queries[1].setQueryParams("INTEGRATION_NAME", queryParams
117: .get("INTEGRATION_NAME"));
118: queries[1].setQueryParams("INTEGRATION_SHORTNAME",
119: queryParams.get("INTEGRATION_SHORTNAME"));
120: queries[1].execute();
121:
122: // INSERT INTO PRESENTATION_CONTENT (PRESENTATION_ID, PRESENTATION_COMPONENT_IDX, FORM_ID) VALUES (@PID, @PIDX, ?)
123: queries[2].setQueryParams("PRESENTATION_ID", presId);
124: queries[2].setQueryParams("PRESENTATION_COMPONENT",
125: presComp);
126: queries[2].setQueryParams("FORM_ID", queryParams
127: .get("FORM_ID"));
128: queries[2].execute();
129:
130: // SELECT * FROM PRESENTATION_CONTENT WHERE PRESENTATION_ID = @PID AND PRESENTATION_COMPONENT_IDX = @PIDX
131: queries[3].setQueryParams("PRESENTATION_ID", presId);
132: queries[3].setQueryParams("PRESENTATION_COMPONENT",
133: presComp);
134: queries[3].execute();
135: addResult(queries[3].fetchResultSet());
136:
137: if (isNotOpen) {
138: TKDBManager.commitTransaction();
139: }
140:
141: } catch (Throwable t) {
142: TKDBManager.safeRollbackTransaction(t);
143: }
144: return hasResults();
145: }
146:
147: public void initQuery(Connection con) {
148: super.initQuery(con, isPrepared, order, types, setRelevants,
149: null);
150: }
151: }
|