001: package de.webman.content.db.queries;
002:
003: import com.teamkonzept.db.*;
004: import java.sql.*;
005:
006: import de.webman.content.db.queries.SelectNextIdFromContentAttribute;
007: import de.webman.content.db.queries.InsertContentAttribute;
008: import de.webman.content.db.queries.InsertContentAttributeValue;
009: import de.webman.content.db.queries.SelectAttributeContentAttribute;
010:
011: /**
012: * <pre>
013: * Used Queries:
014: * {@link de.webman.content.db.queries.SelectNextIdFromContentAttribute SelectNextIdFromContentAttribute}
015: * {@link de.webman.content.db.queries.InsertContentAttribute InsertContentAttribute}
016: * {@link de.webman.content.db.queries.InsertContentAttributeValue InsertContentAttributeValue}
017: * {@link de.webman.content.db.queries.SelectAttributeContentAttribute SelectAttributeContentAttribute}
018: * Params:
019: * { "CONTENT_ID", "ATTRIBUTE_ID", "STR_VALUE", "INT_VALUE", "DATE_VALUE" }
020: * </pre>
021: * @author
022: * @version
023: */
024: public class TKDBContentAttributePut extends TKExtendedPrepQuery {
025:
026: public final static boolean ISPREPARED = true;
027: public final static String[] PARAMORDER = { "CONTENT_ID",
028: "ATTRIBUTE_ID", "STR_VALUE", "INT_VALUE", "DATE_VALUE" };
029:
030: public final static Object[][] PARAMTYPES = {
031: { "CONTENT_ID", new Integer(Types.INTEGER) },
032: { "ATTRIBUTE_ID", new Integer(Types.INTEGER) },
033: { "STR_VALUE", new Integer(Types.VARCHAR) },
034: { "INT_VALUE", new Integer(Types.INTEGER) },
035: { "DATE_VALUE", new Integer(Types.TIMESTAMP) } };
036:
037: public final static boolean[] SETRELEVANTS = { true };
038:
039: /* public final static String SQLSTRING =
040: "DECLARE @CONT_ID INT " +
041: "DECLARE @VAL_ID INT " +
042:
043: "BEGIN TRANSACTION " +
044:
045: "SELECT @CONT_ID = ? " +
046:
047: "SELECT @VAL_ID=ISNULL(MAX(VALUE_ID)+1, 1) " +
048: "FROM CONTENT_ATTRIBUTE " +
049:
050: "INSERT INTO CONTENT_ATTRIBUTE (VALUE_ID,ATTRIBUTE_ID,STR_VALUE,INT_VALUE,DATE_VALUE) " +
051: "VALUES(@VAL_ID,?,?,?,?) " +
052:
053: "INSERT INTO CONTENT_ATTRIBUTE_VALUE (CONTENT_ID, VALUE_ID) " +
054: " VALUES (@CONT_ID, @VAL_ID) " +
055:
056: "COMMIT TRANSACTION " +
057:
058: "SELECT CV.CONTENT_ID, CA.*, A.NAME, A.TYPE, A.CLASSNAME " +
059: " FROM CONTENT_ATTRIBUTE_VALUE CV, CONTENT_ATTRIBUTE CA, ATTRIBUTE A " +
060: "WHERE CV.CONTENT_ID = @CONT_ID AND CV.VALUE_ID = @VAL_ID AND " +
061: " CA.VALUE_ID = @VAL_ID AND A.ATTRIBUTE_ID = CA.ATTRIBUTE_ID ";*/
062:
063: protected static Class[] queryClasses = {
064: SelectNextIdFromContentAttribute.class, // [0]
065: InsertContentAttribute.class, // [1]
066: InsertContentAttributeValue.class, // [2]
067: SelectAttributeContentAttribute.class // [3]
068: };
069:
070: public boolean execute() {
071: try {
072:
073: init(queryClasses); // init query objects
074:
075: // BEGIN TRANSACTION
076: boolean isNotOpen = aTKDBConnection.isAutoCommit();
077: if (isNotOpen) {
078: TKDBManager.beginTransaction(); // begin transaction
079: }
080:
081: Integer valueId = null;
082: int id = 1;
083:
084: // [0]
085: queries[0].execute();
086: ResultSet rs = queries[0].fetchResultSet();
087: if (rs != null && rs.next()) {
088: id = rs.getInt(1);
089: }
090: valueId = new Integer(id);
091: // [1]
092: queries[1].setQueryParams("VALUE_ID", valueId);
093: queries[1].setQueryParams("ATTRIBUTE_ID", queryParams
094: .get("ATTRIBUTE_ID"));
095: queries[1].setQueryParams("STR_VALUE", queryParams
096: .get("STR_VALUE"));
097: queries[1].setQueryParams("INT_VALUE", queryParams
098: .get("INT_VALUE"));
099: queries[1].setQueryParams("DATE_VALUE", queryParams
100: .get("DATE_VALUE"));
101: queries[1].execute();
102: // [2]
103: queries[2].setQueryParams("CONTENT_ID", queryParams
104: .get("CONTENT_ID"));
105: queries[2].setQueryParams("VALUE_ID", valueId);
106: queries[2].execute();
107: // [3]
108: queries[3].setQueryParams("CONTENT_ID", queryParams
109: .get("CONTENT_ID"));
110: queries[3].setQueryParams("VALUE_ID", valueId);
111: queries[3].execute();
112: addResult(queries[3].fetchResultSet());
113:
114: // COMMIT TRANSACTION
115: if (isNotOpen) {
116: aTKDBConnection.commitTransaction(); // commit all changes
117: }
118:
119: } catch (Throwable t) {
120: TKDBManager.safeRollbackTransaction(t);
121: }
122: return hasResults();
123: }
124:
125: public void initQuery(Connection con) {
126: super.initQuery(con, ISPREPARED, PARAMORDER, PARAMTYPES,
127: SETRELEVANTS, null);
128: }
129: }
|