1 package de.webman.content.workflow.db.queries; 2 3 import java.sql.*; 4 5 import com.teamkonzept.db.*; 6 import com.teamkonzept.webman.mainint.db.queries.version.*; 7 import com.teamkonzept.webman.mainint.db.queries.CheckTableExistence; 8 import com.teamkonzept.webman.db.TKWebmanDBManager; 9 16 public class DeleteContent extends TKExtendedPrepQuery { 17 18 public final static boolean IS_PREPARED = 19 true; 20 21 public final static String [] PARAM_ORDER = 22 { "CONTENT_ID", "INSTANCE_ID" }; 23 24 public final static Object [][] PARAM_TYPES = 25 null; 26 27 public final static boolean[] SET_RELEVANTS = 28 { false }; 29 30 31 protected static Class [] queryClasses = { 32 CheckTableExistence.class, 34 CreateTempTableContentVersion.class, 36 InsertTempTableContentVersion.class, 39 SetContentVersionNullWithInstance.class, 41 DeleteContentValueSubTemp.class, 43 DeleteContentNodeSubTemp.class, 45 DeleteContentSubTemp.class, 47 DeleteContentAttributesSubTemp.class, 49 DeleteContentAttributesSubContent.class, 51 DropTempTableContentVersion.class 53 }; 54 55 public boolean execute() 56 { 57 try 58 { 59 init(queryClasses); 61 boolean isNotOpen = aTKDBConnection.isAutoCommit(); 62 if (isNotOpen) 63 { 64 TKDBManager.beginTransaction(); 65 } 66 67 Object contentId = queryParams.get("CONTENT_ID"); 68 Object instanceId = queryParams.get("INSTANCE_ID"); 69 70 77 queries[0].setQueryParams("TABLE_NAME", 78 TKWebmanDBManager.getDBVendor()==QueryConstants.POSTGRESQL?"webman_temp_content_version":"WEBMAN_TEMP_CONTENT_VERSION"); 79 queries[0].execute(); 80 ResultSet exist = queries[0].fetchResultSet(); 81 if (exist == null || !exist.next()) 82 queries[1].execute(); 83 84 queries[2].setQueryParams("CONTENT_ID", contentId); 86 queries[2].setQueryParams("INSTANCE_ID", instanceId); 87 queries[2].execute(); 88 89 queries[3].setQueryParams("CONTENT_ID", contentId); 91 queries[3].setQueryParams("INSTANCE_ID", instanceId); 92 queries[3].execute(); 93 94 queries[4].execute(); 96 queries[5].execute(); 98 queries[6].execute(); 100 queries[7].execute(); 102 queries[8].execute(); 103 104 queries[9].execute(); 106 107 if (isNotOpen) 108 { 109 aTKDBConnection.commitTransaction(); } 111 112 } 113 catch(Throwable t) 114 { 115 TKDBManager.safeRollbackTransaction(t); 116 } 117 return hasResults(); 118 } 119 120 public void initQuery(Connection con) { 121 super.initQuery( 122 con, 123 IS_PREPARED, 124 PARAM_ORDER, 125 PARAM_TYPES, 126 SET_RELEVANTS, 127 null ); 128 } 129 } 130 131 | Popular Tags |