1 package com.teamkonzept.webman.mainint.db.queries.postgresql; 2 3 import com.teamkonzept.db.*; 4 import com.teamkonzept.webman.mainint.db.queries.content.*; 5 import com.teamkonzept.webman.db.TKWebmanDBManager; 6 7 import com.teamkonzept.webman.mainint.db.queries.CheckTableExistence; 8 import com.teamkonzept.webman.mainint.db.queries.content.CreateTempTableInstanceId; 9 import com.teamkonzept.webman.mainint.db.queries.content.DeleteFromContent; 10 import com.teamkonzept.webman.mainint.db.queries.content.DeleteFromContentAttribute; 11 import com.teamkonzept.webman.mainint.db.queries.content.DeleteFromContentAttributeValue; 12 import com.teamkonzept.webman.mainint.db.queries.content.DeleteFromContentNode; 13 import com.teamkonzept.webman.mainint.db.queries.content.DeleteFromContentInstance; 14 import com.teamkonzept.webman.mainint.db.queries.content.DeleteFromContentTree; 15 16 import java.sql.*; 17 18 28 public class TKDBContentTreeDeleteNode extends TKExtendedPrepQuery 29 { 30 31 public final static boolean ISPREPARED = true; 32 33 public final static String [] PARAMORDER = { "CONTENT_NODE_ID" }; 34 35 public final static Object [][] TYPES = null; 36 37 38 public final static boolean[] SETRELEVANTS = { false }; 39 40 private final static int TABLE_EXIST_QUERY = 0; 41 42 43 44 protected static Class [] queryClasses = { 45 46 CheckTableExistence.class, CreateTempTableContentId.class, CreateTempTableInstanceId.class, 50 SelectLeftRightNrFromContentTree.class, 52 InsertTempTable4InstanceId.class, InsertTempTable3ContentId.class, 55 DeleteFromContentValue.class, DeleteFromContentNode.class, DeleteFromStructuredContent.class, DeleteFromContentVersion.class, DeleteFromContentInstance.class, DeleteFromContentAttribute.class, DeleteFromContentAttributeValue.class, DeleteFromContent.class, DeleteFromContentTree.class, 65 UpdateContentTreeRightNr.class, UpdateContentTreeLeftNr.class, 68 DropTempTable3.class, DropTempTable4.class 71 }; 72 73 76 public boolean execute() 77 { 78 int i = 1; 79 try 80 { 81 init(queryClasses); 83 84 Integer nodeId = (Integer ) queryParams.get("CONTENT_NODE_ID"); 86 87 boolean isNotOpen = aTKDBConnection.isAutoCommit(); 88 if (isNotOpen) 89 { 90 TKDBManager.beginTransaction(); } 92 93 95 queries[TABLE_EXIST_QUERY].setQueryParams("TABLE_NAME", 96 TKWebmanDBManager.getDBVendor()==QueryConstants.POSTGRESQL?"webman_temp_3":"WEBMAN_TEMP_3"); queries[TABLE_EXIST_QUERY].execute(); 98 ResultSet exist = queries[TABLE_EXIST_QUERY].fetchResultSet(); 99 if (exist == null || !exist.next()) 100 { 101 queries[i].execute(); } 103 104 i++; queries[TABLE_EXIST_QUERY].setQueryParams("TABLE_NAME", 106 TKWebmanDBManager.getDBVendor()==QueryConstants.POSTGRESQL?"webman_temp_4":"WEBMAN_TEMP_4"); queries[TABLE_EXIST_QUERY].execute(); 108 exist = queries[TABLE_EXIST_QUERY].fetchResultSet(); 109 if (exist == null || !exist.next()) 110 { 111 queries[i].execute(); 112 } 113 Object leftNr = null; 118 Object rightNr = null; 119 ResultSet rs = null; 120 i++; queries[i].setQueryParams("NODE_ID", nodeId); 122 queries[i].execute(); 123 rs = queries[i].fetchResultSet(); 124 if (rs != null && rs.next()) 125 { 126 leftNr = rs.getObject(1); 127 rightNr = rs.getObject(2); 128 } 129 130 int leftVal = 0; 132 int rightVal = 0; 133 if (leftNr != null && leftNr instanceof Number ) 134 { 135 leftVal = ((Number ) leftNr).intValue(); 136 } 137 if (rightNr != null && rightNr instanceof Number ) 138 { 139 rightVal = ((Number ) rightNr).intValue(); 140 } 141 Integer diff = new Integer (rightVal - leftVal + 1); 142 143 i++; queries[i].setQueryParams("LEFT_ID",leftNr); 147 queries[i].setQueryParams("RIGHT_ID",rightNr); 148 queries[i].execute(); 149 150 i++; queries[i].execute(); 154 155 i++; queries[i].execute(); 161 162 i++; queries[i].execute(); 168 169 i++; queries[i].execute(); 175 176 i++; queries[i].execute(); 182 183 i++; queries[i].execute(); 189 190 i++; queries[i].execute(); 193 194 i++; queries[i].execute(); 197 198 i++; queries[i].execute(); 204 205 i++; queries[i].setQueryParams("LEFT_NR", leftNr); 211 queries[i].setQueryParams("RIGHT_NR", rightNr); 212 queries[i].execute(); 213 214 i++; queries[i].setQueryParams("DIFF", diff); 220 queries[i].setQueryParams("RIGHT_NR", rightNr); 221 queries[i].execute(); 222 223 i++; queries[i].setQueryParams("DIFF", diff); 229 queries[i].setQueryParams("LEFT_NR", leftNr); 230 queries[i].execute(); 231 232 i++; queries[i].execute(); 235 i++; queries[i].execute(); 237 238 240 if (isNotOpen) 241 { 242 aTKDBConnection.commitTransaction(); } 244 245 } 246 catch(Throwable t) 247 { 248 TKDBManager.safeRollbackTransaction(t); 249 } 250 return hasResults(); 251 } 252 253 256 public void initQuery(Connection con) 257 { 258 super.initQuery(con, 259 ISPREPARED, 260 PARAMORDER, TYPES, SETRELEVANTS, null); 261 } 262 } 263 | Popular Tags |