001: package com.teamkonzept.webman.mainint.db.queries.oracle;
002:
003: import java.sql.*;
004: import com.teamkonzept.db.*;
005: import com.teamkonzept.webman.mainint.WebmanExceptionHandler;
006: import com.teamkonzept.webman.mainint.db.queries.presentation.*;
007:
008: /**
009: * TKDBPresCompInsert
010: * input "PRESENTATION_ID", "COMPONENT_TYPE", "INTEGRATION_TYPE",
011: * "INTEGRATION_NAME", "INTEGRATION_SHORTNAME",
012: *
013: * ouptut neu erzeugter DS
014: *
015: * erzeugt neuen Eintrag in PRESENTATION_COMPONENT
016: *
017: * @author $Author: uli $
018: * @version $Revision: 1.5 $
019: */
020: public class TKDBPresCompInsert extends TKExtendedPrepQuery {
021:
022: public final static boolean IS_PREPARED = true;
023:
024: public final static String[] PARAMETER_ORDER = { "PRESENTATION_ID",
025: "COMPONENT_TYPE", "INTEGRATION_TYPE", "INTEGRATION_NAME",
026: "INTEGRATION_SHORTNAME" };
027:
028: public final static Object[][] PARAMETER_TYPES = {
029: { "INTEGRATION_NAME", new Integer(Types.VARCHAR) },
030: { "INTEGRATION_SHORTNAME", new Integer(Types.VARCHAR) } };
031:
032: public final static boolean[] SET_RELEVANTS = { true };
033:
034: /* public final static String sqlString =
035: "DECLARE @PIDX int " +
036: "DECLARE @PID int " +
037:
038: "SELECT @PID = ? " +
039:
040: "BEGIN TRANSACTION " +
041:
042: "SELECT " +
043: " @PIDX=ISNULL(MAX(PRESENTATION_COMPONENT_IDX)+1, 0) " +
044: "FROM " +
045: " PRESENTATION_COMPONENT " +
046: "WHERE " +
047: " PRESENTATION_ID = @PID " +
048:
049: "INSERT INTO " +
050: " PRESENTATION_COMPONENT " +
051: " (PRESENTATION_ID, PRESENTATION_COMPONENT_IDX, " +
052: " COMPONENT_TYPE, INTEGRATION_TYPE, " +
053: " INTEGRATION_NAME, INTEGRATION_SHORTNAME) " +
054: "VALUES " +
055: " (@PID, @PIDX, ?, ?, ?, ?) " +
056:
057: "SELECT " +
058: " * " +
059: "FROM " +
060: " PRESENTATION_COMPONENT " +
061: "WHERE " +
062: " PRESENTATION_ID = @PID " +
063: "AND " +
064: " PRESENTATION_COMPONENT_IDX = @PIDX " +
065:
066: "COMMIT "; */
067:
068: protected static Class[] queryClasses = {
069: SelectMaxPresentationComponent.class, // SELECT MAX(PRESENTATION_COMPONTENT) WHERE PRESENTATION_ID = ?
070: InsertPresentationComponent.class, // INSERT INTO PRESENTATION_COMPONENT (PRESENTATION_ID, PRESENTATION_COMPONENT_IDX, COMPONENT_TYPE, INTEGRATION_TYPE, INTEGRATION_NAME, INTEGRATION_SHORTNAME) VALUES (@PID, @PIDX, ?, ?, ?, ?)
071: SelectPresentationComponent.class // SELECT * FROM PRESENTATION_COMPONENT WHERE PRESENTATION_ID = ? AND PRESENTATION_COMPONENT_IDX = ?
072: };
073:
074: /**
075: * Executes the query.
076: *
077: * @return <CODE>true</CODE>, if the query has been executed
078: * successfully, otherwise <CODE>false</CODE>.
079: */
080: public boolean execute() {
081: try {
082: init(queryClasses);
083: Integer presId = (Integer) queryParams
084: .get("PRESENTATION_ID");
085:
086: boolean isNotOpen = aTKDBConnection.isAutoCommit();
087: if (isNotOpen) {
088: TKDBManager.beginTransaction();
089: }
090:
091: queries[0].setQueryParams("PRESENTATION_ID", presId);
092: queries[0].execute(); // SELECT MAX(PRESENTATION_COMPONTENT) FROM PRESENTATION_COMPONENT WHERE PRESENTATION_ID = ?
093: ResultSet rs = queries[0].fetchResultSet();
094: int max = 0;
095: if (rs != null && rs.next()) {
096: max = rs.getInt(1) + 1;
097: }
098: Integer presComp = new Integer(max);
099:
100: queries[1].setQueryParams("PRESENTATION_ID", presId);
101: queries[1].setQueryParams("PRESENTATION_COMPONENT_IDX",
102: presComp);
103: queries[1].setQueryParams("COMPONENT_TYPE", queryParams
104: .get("COMPONENT_TYPE"));
105: queries[1].setQueryParams("INTEGRATION_TYPE", queryParams
106: .get("INTEGRATION_TYPE"));
107: queries[1].setQueryParams("INTEGRATION_NAME", queryParams
108: .get("INTEGRATION_NAME"));
109: queries[1].setQueryParams("INTEGRATION_SHORTNAME",
110: queryParams.get("INTEGRATION_SHORTNAME"));
111: queries[1].execute(); // INSERT INTO PRESENTATION_COMPONENT (PRESENTATION_ID, PRESENTATION_COMPONENT_IDX, COMPONENT_TYPE, INTEGRATION_TYPE, INTEGRATION_NAME, INTEGRATION_SHORTNAME) VALUES (@PID, @PIDX, ?, ?, ?, ?)
112:
113: queries[2].setQueryParams("PRESENTATION_ID", presId);
114: queries[2].setQueryParams("PRESENTATION_COMPONENT_IDX",
115: presComp);
116: queries[2].execute(); // SELECT * FROM PRESENTATION_COMPONENT WHERE PRESENTATION_ID = ? AND PRESENTATION_COMPONENT_IDX = ?
117: addResult(queries[2].fetchResultSet());
118:
119: if (isNotOpen) {
120: TKDBManager.commitTransaction();
121: }
122:
123: } catch (Throwable t) {
124: TKDBManager.safeRollbackTransaction(t);
125: }
126: return hasResults();
127: }
128:
129: /**
130: * Initializes the query with the given connection.
131: *
132: * @param connection the connection.
133: */
134: public void initQuery(Connection connection) {
135: super.initQuery(connection, IS_PREPARED, PARAMETER_ORDER,
136: PARAMETER_TYPES, SET_RELEVANTS, sqlString);
137: }
138:
139: }
|