1 package com.teamkonzept.webman.mainint.db.queries.duplication; 2 3 import com.teamkonzept.db.*; 4 import com.teamkonzept.webman.mainint.DatabaseDefaults; 5 6 import java.io.*; 7 import java.util.*; 8 import java.sql.*; 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 67 public class TKDBDuplicateQuery extends TKPrepQuery implements DatabaseDefaults{ 68 69 70 public final static boolean isPrepared = 71 true; 72 73 75 public final static String [] paramOrder = 76 { "TEMPLATE_ROOT_ID", "TARGET_ROOT_ID", 78 "NEW_CONTENT_ROOT_NAME", "NEW_CONTENT_ROOT_SHORTNAME", 79 "ST_SUBTREE_ROOT_ID", "ST_TARGET_ROOT_ID", 80 "NEW_SITE_ROOT_NAME", "NEW_SITE_ROOT_SHORTNAME" }; 81 82 public final static Object [][] paramTypes = 83 {{ "NEW_CONTENT_ROOT_NAME ", new Integer (Types.VARCHAR) }, 84 { "NEW_CONTENT_ROOT_SHORTNAME", new Integer (Types.VARCHAR) }, 85 { "NEW_SITE_ROOT_NAME", new Integer (Types.VARCHAR) }, 86 { "NEW_SITE_ROOT_SHORTNAME", new Integer (Types.VARCHAR) }, 87 }; 88 89 public final static boolean[] setRelevants = 90 {true, true}; 91 92 public final static String sqlString = 93 94 95 96 97 98 99 " CREATE TABLE #ST_tmp ( " 100 + " SITE_NODE_ID int not null, " 101 + " SITE_NODE_PARENT int null , " 102 + " SITE_NODE_TYPE int not null, " 103 + " SITE_NODE_NAME varchar(254) not null, " 104 + " SITE_NODE_SHORTNAME varchar(80) not null, " 105 + " LEFT_NR int not null, " 106 + " RIGHT_NR int not null, " 107 + " PG_CONTENT_NODE int null , " 108 + " PG_SELECTION_ID int null , " 109 + " ) " 110 111 + " CREATE TABLE #ST_TRANSLATE(OLD_ID int, NEW_ID int NULL) " 112 113 114 115 116 117 118 + " CREATE TABLE #tmp (CONTENT_NODE_ID int, CONTENT_NODE_NAME varchar(254), CONTENT_NODE_SHORTNAME varchar(80), CONTENT_NODE_TYPE int, LEFT_NR int, RIGHT_NR int, CONTENT_FORM int NULL, CONTENT_NODE_PARENT int null, TREE_ID int, PROTOTYPE_ID int null) " 119 120 + " CREATE TABLE #TRANSLATE(OLD_ID int, NEW_ID int NULL) " 121 122 123 124 125 126 127 128 129 + " create table #CONTENT " 130 + " ( " 131 + " CONTENT_ID int not null, " 132 + " XML_TEXT text null " 133 + " ) " 139 140 141 + " CREATE TABLE #CONTENT_TRANSLATE(OLD_ID int, NEW_ID int NULL, XML_TEXT text NULL) " 142 143 + " CREATE TABLE #CON_INS_TRAN(OLD_ID int, NEW_ID int NULL) " 144 145 + " CREATE TABLE #CON_VER_TRAN(OLD_ID int, NEW_ID int NULL) " 146 147 + " create table #CONTENT_NODE " 148 + " ( " 149 + " CONTENT_ID int not null, " 150 + " CONTENT_NODE_ID int not null, " 151 + " LEFT_NR int not null, " 152 + " RIGHT_NR int not null, " 153 + " NAME varchar(80) not null " 154 + " ) " 155 156 157 + " create table #CONTENT_VALUE " 158 + " ( " 159 + " CONTENT_ID int not null, " 160 + " CONTENT_NODE_ID int not null, " 161 + " IDX int not null, " 162 + " VALUE text not null, " 163 + " MEDIA_ID int null " 165 + " ) " 166 167 168 181 + " create table #Content_Instance " 183 + " ( " 184 + " INSTANCE_ID int not null, " 185 + " CONTENT_NODE_ID int not null, " 186 + " NAME varchar(80) null " 187 + " ) " 188 189 + " create table #Content_Attribute_Value " 191 + " ( " 192 + " CONTENT_ID int not null, " 193 + " VALUE_ID int not null " 194 + " ) " 195 196 197 198 + " CREATE TABLE #REL_REFS (OLD_SRC INT, OLD_TAR INT, DOC_IDX INT, COMPONENT_IDX INT, DIST INT NULL, NEW_SRC INT, NEW_TAR INT NULL) " 199 200 201 + " BEGIN TRANSACTION " 202 203 204 205 206 207 208 + " DECLARE @TEMPLATE_ROOT int " 209 + " DECLARE @TARGET_ROOT int " 210 + " DECLARE @NEW_CONTENT_ROOT_NAME varchar(254) " 211 + " DECLARE @NEW_CONTENT_ROOT_SHORTNAME varchar(80) " 212 213 214 215 + " DECLARE @ST_SUBTREE_ROOT_ID int " 216 + " DECLARE @ST_TARGET_ROOT_ID int " 217 + " DECLARE @NEW_SITE_ROOT_NAME varchar(254) " 218 + " DECLARE @NEW_SITE_ROOT_SHORTNAME varchar(80) " 219 220 221 222 223 + " DECLARE @SITE_TREE_FLAG int " 224 + " DECLARE @CONTENT_TREE_FLAG int " 225 226 227 229 230 231 232 233 + " DECLARE @C_count int " 234 + " DECLARE @C_upper int " 235 + " DECLARE @C_i int " 236 + " DECLARE @C_j int " 237 238 239 240 241 242 243 + " DECLARE @NEW_CONT_ROOT_ID int " 244 + " DECLARE @NEW_SITE_ROOT_ID int " 245 246 247 248 249 250 251 252 + " SELECT @TEMPLATE_ROOT = ? " 253 + " SELECT @TARGET_ROOT = ? " 254 + " SELECT @NEW_CONTENT_ROOT_NAME = ? " 255 + " SELECT @NEW_CONTENT_ROOT_SHORTNAME = ? " 256 257 258 259 260 261 262 263 + " SELECT @ST_SUBTREE_ROOT_ID = ? " 266 + " SELECT @ST_TARGET_ROOT_ID = ? " 267 + " SELECT @NEW_SITE_ROOT_NAME = ? " 268 + " SELECT @NEW_SITE_ROOT_SHORTNAME = ? " 269 271 272 273 274 + " IF (@ST_SUBTREE_ROOT_ID != NULL AND @ST_TARGET_ROOT_ID != NULL ) " 275 + " SELECT @SITE_TREE_FLAG = 1 " 276 + " IF (@TEMPLATE_ROOT != NULL AND @TARGET_ROOT != NULL) " 277 + " SELECT @CONTENT_TREE_FLAG = 1 " 278 280 281 282 283 284 285 286 287 288 289 290 291 292 + " DECLARE @TARGET_RIGHT int " 293 + " DECLARE @TEMPLATE_LEFT int " 294 + " DECLARE @TEMPLATE_RIGHT int " 295 + " DECLARE @NODE_COUNT int " 296 + " DECLARE @LOCAL_SHIFT int " 297 + " DECLARE @GLOBAL_SHIFT int " 298 299 300 301 302 303 304 + " SELECT @TEMPLATE_RIGHT = RIGHT_NR " 305 + " FROM CONTENT_TREE " 306 + " WHERE CONTENT_NODE_ID = @TEMPLATE_ROOT " 307 308 + " SELECT @TEMPLATE_LEFT = LEFT_NR " 309 + " FROM CONTENT_TREE " 310 + " WHERE CONTENT_NODE_ID = @TEMPLATE_ROOT " 311 312 313 314 + " SELECT @TARGET_RIGHT = RIGHT_NR " 315 + " FROM CONTENT_TREE " 316 + " WHERE CONTENT_NODE_ID = @TARGET_ROOT " 317 318 319 320 321 322 + " SELECT @LOCAL_SHIFT = @TARGET_RIGHT - @TEMPLATE_LEFT " 323 324 325 326 327 + " insert into #tmp ( CONTENT_NODE_ID, CONTENT_NODE_NAME, CONTENT_NODE_SHORTNAME, CONTENT_NODE_TYPE, LEFT_NR, RIGHT_NR, CONTENT_FORM, CONTENT_NODE_PARENT, TREE_ID, PROTOTYPE_ID) " 329 + " select * FROM CONTENT_TREE " 330 + " WHERE LEFT_NR > = @TEMPLATE_LEFT AND RIGHT_NR <= @TEMPLATE_RIGHT " 331 332 333 334 335 + " UPDATE #tmp " 336 + " SET CONTENT_NODE_NAME = @NEW_CONTENT_ROOT_NAME, CONTENT_NODE_SHORTNAME = @NEW_CONTENT_ROOT_SHORTNAME " 337 + " WHERE CONTENT_NODE_ID = @TEMPLATE_ROOT " 338 339 340 341 342 343 344 + " UPDATE #tmp " 345 + " SET LEFT_NR = LEFT_NR + @LOCAL_SHIFT " 346 347 + " UPDATE #tmp " 348 + " SET RIGHT_NR = RIGHT_NR + @LOCAL_SHIFT " 349 350 351 352 353 354 + " SELECT @GLOBAL_SHIFT = ((@TEMPLATE_RIGHT - @TEMPLATE_LEFT) + 1 ) " 355 356 357 358 359 + " UPDATE CONTENT_TREE " 360 + " SET RIGHT_NR = RIGHT_NR + @GLOBAL_SHIFT " 361 + " WHERE RIGHT_NR >= @TARGET_RIGHT " 362 363 + " UPDATE CONTENT_TREE " 364 + " SET LEFT_NR = LEFT_NR + @GLOBAL_SHIFT " 365 + " WHERE LEFT_NR > @TARGET_RIGHT " 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 + " INSERT INTO #TRANSLATE(OLD_ID) " 382 + " SELECT CONTENT_NODE_ID " 383 + " FROM #tmp " 384 385 386 387 + " DECLARE @count int " 388 + " DECLARE @upper int " 389 + " DECLARE @i int " 390 + " DECLARE @j int " 391 392 + " SELECT @i = 1 " 393 394 + " SELECT @j = 0 " 395 396 397 + " SELECT @count = COUNT(*) " 398 + " FROM #TRANSLATE " 399 400 + " WHILE (@j < @count) " 401 + " BEGIN " 402 + " IF NOT ( @i IN (SELECT CONTENT_NODE_ID " 403 + " FROM CONTENT_TREE " 404 + " ) " 405 + " ) " 406 + " BEGIN " 407 + " UPDATE #TRANSLATE " 408 + " SET NEW_ID = @i " 409 + " WHERE OLD_ID = (SELECT MIN (OLD_ID) " 410 + " FROM #TRANSLATE " 411 + " WHERE NEW_ID = NULL " 412 + " ) " 413 + " SELECT @j = @j + 1 " 414 + " END " 415 + " SELECT @i = @i +1 " 416 + " END " 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 + " UPDATE #tmp " 432 + " SET CONTENT_NODE_PARENT = @TARGET_ROOT " 433 + " WHERE CONTENT_NODE_ID = @TEMPLATE_ROOT " 434 435 436 437 438 439 + " UPDATE #tmp " 440 + " SET CONTENT_NODE_PARENT = TL.NEW_ID " 441 + " FROM #TRANSLATE TL " 442 + " WHERE (#tmp.CONTENT_NODE_PARENT = TL.OLD_ID " 443 + " AND " 444 + " #tmp.CONTENT_NODE_ID != @TEMPLATE_ROOT " 445 + " ) " 446 447 448 449 450 + " UPDATE #tmp " 451 + " SET CONTENT_NODE_ID = TL.NEW_ID " 452 + " FROM #TRANSLATE TL " 453 + " WHERE #tmp.CONTENT_NODE_ID = TL.OLD_ID " 454 455 456 + " INSERT INTO CONTENT_TREE ( CONTENT_NODE_ID, CONTENT_NODE_NAME, CONTENT_NODE_SHORTNAME, CONTENT_NODE_TYPE, LEFT_NR, RIGHT_NR, CONTENT_FORM, CONTENT_NODE_PARENT, TREE_ID, PROTOTYPE_ID) " 458 + " SELECT CONTENT_NODE_ID, CONTENT_NODE_NAME, CONTENT_NODE_SHORTNAME, CONTENT_NODE_TYPE, LEFT_NR, RIGHT_NR, CONTENT_FORM, CONTENT_NODE_PARENT, TREE_ID, PROTOTYPE_ID " 459 + " FROM #tmp " 460 461 462 463 465 466 467 + " DELETE FROM #CONTENT_TRANSLATE " 468 469 + " DELETE FROM #CON_INS_TRAN " 470 471 + " DELETE FROM #CON_VER_TRAN " 472 473 + " DELETE FROM #CONTENT_NODE " 474 475 + " DELETE FROM #CONTENT_VALUE " 476 477 478 479 494 495 + " INSERT INTO #CONTENT_TRANSLATE (OLD_ID) " 496 + " SELECT DISTINCT C.CONTENT_ID " 497 + " FROM CONTENT C,CONTENT_VERSION C_V, CONTENT_INSTANCE C_I, #TRANSLATE " 498 + " WHERE " 499 + " C.CONTENT_ID = C_V.CONTENT_ID " 500 + " AND " 501 + " C_V.INSTANCE_ID = C_I.INSTANCE_ID " 502 + " AND " 503 + " C_I.CONTENT_NODE_ID = #TRANSLATE.OLD_ID " 504 505 506 507 + " SELECT @i = 1 " 508 + " SELECT @j = 0 " 509 510 511 + " SELECT @count = COUNT(*) " 512 + " FROM #CONTENT_TRANSLATE " 513 514 + " WHILE (@j < @count) " 515 + " BEGIN " 516 + " IF NOT ( @i IN (SELECT CONTENT_ID " 517 + " FROM CONTENT " 518 + " ) " 519 + " ) " 520 + " BEGIN " 521 + " UPDATE #CONTENT_TRANSLATE " 522 + " SET NEW_ID = @i " 523 + " WHERE OLD_ID = (SELECT MIN (OLD_ID) " 524 + " FROM #CONTENT_TRANSLATE " 525 + " WHERE NEW_ID = NULL " 526 + " ) " 527 + " SELECT @j = @j + 1 " 528 + " END " 529 + " SELECT @i = @i +1 " 530 + " END " 531 532 + " INSERT INTO CONTENT " 533 + " SELECT NEW_ID, XML_TEXT FROM #CONTENT_TRANSLATE " 534 535 536 537 538 539 540 + " INSERT INTO #CON_INS_TRAN (OLD_ID) " 541 + " SELECT INSTANCE_ID " 542 + " FROM CONTENT_INSTANCE, #TRANSLATE " 543 + " WHERE CONTENT_INSTANCE.CONTENT_NODE_ID = #TRANSLATE.OLD_ID " 544 545 546 + " SELECT @i = 1 " 547 548 + " SELECT @j = 0 " 549 550 551 + " SELECT @count = COUNT(*) " 552 + " FROM #CON_INS_TRAN " 553 554 + " WHILE (@j < @count) " 555 + " BEGIN " 556 + " IF NOT ( @i IN (SELECT INSTANCE_ID " 557 + " FROM CONTENT_INSTANCE " 558 + " ) " 559 + " ) " 560 + " BEGIN " 561 + " UPDATE #CON_INS_TRAN " 562 + " SET NEW_ID = @i " 563 + " WHERE OLD_ID = (SELECT MIN (OLD_ID) " 564 + " FROM #CON_INS_TRAN " 565 + " WHERE NEW_ID = NULL " 566 + " ) " 567 + " SELECT @j = @j + 1 " 568 + " END " 569 + " SELECT @i = @i +1 " 570 + " END " 571 572 573 + " INSERT INTO CONTENT_INSTANCE (INSTANCE_ID, CONTENT_NODE_ID, NAME) " 574 + " SELECT #CON_INS_TRAN.NEW_ID, #TRANSLATE.NEW_ID, NAME " 575 + " FROM CONTENT_INSTANCE, #CON_INS_TRAN, #TRANSLATE " 576 + " WHERE " 577 + " CONTENT_INSTANCE.CONTENT_NODE_ID = #TRANSLATE.OLD_ID " 578 + " AND " 579 + " CONTENT_INSTANCE.INSTANCE_ID = #CON_INS_TRAN.OLD_ID " 580 581 582 583 584 585 + " INSERT INTO #CON_VER_TRAN (OLD_ID) " 586 + " SELECT C_V.VERSION_ID " 587 + " FROM CONTENT_VERSION C_V, CONTENT_INSTANCE C_I, #TRANSLATE " 588 + " WHERE C_V.INSTANCE_ID = C_I.INSTANCE_ID " 589 + " AND " 590 + " C_I.CONTENT_NODE_ID = #TRANSLATE.OLD_ID " 591 592 593 594 + " SELECT @i = 1 " 595 596 + " SELECT @j = 0 " 597 598 599 + " SELECT @count = COUNT(*) " 600 + " FROM #CON_VER_TRAN " 601 602 + " WHILE (@j < @count) " 603 + " BEGIN " 604 + " IF NOT ( @i IN (SELECT VERSION_ID " 605 + " FROM CONTENT_VERSION " 606 + " ) " 607 + " ) " 608 + " BEGIN " 609 + " UPDATE #CON_VER_TRAN " 610 + " SET NEW_ID = @i " 611 + " WHERE OLD_ID = (SELECT MIN (OLD_ID) " 612 + " FROM #CON_VER_TRAN " 613 + " WHERE NEW_ID = NULL " 614 + " ) " 615 + " SELECT @j = @j + 1 " 616 + " END " 617 + " SELECT @i = @i +1 " 618 + " END " 619 620 621 622 + " INSERT INTO CONTENT_VERSION (VERSION_ID, INSTANCE_ID, CONTENT_ID, STATUS_ID, VERSION_DATE, INFO, AUTHOR) " 623 + " SELECT #CON_VER_TRAN.NEW_ID, #CON_INS_TRAN.NEW_ID, #CONTENT_TRANSLATE.NEW_ID, C_V.STATUS_ID, C_V.VERSION_DATE, C_V.INFO, C_V.AUTHOR " 624 + " FROM CONTENT_VERSION C_V, #CON_VER_TRAN, #CON_INS_TRAN, #CONTENT_TRANSLATE " 625 + " WHERE " 626 + " C_V.VERSION_ID = #CON_VER_TRAN.OLD_ID " 627 + " AND " 628 + " C_V.INSTANCE_ID = #CON_INS_TRAN.OLD_ID " 629 + " AND " 630 + " C_V.CONTENT_ID = #CONTENT_TRANSLATE.OLD_ID " 631 632 633 634 635 636 637 + " INSERT INTO CONTENT_NODE " 638 + " SELECT C_T.NEW_ID, C_N.CONTENT_NODE_ID, C_N.LEFT_NR, C_N.RIGHT_NR, C_N.NAME " 639 + " FROM CONTENT_NODE C_N, #CONTENT_TRANSLATE C_T " 640 + " WHERE C_N.CONTENT_ID = C_T.OLD_ID " 641 642 643 644 645 646 647 648 + " INSERT INTO #CONTENT_VALUE " 649 + " SELECT C_T.NEW_ID, C_V.CONTENT_NODE_ID, C_V.IDX, C_V.VALUE, C_V.MEDIA_ID " 650 + " FROM CONTENT_VALUE C_V, #CONTENT_TRANSLATE C_T " 651 + " WHERE C_V.CONTENT_ID = C_T.OLD_ID " 652 653 654 655 656 + " INSERT INTO CONTENT_VALUE " 657 + " SELECT * FROM #CONTENT_VALUE " 658 659 660 661 662 663 664 + " IF (@SITE_TREE_FLAG = 1) " 665 + " BEGIN " 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 + " DECLARE @ST_TARGET_RIGHT int " 682 + " DECLARE @ST_SUBTREE_LEFT int " 683 + " DECLARE @ST_SUBTREE_RIGHT int " 684 + " DECLARE @ST_NODE_COUNT int " 685 + " DECLARE @ST_LOCAL_SHIFT int " 686 + " DECLARE @ST_GLOBAL_SHIFT int " 687 688 689 690 691 692 693 + " SELECT @ST_SUBTREE_RIGHT = RIGHT_NR " 694 + " FROM SITE_TREE " 695 + " WHERE SITE_NODE_ID = @ST_SUBTREE_ROOT_ID " 696 697 + " SELECT @ST_SUBTREE_LEFT = LEFT_NR " 698 + " FROM SITE_TREE " 699 + " WHERE SITE_NODE_ID = @ST_SUBTREE_ROOT_ID " 700 701 702 703 + " SELECT @ST_TARGET_RIGHT = RIGHT_NR " 704 + " FROM SITE_TREE " 705 + " WHERE SITE_NODE_ID = @ST_TARGET_ROOT_ID " 706 707 708 709 710 711 + " SELECT @ST_LOCAL_SHIFT = @ST_TARGET_RIGHT - @ST_SUBTREE_LEFT " 712 713 714 715 716 717 + " INSERT INTO #ST_tmp ( SITE_NODE_ID, SITE_NODE_PARENT, SITE_NODE_TYPE, SITE_NODE_NAME, SITE_NODE_SHORTNAME, LEFT_NR, RIGHT_NR, PG_CONTENT_NODE, PG_SELECTION_ID ) " 718 + " SELECT SITE_NODE_ID, SITE_NODE_PARENT, SITE_NODE_TYPE, SITE_NODE_NAME, SITE_NODE_SHORTNAME, LEFT_NR, RIGHT_NR, PG_CONTENT_NODE, PG_SELECTION_ID " 719 + " FROM SITE_TREE " 720 + " WHERE LEFT_NR > = @ST_SUBTREE_LEFT AND RIGHT_NR <= @ST_SUBTREE_RIGHT " 721 722 723 724 725 726 727 + " UPDATE #ST_tmp " 728 + " SET SITE_NODE_NAME = @NEW_SITE_ROOT_NAME, SITE_NODE_SHORTNAME = @NEW_SITE_ROOT_SHORTNAME " 729 + " WHERE SITE_NODE_ID = @ST_SUBTREE_ROOT_ID " 730 731 732 733 734 735 736 737 738 + " UPDATE #ST_tmp " 739 + " SET LEFT_NR = LEFT_NR + @ST_LOCAL_SHIFT " 740 741 + " UPDATE #ST_tmp " 742 + " SET RIGHT_NR = RIGHT_NR + @ST_LOCAL_SHIFT " 743 744 745 746 747 748 + " SELECT @ST_GLOBAL_SHIFT = ((@ST_SUBTREE_RIGHT - @ST_SUBTREE_LEFT) +1 ) " 749 750 751 752 753 + " UPDATE SITE_TREE " 754 + " SET RIGHT_NR = RIGHT_NR + @ST_GLOBAL_SHIFT " 755 + " WHERE RIGHT_NR >= @ST_TARGET_RIGHT " 756 757 + " UPDATE SITE_TREE " 758 + " SET LEFT_NR = LEFT_NR + @ST_GLOBAL_SHIFT " 759 + " WHERE LEFT_NR > @ST_TARGET_RIGHT " 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 + " INSERT INTO #ST_TRANSLATE(OLD_ID) " 776 + " SELECT SITE_NODE_ID " 777 + " FROM #ST_tmp " 778 779 780 781 + " DECLARE @ST_count int " 782 + " DECLARE @ST_upper int " 783 + " DECLARE @ST_i int " 784 + " DECLARE @ST_j int " 785 786 + " SELECT @ST_i = 1 " 787 788 + " SELECT @ST_j = 0 " 789 790 791 + " SELECT @ST_count = COUNT(*) " 792 + " FROM #ST_TRANSLATE " 793 794 + " WHILE (@ST_j < @ST_count) " 795 + " BEGIN " 796 + " IF NOT ( @ST_i IN (SELECT SITE_NODE_ID " 797 + " FROM SITE_TREE " 798 + " ) " 799 + " ) " 800 + " BEGIN " 801 + " UPDATE #ST_TRANSLATE " 802 + " SET NEW_ID = @ST_i " 803 + " WHERE OLD_ID = (SELECT MIN (OLD_ID) " 804 + " FROM #ST_TRANSLATE " 805 + " WHERE NEW_ID = NULL " 806 + " ) " 807 + " SELECT @ST_j = @ST_j + 1 " 808 + " END " 809 + " SELECT @ST_i = @ST_i +1 " 810 + " END " 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 + " UPDATE #ST_tmp " 826 + " SET SITE_NODE_PARENT = @ST_TARGET_ROOT_ID " 827 + " WHERE SITE_NODE_ID = @ST_SUBTREE_ROOT_ID " 828 829 830 831 832 833 + " UPDATE #ST_tmp " 834 + " SET SITE_NODE_PARENT = TL.NEW_ID " 835 + " FROM #ST_TRANSLATE TL " 836 + " WHERE (#ST_tmp.SITE_NODE_PARENT = TL.OLD_ID " 837 + " AND " 838 + " SITE_NODE_ID != @ST_SUBTREE_ROOT_ID " 839 + " ) " 840 841 842 843 844 + " UPDATE #ST_tmp " 845 + " SET SITE_NODE_ID = TL.NEW_ID " 846 + " FROM #ST_TRANSLATE TL " 847 + " WHERE #ST_tmp.SITE_NODE_ID = TL.OLD_ID " 848 849 850 851 + " INSERT INTO SITE_TREE ( SITE_NODE_ID, SITE_NODE_PARENT, SITE_NODE_TYPE, SITE_NODE_NAME, SITE_NODE_SHORTNAME, LEFT_NR, RIGHT_NR, PG_CONTENT_NODE, PG_SELECTION_ID ) " 852 + " SELECT SITE_NODE_ID, SITE_NODE_PARENT, SITE_NODE_TYPE, SITE_NODE_NAME, SITE_NODE_SHORTNAME, LEFT_NR, RIGHT_NR, PG_CONTENT_NODE, PG_SELECTION_ID " 853 + " FROM #ST_tmp " 854 855 856 857 858 859 860 861 862 863 864 865 866 867 + " UPDATE SITE_TREE " 868 + " SET ST.PG_CONTENT_NODE = CT_T.NEW_ID " 869 + " FROM SITE_TREE ST, #TRANSLATE CT_T " 870 + " WHERE ST.SITE_NODE_ID IN (SELECT NEW_ID " 871 + " FROM #ST_TRANSLATE " 872 + " ) " 873 + " AND " 874 + " ST.PG_CONTENT_NODE = CT_T.OLD_ID " 875 876 877 878 879 + " INSERT INTO SITE_DOCUMENT (SITE_NODE_ID, SITE_NODE_DOC_IDX, PRESENTATION_ID, DOCUMENT_NAME, DOCUMENT_SHORTNAME, INHERITABLE, DOCUMENT_TYPE, EXTERNAL_URL, INHERIT_BEGIN_LEVEL, INHERIT_END_LEVEL) " 881 + " SELECT ST_T.NEW_ID, SD.SITE_NODE_DOC_IDX, SD.PRESENTATION_ID, SD.DOCUMENT_NAME, SD.DOCUMENT_SHORTNAME, SD.INHERITABLE, SD.DOCUMENT_TYPE, SD.EXTERNAL_URL, SD.INHERIT_BEGIN_LEVEL, SD.INHERIT_END_LEVEL " 882 + " FROM #ST_TRANSLATE ST_T, SITE_DOCUMENT SD " 883 + " WHERE SD.SITE_NODE_ID = ST_T.OLD_ID " 884 885 886 887 888 889 890 891 + " INSERT INTO DOCUMENT_CONTENT (SITE_NODE_ID, SITE_NODE_DOC_IDX, PRESENTATION_COMPONENT_IDX, CONTENT_NODE_ID, PROTOTYPE_NODE_ID, SELECTION_ID) " 893 + " SELECT ST_T.NEW_ID, DC.SITE_NODE_DOC_IDX, DC.PRESENTATION_COMPONENT_IDX, DC.CONTENT_NODE_ID, DC.PROTOTYPE_NODE_ID, DC.SELECTION_ID " 894 + " FROM #ST_TRANSLATE ST_T, DOCUMENT_CONTENT DC " 895 + " WHERE DC.SITE_NODE_ID = ST_T.OLD_ID " 896 897 898 899 900 901 + " UPDATE DOCUMENT_CONTENT " 902 + " SET DC.CONTENT_NODE_ID = CT_T.NEW_ID " 903 + " FROM #TRANSLATE CT_T, DOCUMENT_CONTENT DC " 904 + " WHERE DC.SITE_NODE_ID IN (SELECT NEW_ID " 905 + " FROM #ST_TRANSLATE " 906 + " ) " 907 + " AND " 908 + " DC.CONTENT_NODE_ID = CT_T.OLD_ID " 909 910 911 912 913 914 915 916 + " INSERT INTO DOCUMENT_REFERENCE(SRC_SITE_NODE_ID, SRC_SITE_NODE_DOC_IDX, SRC_PRESENTATION_COMPONENT_IDX, REFERENCE_TYPE, DEST_SITE_NODE_ID, DEST_SITE_NODE_DOC_SHORTNAME, SELECTION_TYPE, SELECTION_DATA) " 917 + " SELECT ST_T.NEW_ID, DR.SRC_SITE_NODE_DOC_IDX, DR.SRC_PRESENTATION_COMPONENT_IDX, DR.REFERENCE_TYPE, DR.DEST_SITE_NODE_ID, DR.DEST_SITE_NODE_DOC_SHORTNAME, DR.SELECTION_TYPE, DR.SELECTION_DATA " 918 + " FROM #ST_TRANSLATE ST_T, DOCUMENT_REFERENCE DR " 919 + " WHERE DR.SRC_SITE_NODE_ID = ST_T.OLD_ID " 920 921 922 923 924 925 + " UPDATE DOCUMENT_REFERENCE " 926 + " SET DR.DEST_SITE_NODE_ID = ST_T.NEW_ID " 927 + " FROM DOCUMENT_REFERENCE DR, #ST_TRANSLATE ST_T " 928 + " WHERE DR.DEST_SITE_NODE_ID = ST_T.OLD_ID " 929 + " AND " 930 + " DR.SRC_SITE_NODE_ID IN (SELECT NEW_ID " 931 + " FROM #ST_TRANSLATE " 932 + " ) " 933 934 935 936 937 + " INSERT INTO #REL_REFS (OLD_SRC, OLD_TAR, DOC_IDX, COMPONENT_IDX, NEW_SRC) " 938 + " SELECT SRC_SITE_NODE_ID, DEST_SITE_NODE_ID, SRC_SITE_NODE_DOC_IDX, SRC_PRESENTATION_COMPONENT_IDX, NEW_ID " 939 + " FROM DOCUMENT_REFERENCE, #ST_TRANSLATE " 940 + " WHERE REFERENCE_TYPE = " + REFERENCE_RELATIVE 941 + " AND " 942 + " SRC_SITE_NODE_ID = OLD_ID " 943 944 945 + " UPDATE #REL_REFS " 946 + " SET DIST = " 947 + " ( " 948 + " SELECT COUNT(*) " 949 + " FROM SITE_TREE " 950 + " WHERE " 951 + " LEFT_NR <= (SELECT LEFT_NR FROM SITE_TREE WHERE SITE_NODE_ID = #REL_REFS.OLD_SRC) " 952 + " AND " 953 + " LEFT_NR > (SELECT LEFT_NR FROM SITE_TREE WHERE SITE_NODE_ID = #REL_REFS.OLD_TAR) " 954 + " AND " 955 + " RIGHT_NR >= (SELECT RIGHT_NR FROM SITE_TREE WHERE SITE_NODE_ID = #REL_REFS.OLD_SRC) " 956 + " AND " 957 + " RIGHT_NR < (SELECT RIGHT_NR FROM SITE_TREE WHERE SITE_NODE_ID = #REL_REFS.OLD_TAR) " 958 + " ) " 959 960 961 + " UPDATE DOCUMENT_REFERENCE " 962 + " SET DEST_SITE_NODE_ID = NEW_SRC " 963 + " FROM #REL_REFS " 964 + " WHERE " 965 + " NEW_SRC = DOCUMENT_REFERENCE.SRC_SITE_NODE_ID " 966 + " AND " 967 + " DOC_IDX = DOCUMENT_REFERENCE.SRC_SITE_NODE_DOC_IDX " 968 + " AND " 969 + " COMPONENT_IDX = DOCUMENT_REFERENCE.SRC_PRESENTATION_COMPONENT_IDX " 970 + " AND" 971 + " DIST=0" 972 973 + " DELETE FROM #REL_REFS WHERE DIST=0" 974 975 976 977 + " UPDATE #REL_REFS " 978 + " SET NEW_TAR = " 979 + " ( " 980 + " SELECT SITE_NODE_ID " 981 + " FROM SITE_TREE OUTER " 982 + " WHERE " 983 + " #REL_REFS.DIST = " 984 + " ( " 985 + " SELECT COUNT(*) " 986 + " FROM SITE_TREE INNER " 987 + " WHERE " 988 + " INNER.LEFT_NR > OUTER.LEFT_NR " 989 + " AND " 990 + " INNER.RIGHT_NR < OUTER.RIGHT_NR " 991 + " AND " 992 + " INNER.LEFT_NR <= (SELECT LEFT_NR FROM SITE_TREE WHERE SITE_NODE_ID = #REL_REFS.NEW_SRC) " 993 + " AND " 994 + " INNER.RIGHT_NR >= (SELECT RIGHT_NR FROM SITE_TREE WHERE SITE_NODE_ID = #REL_REFS.NEW_SRC) " 995 + " ) " 996 997 + " ) " 998 + " WHERE DIST != 0 " 999 1000 1001 + " UPDATE DOCUMENT_REFERENCE " 1002 + " SET DEST_SITE_NODE_ID = NEW_TAR " 1003 + " FROM #REL_REFS " 1004 + " WHERE " 1005 + " NEW_SRC = DOCUMENT_REFERENCE.SRC_SITE_NODE_ID " 1006 + " AND " 1007 + " DOC_IDX = DOCUMENT_REFERENCE.SRC_SITE_NODE_DOC_IDX " 1008 + " AND " 1009 + " COMPONENT_IDX = DOCUMENT_REFERENCE.SRC_PRESENTATION_COMPONENT_IDX " 1010 + " AND " 1011 + " DIST != 0 " 1012 1013 1014 1015 1016 1017 1018 1019 + " INSERT INTO STRUCTURED_CONTENT(SITE_NODE_ID, FORM_ID, CONTENT_ID) " 1020 + " SELECT ST_T.NEW_ID, S_C.FORM_ID, S_C.CONTENT_ID " 1021 + " FROM #ST_TRANSLATE ST_T, STRUCTURED_CONTENT S_C " 1022 + " WHERE ST_T.OLD_ID = S_C.SITE_NODE_ID " 1023 1024 1025 1026 1027 1028 1029 1030 1031 + " DELETE FROM #CONTENT " 1032 1033 + " DELETE FROM #CONTENT_TRANSLATE " 1034 1035 + " DELETE FROM #CONTENT_NODE " 1036 1037 + " DELETE FROM #CONTENT_VALUE " 1038 1039 1040 1041 1042 1043 + " INSERT INTO #CONTENT_TRANSLATE " 1044 + " SELECT STRUCTURED_CONTENT.CONTENT_ID, NULL, C.XML_TEXT " 1045 + " FROM STRUCTURED_CONTENT, #ST_TRANSLATE, CONTENT C " 1046 + " WHERE STRUCTURED_CONTENT.SITE_NODE_ID = #ST_TRANSLATE.OLD_ID " 1047 + " AND C.CONTENT_ID = STRUCTURED_CONTENT.CONTENT_ID " 1048 1049 1050 1051 1052 1053 1054 + " SELECT @C_i = 1 " 1055 1056 + " SELECT @C_j = 0 " 1057 1058 1059 + " SELECT @C_count = COUNT(*) " 1060 + " FROM #CONTENT_TRANSLATE " 1061 1062 + " WHILE (@C_j < @C_count) " 1063 + " BEGIN " 1064 + " IF NOT ( @C_i IN (SELECT CONTENT_ID " 1065 + " FROM CONTENT " 1066 + " ) " 1067 + " ) " 1068 + " BEGIN " 1069 + " UPDATE #CONTENT_TRANSLATE " 1070 + " SET NEW_ID = @C_i " 1071 + " WHERE OLD_ID = (SELECT MIN (OLD_ID) " 1072 + " FROM #CONTENT_TRANSLATE " 1073 + " WHERE NEW_ID = NULL " 1074 + " ) " 1075 + " SELECT @C_j = @C_j + 1 " 1076 + " END " 1077 + " SELECT @C_i = @C_i +1 " 1078 + " END " 1079 1080 1081 1082 1083 1084 1089 1090 + " INSERT INTO #CONTENT (CONTENT_ID, XML_TEXT ) " 1092 + " SELECT #CONTENT_TRANSLATE.NEW_ID, #CONTENT_TRANSLATE.XML_TEXT " 1093 + " FROM CONTENT C, #CONTENT_TRANSLATE " 1094 + " WHERE C.CONTENT_ID = #CONTENT_TRANSLATE.OLD_ID " 1095 1096 1097 + " INSERT INTO CONTENT " 1098 + " SELECT * FROM #CONTENT " 1099 1100 1107 1108 1109 + " UPDATE STRUCTURED_CONTENT " 1110 + " SET STRUCTURED_CONTENT.CONTENT_ID = #CONTENT_TRANSLATE.NEW_ID " 1111 + " FROM #CONTENT_TRANSLATE, #ST_TRANSLATE " 1112 + " WHERE STRUCTURED_CONTENT.CONTENT_ID = #CONTENT_TRANSLATE.OLD_ID " 1113 + " AND " 1114 + " STRUCTURED_CONTENT.SITE_NODE_ID = #ST_TRANSLATE.NEW_ID " 1115 1116 1117 1118 1119 1120 + " INSERT INTO #CONTENT_NODE " 1121 + " SELECT C_T.NEW_ID, C_N.CONTENT_NODE_ID, C_N.LEFT_NR, C_N.RIGHT_NR, C_N.NAME " 1122 + " FROM CONTENT_NODE C_N, #CONTENT_TRANSLATE C_T " 1123 + " WHERE C_N.CONTENT_ID = C_T.OLD_ID " 1124 1125 1126 + " INSERT INTO CONTENT_NODE " 1127 + " SELECT * FROM #CONTENT_NODE " 1128 1129 1130 1131 1132 + " INSERT INTO #CONTENT_VALUE " 1134 + " SELECT C_T.NEW_ID, C_V.CONTENT_NODE_ID, C_V.IDX, C_V.VALUE, C_V.MEDIA_ID " 1135 + " FROM CONTENT_VALUE C_V, #CONTENT_TRANSLATE C_T " 1136 + " WHERE C_V.CONTENT_ID = C_T.OLD_ID " 1137 1138 1139 1140 + " INSERT INTO CONTENT_VALUE " 1141 + " SELECT * FROM #CONTENT_VALUE " 1142 1143 1144 1145 + " END " 1146 1147 1148 1149 1150 1151 + " SELECT @NEW_CONT_ROOT_ID = NEW_ID " 1152 + " FROM #TRANSLATE " 1153 + " WHERE OLD_ID = @TEMPLATE_ROOT " 1154 1155 1156 + " SELECT @NEW_SITE_ROOT_ID = NEW_ID " 1157 + " FROM #ST_TRANSLATE " 1158 + " WHERE OLD_ID = @ST_SUBTREE_ROOT_ID " 1159 1160 1161 1162 + " SELECT @NEW_CONT_ROOT_ID AS NEW_CONT_ROOT_ID, @NEW_SITE_ROOT_ID AS NEW_SITE_ROOT_ID " 1163 1164 1165 1166 1167 1168 + " COMMIT " 1169 1170 1171 1172 1173 1174 1175 1176 + " drop table #ST_tmp " 1177 + " drop table #ST_TRANSLATE " 1178 1179 1180 1181 1182 + " drop table #tmp " 1183 + " drop table #TRANSLATE " 1184 1185 1186 1187 + " drop table #CONTENT " 1188 + " drop table #CONTENT_TRANSLATE " 1189 + " drop table #CON_INS_TRAN " 1190 + " drop table #CON_VER_TRAN " 1191 + " drop table #CONTENT_NODE " 1192 + " drop table #CONTENT_VALUE " 1193 + " drop table #Content_Instance " 1194 + " drop table #Content_Attribute_Value" 1195 1196 1197 + " DROP TABLE #REL_REFS " 1198 ; 1199 1200 1201 public void initQuery(Connection con) { 1202 super.initQuery( 1203 con, 1204 isPrepared, 1205 paramOrder, 1206 paramTypes, 1207 setRelevants, 1208 sqlString ); 1209 } 1210} 1211 1212 | Popular Tags |