1 package com.teamkonzept.webman.mainint.db.queries.oracle; 2 3 import java.sql.*; 4 import com.teamkonzept.db.*; 5 import com.teamkonzept.webman.mainint.db.queries.content.*; 6 import com.teamkonzept.webman.mainint.WebmanExceptionHandler; 7 8 17 public class TKDBContentTreeMoveNode extends TKExtendedPrepQuery 18 { 19 20 public final static boolean isPrepared = true; 21 22 public final static String [] paramOrder = 23 { "SRC_NODE_ID", "DEST_NODE_ID", "UPORDOWN" 24 }; 25 26 public final static Object [][] types = null; 27 28 public final static boolean[] setRelevants = { false }; 29 30 196 197 protected static Class [] queryClasses = { 198 SelectLeftRightNrFromContentTree.class, SelectOneFromContentTreeContentType.class, SelectOneFromContentTreeLeftRightNr.class, SelectMaxFromContentTree.class, SelectLeftRightNrFromContentTree.class, UpdateContentTreeLeftRightNr.class, UpdateContentTreeSetLeftNr.class, UpdateContentTreeSetRightNr.class, SelectLeftNrFromContentTree.class, SelectRightNrPlusOneFromContentTree.class, SelectLeftNrPlusOneFromContentTree.class, UpdateContentTreeSetLeftNrPlus.class, UpdateContentTreeSetRightNrPlus.class, UpdateContentTreeSetRightNrGreater.class, UpdateContentTreeSetContentNodeParent.class, UpdateContentTreeSetContentNodeParentSelect.class }; 215 216 public boolean execute() 217 { 218 try 219 { 220 init(queryClasses); 222 boolean isNotOpen = aTKDBConnection.isAutoCommit(); 223 if (isNotOpen) 224 { 225 TKDBManager.beginTransaction(); } 227 228 Integer src = (Integer ) queryParams.get("SRC_NODE_ID"); 232 Integer dest = (Integer ) queryParams.get("DEST_NODE_ID"); 233 Integer upordown = (Integer ) queryParams.get("UPORDOWN"); 234 235 queries[0].setQueryParams("NODE_ID", src); 241 queries[0].execute(); 242 Integer leftNr = null; 243 Integer rightNr = null; 244 int left_native = 0; 245 int right_native = 0; 246 ResultSet rs0 = queries[0].fetchResultSet(); 247 if (rs0 != null && rs0.next()) 248 { 249 left_native = rs0.getInt(1); 250 right_native = rs0.getInt(2); 251 } 252 253 leftNr = new Integer (left_native); 254 rightNr = new Integer (right_native); 255 256 257 queries[1].setQueryParams("NODE_ID", dest); 273 queries[1].execute(); 274 ResultSet rs1 = queries[1].fetchResultSet(); 275 queries[2].setQueryParams("LEFT_NR", leftNr); 280 queries[2].setQueryParams("RIGHT_NR", rightNr); 281 queries[2].setQueryParams("NODE_ID", dest); 282 queries[2].execute(); 283 ResultSet rs2 = queries[2].fetchResultSet(); 284 285 boolean hasResult1 = rs1 != null && rs1.next(); 286 boolean hasResult2 = rs2 != null && rs2.next(); 287 288 if ((src.intValue() != dest.intValue()) 294 && !(upordown.intValue() == 0 && hasResult1) 295 && !hasResult2) 296 { 297 298 Object maxRight = null; 303 queries[3].execute(); 304 ResultSet rs3 = queries[3].fetchResultSet(); 305 if (rs3 != null && rs3.next()) 306 { 307 maxRight = rs3.getObject(1); 308 } 309 310 queries[4].setQueryParams("NODE_ID", src); 316 queries[4].execute(); 317 leftNr = null; 318 rightNr = null; 319 left_native = 0; 320 right_native = 0; 321 ResultSet rs4 = queries[4].fetchResultSet(); 322 if (rs4 != null && rs4.next()) 323 { 324 left_native = rs4.getInt(1); 325 right_native = rs4.getInt(2); 326 } 327 leftNr = new Integer (left_native); 328 rightNr = new Integer (right_native); 329 330 332 queries[5].setQueryParams("MAX_RIGHT", maxRight); 340 queries[5].setQueryParams("LEFT_NR", leftNr); 341 queries[5].setQueryParams("RIGHT_NR", rightNr); 342 queries[5].execute(); 343 344 345 int leftVal = 0; 347 int rightVal = 0; 348 if (leftNr != null) 349 { 350 leftVal = leftNr.intValue(); 351 } 352 if (rightNr != null) 353 { 354 rightVal = rightNr.intValue(); 355 } 356 Integer diff = new Integer (rightVal - leftVal + 1); 357 358 360 queries[6].setQueryParams("DIFF", diff); 366 queries[6].setQueryParams("LEFT_NR", leftNr); 367 queries[6].setQueryParams("RIGHT_NR", maxRight); 368 queries[6].execute(); 369 370 queries[7].setQueryParams("DIFF", diff); 376 queries[7].setQueryParams("LEFT_NR", leftNr); 377 queries[7].setQueryParams("RIGHT_NR", maxRight); 378 queries[7].execute(); 379 380 Object destNr = null; 383 if (upordown.intValue() == 1) 384 { 385 queries[8].setQueryParams("NODE_ID", dest); 391 queries[8].execute(); 392 ResultSet rs8 = queries[8].fetchResultSet(); 393 if (rs8 != null && rs8.next()) 395 { 396 destNr = rs8.getObject(1); 397 } 398 } 399 else 401 { 402 if (upordown.intValue() == -1) 404 { 405 queries[9].setQueryParams("NODE_ID", dest); 411 queries[9].execute(); 412 destNr = null; 413 ResultSet rs9 = queries[9].fetchResultSet(); 414 if (rs9 != null && rs9.next()) 415 { 416 destNr = rs9.getObject(1); 417 } 418 } 419 else 421 { 422 queries[10].setQueryParams("NODE_ID", dest); 428 queries[10].execute(); 429 destNr = null; 430 ResultSet rs10 = queries[10].fetchResultSet(); 431 if (rs10 != null && rs10.next()) 432 { 433 destNr = rs10.getObject(1); 434 } 435 } 436 } 437 438 queries[11].setQueryParams("DIFF", diff); 445 queries[11].setQueryParams("LEFT_NR", destNr); 446 queries[11].setQueryParams("RIGHT_NR", maxRight); 447 queries[11].execute(); 448 449 queries[12].setQueryParams("DIFF", diff); 455 queries[12].setQueryParams("LEFT_NR", destNr); 456 queries[12].setQueryParams("RIGHT_NR", maxRight); 457 queries[12].execute(); 458 459 int destVal = 0; 461 leftVal = 0; int maxVal = 0; 463 if (destNr != null && destNr instanceof Number ) 464 { 465 destVal = ((Number ) destNr).intValue(); 466 } 467 if (leftNr != null && leftNr instanceof Number ) 468 { 469 leftVal = ((Number ) leftNr).intValue(); 470 } 471 if (maxRight != null && maxRight instanceof Number ) 472 { 473 maxVal = ((Number ) maxRight).intValue(); 474 } 475 diff = new Integer (destVal - leftVal - maxVal); 476 477 479 queries[13].setQueryParams("DIFF", diff); 485 queries[13].setQueryParams("RIGHT_NR", maxRight); 486 queries[13].execute(); 487 488 if (upordown.intValue() == 0) 491 { 492 queries[14].setQueryParams("CONTENT_NODE_PARENT", dest); 498 queries[14].setQueryParams("CONTENT_NODE_ID", src); 499 queries[14].execute(); 500 } 501 else 503 { 504 queries[15].setQueryParams("DEST", dest); 510 queries[15].setQueryParams("SRC", src); 511 queries[15].execute(); 512 } 513 514 } 517 if (isNotOpen) 518 { 519 aTKDBConnection.commitTransaction(); } 521 522 } 523 catch(Throwable t) 524 { 525 TKDBManager.safeRollbackTransaction(t); 526 } 527 return hasResults(); 528 } 529 530 public void initQuery(Connection con) 531 { 532 super.initQuery(con, 533 isPrepared, paramOrder, types, setRelevants, null); 534 } 535 } 536 | Popular Tags |