001: /*
002: * $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/webman/mainint/db/queries/oracle/Attic/TKDBPresInsert.java,v 1.4 2001/06/11 09:14:12 alex Exp $
003: *
004: */
005: /**
006: * Jedes Selectstatement erhaelt eine eigene Klasse
007: */package com.teamkonzept.webman.mainint.db.queries.oracle;
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: * TKDBPresInsert
017: * input "PRESENTATION_NAME", "PRESENTATION_SHORTNAME",
018: "TEMPLATE_ID",
019: * ouptut neu erzeugter DS
020: *
021: * erzeugt neuen Eintrag in PRESENTATION
022: */
023: public class TKDBPresInsert extends TKExtendedPrepQuery {
024:
025: public final static boolean isPrepared = true;
026:
027: public final static String[] order = { "PRESENTATION_NAME",
028: "PRESENTATION_SHORTNAME", "TEMPLATE_ID" };
029:
030: public final static Object[][] types = {
031: { "PRESENTATION_NAME", new Integer(Types.VARCHAR) },
032: { "PRESENTATION_SHORTNAME", new Integer(Types.VARCHAR) } };
033:
034: public final static boolean[] setRelevants = { true };
035:
036: /* public final static String sqlString =
037: "DECLARE @PID int " +
038:
039: "BEGIN TRANSACTION " +
040:
041: "SELECT " +
042: " @PID=ISNULL(MAX(PRESENTATION_ID)+1, 0) " +
043: "FROM " +
044: " PRESENTATION " +
045:
046: "INSERT INTO " +
047: " PRESENTATION " +
048: " (PRESENTATION_ID, PRESENTATION_NAME, PRESENTATION_SHORTNAME, " +
049: " TEMPLATE_ID) " +
050: "VALUES " +
051: " (@PID, ?, ?, ?) " +
052:
053: "SELECT " +
054: " * " +
055: "FROM " +
056: " PRESENTATION " +
057: "WHERE " +
058: " PRESENTATION_ID = @PID " +
059:
060: "COMMIT ";*/
061:
062: protected static Class[] queryClasses = {
063: SelectMaxPresentation.class, InsertPresentation.class,
064: SelectPresentation.class };
065:
066: public boolean execute() {
067: try {
068: init(queryClasses);
069:
070: boolean isNotOpen = aTKDBConnection.isAutoCommit();
071: if (isNotOpen) {
072: TKDBManager.beginTransaction();
073: }
074:
075: // SELECT @PID=ISNULL(MAX(PRESENTATION_ID)+1, 0) FROM PRESENTATION
076: queries[0].execute();
077: int pid = 0;
078: ResultSet rs = queries[0].fetchResultSet();
079: if (rs != null && rs.next()) {
080: pid = rs.getInt(1) + 1;
081: }
082: Integer presentationId = new Integer(pid);
083:
084: // INSERT INTO PRESENTATION (PRESENTATION_ID, PRESENTATION_NAME, PRESENTATION_SHORTNAME, TEMPLATE_ID) VALUES (@PID, ?, ?, ?)
085: queries[1]
086: .setQueryParams("PRESENTATION_ID", presentationId);
087: queries[1].setQueryParams("PRESENTATION_NAME", queryParams
088: .get("PRESENTATION_NAME"));
089: queries[1].setQueryParams("PRESENTATION_SHORTNAME",
090: queryParams.get("PRESENTATION_SHORTNAME"));
091: queries[1].setQueryParams("TEMPLATE_ID", queryParams
092: .get("TEMPLATE_ID"));
093: queries[1].execute();
094: // SELECT * FROM PRESENTATION WHERE PRESENTATION_ID = @PID
095: queries[2]
096: .setQueryParams("PRESENTATION_ID", presentationId);
097: queries[2].execute();
098: addResult(queries[2].fetchResultSet());
099:
100: if (isNotOpen) {
101: TKDBManager.commitTransaction();
102: }
103:
104: } catch (Throwable t) {
105: TKDBManager.safeRollbackTransaction(t);
106: }
107: return hasResults();
108: }
109:
110: public void initQuery(Connection con) {
111: super.initQuery(con, isPrepared, order, types, setRelevants,
112: null);
113: }
114: }
|