1 package com.teamkonzept.webman.mainint.db.queries; 2 3 import java.sql.*; 4 import java.util.Enumeration ; 5 import com.teamkonzept.db.*; 6 import com.teamkonzept.webman.mainint.db.queries.content.*; 7 import com.teamkonzept.webman.mainint.db.queries.CheckTableExistence; 8 import com.teamkonzept.webman.mainint.WebmanExceptionHandler; 9 import com.teamkonzept.webman.db.TKWebmanDBManager; 10 11 20 public class TKDBContentTreeDeleteNode extends TKExtendedPrepQuery 21 { 22 23 public final static boolean ISPREPARED = true; 24 public final static String [] PARAMORDER = { "CONTENT_NODE_ID" }; 25 public final static Object [][] TYPES = null; 26 public final static boolean[] SETRELEVANTS = { false }; 27 private final static int TABLE_EXIST_QUERY = 0; 28 29 private int i = 1; 30 31 protected static Class [] queryClasses = { 32 33 CheckTableExistence.class, CreateTempTableContentId.class, CreateTempTableInstanceId.class, 37 SelectLeftRightNrFromContentTree.class, 39 InsertTempTable4InstanceId.class, InsertTempTable3ContentId.class, 42 DeleteFromContentValue.class, DeleteFromContentNode.class, DeleteFromStructuredContent.class, DeleteFromContentVersion.class, DeleteFromContentInstance.class, DeleteFromContentAttribute.class, DeleteFromContentAttributeValue.class, DeleteFromContent.class, DeleteFromContentTree.class, 52 UpdateContentTreeRightNr.class, UpdateContentTreeLeftNr.class 55 58 }; 59 60 public boolean execute() 61 { 62 try 63 { 64 init(queryClasses); 66 67 Integer nodeId = (Integer ) queryParams.get("CONTENT_NODE_ID"); 69 70 boolean isNotOpen = aTKDBConnection.isAutoCommit(); 71 if (isNotOpen) 72 { 73 TKDBManager.beginTransaction(); } 75 76 78 queries[TABLE_EXIST_QUERY].setQueryParams("TABLE_NAME", 79 TKWebmanDBManager.getDBVendor()==QueryConstants.POSTGRESQL?"webman_temp_3":"WEBMAN_TEMP_3"); queries[TABLE_EXIST_QUERY].execute(); 81 ResultSet exist = queries[TABLE_EXIST_QUERY].fetchResultSet(); 82 if (exist == null || !exist.next()) 83 { 84 queries[i].execute(); } 86 87 i++; queries[TABLE_EXIST_QUERY].setQueryParams("TABLE_NAME", 89 TKWebmanDBManager.getDBVendor()==QueryConstants.POSTGRESQL?"webman_temp_4":"WEBMAN_TEMP_4"); queries[TABLE_EXIST_QUERY].execute(); 91 exist = queries[TABLE_EXIST_QUERY].fetchResultSet(); 92 if (exist == null || !exist.next()) 93 { 94 queries[i].execute(); 95 } 96 Object leftNr = null; 101 Object rightNr = null; 102 ResultSet rs = null; 103 i++; queries[i].setQueryParams("NODE_ID", nodeId); 105 queries[i].execute(); 106 rs = queries[i].fetchResultSet(); 107 if (rs != null && rs.next()) 108 { 109 leftNr = rs.getObject(1); 110 rightNr = rs.getObject(2); 111 } 112 113 int leftVal = 0; 115 int rightVal = 0; 116 if (leftNr != null && leftNr instanceof Number ) 117 { 118 leftVal = ((Number ) leftNr).intValue(); 119 } 120 if (rightNr != null && rightNr instanceof Number ) 121 { 122 rightVal = ((Number ) rightNr).intValue(); 123 } 124 Integer diff = new Integer (rightVal - leftVal + 1); 125 126 i++; queries[i].setQueryParams("LEFT_ID",leftNr); 130 queries[i].setQueryParams("RIGHT_ID",rightNr); 131 queries[i].execute(); 132 133 i++; queries[i].execute(); 137 138 i++; queries[i].execute(); 144 145 i++; queries[i].execute(); 151 152 i++; queries[i].execute(); 158 159 i++; queries[i].execute(); 165 166 i++; queries[i].execute(); 172 173 i++; queries[i].execute(); 176 177 i++; queries[i].execute(); 180 181 i++; queries[i].execute(); 187 188 i++; queries[i].setQueryParams("LEFT_NR", leftNr); 194 queries[i].setQueryParams("RIGHT_NR", rightNr); 195 queries[i].execute(); 196 197 i++; queries[i].setQueryParams("DIFF", diff); 203 queries[i].setQueryParams("RIGHT_NR", rightNr); 204 queries[i].execute(); 205 206 i++; queries[i].setQueryParams("DIFF", diff); 212 queries[i].setQueryParams("LEFT_NR", leftNr); 213 queries[i].execute(); 214 215 221 223 if (isNotOpen) 224 { 225 aTKDBConnection.commitTransaction(); } 227 228 } 229 catch(Throwable t) 230 { 231 TKDBManager.safeRollbackTransaction(t); 232 } 233 return hasResults(); 234 } 235 236 public void initQuery(Connection con) 237 { 238 super.initQuery(con, 239 ISPREPARED, 240 PARAMORDER, TYPES, SETRELEVANTS, null); 241 } 242 } 243 | Popular Tags |