XׯdRddlZddlZddlZddlmZddlmZGddeZGddeZGdd eZdS) N) WizardPage)WizardProgressPagec,eZdZdZdZdZdZdZdS)MainViewcx tj||d|j|ddt jd}|d|j|ddt j tj }| d|d|j|ddt j d}||| dt j|_|jd |jd ||jdd|t jd ddt j|_|jd |jd |j|j||jddt j d|_|jdt jd}|d|j|dd|jdt j|_|jd|jt2jt2jdd|j|jddt j}|d|d||j|j|dd||jddt j tj }| d|j|ddt j d}||| d|dt j|_|jd|jd||jdd|j d|d|_!dS)NzTarget Creation OptionsObjectMigrationzpSelect options for the creation of the migrated schema in the target MySQL server and click [Next >] to execute.Page DescriptionFTzSchema Creation zCreate schema in target RDBMSz Create SchemazCreate a SQL script filezCreate a Script Filez Script File:z Script FilezScript File Value~zmigration_script.sqlz Browse...BrowseOptionsz`Keep schemas if they already exist. Objects that already exist will not be recreated or updated.z Keep Schema)"r__init__mainadd_wizard_pagemformsnewLabelset_namecontentaddnewPanelTitledBoxPanel set_titlenewBox set_padding newCheckBox _create_dbset_text_create_scriptadd_clicked_callback_toggle_sql_script _file_hbox set_spacing newTextEntry_create_script_file set_valueospathjoin expanduser newButton _browse_files _keep_schema set_active_check_file_duplicate)selfrlabelpanelboxbuttons '..\modules\migration_schema_creation.pyrzMainView.__init__ssD$(ABBB !!$(9;TUUU!TUU )*** t,,, 566 )*** ())) t,,,mE"" #  ,..   !@AAA   111 --- ##UD111$022 $$%?@@@ $$%;<<< 001HIII #UD111 --- ##A&&&// }%%% E5$///   ///#)#6#8#8   ))*=>>>  **27<<8J8J38O8OQg+h+hiii D4dDAAA!## $$$!!!##D$6777 FE4000 --- 566  """ t,,,mE"" #  ".00 ""$F G G G ""=111 !5$/// ""4((( !!!%)"""ch|j|jdSN)r$ set_enabledr! get_activer2s r7r#zMainView._toggle_sql_scriptbs- ##D$7$B$B$D$DEEEEEr8cd|_dSNT)r1r=s r7_filename_changedzMainView._filename_changedes%)"""r8ctjtjtj}|dt j|j }| t j t j |r|nt j|r|nt jd|r5|j |d|_dSdS)NzSave SQL Script Asr F)rnewFileChooserForm main_formSaveFilerr)r*abspathr'get_string_valueset_pathexistsisdirdirnamer, run_modalr(get_pathr1)r2form default_paths r7r.zMainView._browse_fileshs$V[%:%:%<%>   /  $ . .t}} ? ? ?).D & & & / /r8c|j|jjjjd<|j|jjjjd<|jr9|j }|r>D rw}}RW__T-B-BCC  ++,@Ch,0"b:::w}}T""  ++,@C]`dCd,0"b:::w~~d## (B #../CF\_cFc,5xEEHNH[\\FIMDIN 5o F F   4 I I I $9/J4     r8N)__name__ __module__ __qualname__rr#r@r.r^r8r7rrsf@*@*@*FFFF*** / / /!!!!!r8rc>eZdZdZdZdZdZdZdZdZ dZ d S) CreationProgressViewcrtj||ddd|_||dddS)NzCreate SchemaszThe SQL scripts generated for the migrated schema objects will now be executed in the target database. You can monitor execution in the logs. If there are errors you may correct them in the next step. Table data will be migrated at a later step.) descriptionTr)rr _autostartr)r2rs r7rzCreationProgressView.__init__sW#D$0@OW X X X X T#46FGGGGGr8c6|||jdd|_||jdd|_||jdd|_||j dd|_ dS)NrSzConnect to Target DatabasezPerform Checks in TargetzCreate Schemas and Objects) clear_tasksadd_task_create_script_task _script_task _connect_task _db_task1_validate_existing_schemata _db_task2add_threaded_task _create_task _db_task3r=s r7 create_uizCreationProgressView.create_uis  MM$*BDXZnoot'9;WYuvvt'GIceAA//0AC_a}~~r8ctj|||r)|jjjjddr|jdn|jd|jjjjddrP|j d|j d|j ddS|j d|j d|j ddSdS)NrWr TFrR) rpage_activatedrrXrYrZgetrlr;rnrprsr2 advancings r7rvz#CreationProgressView.page_activateds,)$ :::  2y~#8<<_bQQ 5!--d3333!--e444y~#8<<\4PP 2**4000**4000**400000**5111**5111**511111 2 2r8cV|tj|dSr:)resetrgo_backr=s r7r|zCreationProgressView.go_backs& "4(((((r8cx|jj|jjjjddS)NrW)rrXcreateTargetScriptrYrZr=s r7rkz(CreationProgressView._create_script_tasks0 ))$).*>*STc*deeeeer8cL|jjjdSr:)rrXmigrationTargetconnectr=s r7rmz"CreationProgressView._connect_tasks! &..00000r8c tjddtd|jjjjjD}tdtjj |jjjj D}t| |}d}t|dkr|jjjjddr d }|jjjjjD]}|j|vrtd tjj |jjjj |jDfd |jD}|r+|d |jzd zz }|d|dzz }|r6t.jdd|zddd t.jkrd}nht.jddt|dkrdnddd|ddzdzddd t.jkrd}|j|dS)Ngz9Validating for existing schemas on target MySQL Server...c3HK|]}|jVdSr:nameupper.0schemas r7 zCCreationProgressView._validate_existing_schemata..s0kk**,,kkkkkkr8c3>K|]}|VdSr:rrs r7rzCCreationProgressView._validate_existing_schemata..sB N N6  N N N N N Nr8TrrQFr c3>K|]}|VdSr:r)r table_names r7rzCCreationProgressView._validate_existing_schemata..sF/M/Mjz/?/?/A/A/M/M/M/M/M/Mr8cTg|]$}|jv|j%Srbr)rtabletarget_schema_tabless r7 zDCreationProgressView._validate_existing_schemata..s6&{&{&{ePUPZP`P`PbPbfzPzPzuzPzPzPzr8z In schema z: z,  zExisting TableszThe following tables already exist in their target schemas: %sThey won't be recreated. Delete those tables before continuing if you want them to be recreated. Do you want to continue?YesNozExisting SchemaszThe rschemas zLwill be dropped in the target MySQL Server and all the existing data will bez lost. Do you want to continue?)grt send_progresssetrrXrcatalogschematamodules DbMySQLFEgetSchemaNames connectionlist intersectionlenrYrZrwrr getTableNamestablesr+rr[ show_messager]rsr;) r2 schema_settarget_schema_setexisting_schemascontinue_migrationmessagerexisting_tablesrs @r7roz0CreationProgressView._validate_existing_schematas> #Z[[[kk49>;Y;a;jkkkkk  N NS[=R=a=abfbkbpcAcL>M>M N N NNN 7 78I J JKK!  1 $ $y~#8<<^USS +"in<DMEEF!;,,..2BBB +./M/M/2{/D/R/RSWS\SaSqS|EJ0K0K/M/M/M,M,M(&{&{&{&{v}&{&{&{O&E<&+#= #II499_#=#=#DD3'445FIPSZIZ]bcgikmmqwqDDD.3*!../A/A`cdt`u`uyz`z`zT\T\AJUJUJLPLULUVfLgLgLgLgDhbDc5D68=tRIILRL_``&+" ""#566666r8c|jjjjddr|jj|jj|jjjdS)NrQF) rrXrYrZrw generateSQL createTargetr disconnectr=s r7rrz!CreationProgressView._create_taskso 9>  4 8 8 O O ) IN & & ( ( ( ##%%% &1133333r8N) r_r`rarrtrvr|rkrmrorrrbr8r7rdrdsHHH222$))) fff111#7#7#7L44444r8rdcVeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd S)CreationReportViewcv tj||dd|j|ddd}t j|}|d|j|ddt j d}| d| dt j tj |_|jd |jtjd d d|jtjd d d|j|j|j||jddt jtj|_|jd|jdt j d}t j|_|jtj|j|j||jddt j d}|d| dt j|_|j d|jd|j!|j"||jddt j#|_$|j$ d|%|j$dd|j$!|j&t j#|_'|j' d|%|j'dd|j'!|j(||dd|j||j) d||jdd|j|ddt jtj|_*|j*d|j*dt j d}|dt j+tj,|_-||j-dd|j*||j|j*dd|j*.dd g|_/dS)NzCreate Target ResultsT)wideraZScripts to create the target schema were executed. No data has been migrated yet. Review the creation report below for errors or warnings. If there are any errors, you can manually fix the scripts and click [Recreate Objects] to retry the schema creation or return to the Manual Editing page to correct them there and retry the target creation.r Fr zScript ResultsObjectResultiXz%SQL CREATE Script for Selected ObjectzSQL IDErz Comment outz Comment OutDiscardApplyzRecreate ObjectszOutput Messages)0rrrrrrrrrrr%set_homogeneous newTreeView TreeFlatList_tree add_columnIconStringColumnType end_columnsadd_changed_callback_selection_changedrr_advboxr newCodeEditor_code set_language LanguageMySQL _code_changedrr_comment_checkr r"_comment_clickedr- _revert_btnadd_end_discard_clicked _apply_btn_apply_clickedadvanced_button_msgbox newTextBoxVerticalScrollBar_msgsset_size _error_tables)r2rtextrfhboxr5vboxs r7rzCreationReportView.__init__sD$(?dKKKK !!$(9;RSSSqod++ /000 eT222}T""  T"""'(;<<  ,--- f98S%PPP f98S%PPP     ''(?@@@ T4(((v'<==  FGGG i(((mE"")++   4555 ''(:;;;  D$'''}T""  $022 $$]333 $$]333 001FGGG $eT222!+-- !!),,, T%ud333 --d.CDDD *,,   ))) T_eT222 ,,T-@AAA eT"""  %%&8999 tT*** tT***v'<==  0111 /000mE"" &v'?@@   D$'''  ud333 b#&&&r8c|jrGtjddddd}|tjkr|jD] }d|_ ndSt j|dS)NzTable Creation ErrorszSome tables could not be created in the target database. Would you like to flag them to be skipped and copy the data for the remaining tables only?zSkip Failed TablesrVr r)rrr[ show_warningResultOk commentedOutrr^)r2rrs r7r^zCreationReportView.go_next?s    --.Ek((B88AFO##!/++E)*E&&+4     r8c|j}|rk|rW|}|j|d}t |t jjr|j }|SdSr:) rget_selected_nodeget_tag _object_dictrw isinstancerclasses db_Columnowner)r2selectedoidobjects r7_selected_log_objectz'CreationReportView._selected_log_objectMs://11  ((** ""$$C&**355F&#+"788 &Mtr8c@|}|r|jSdSr:)r logObject)r2logs r7_selected_objectz#CreationReportView._selected_objectXs(''))  != tr8c@|}|r|jd}|jr2|jd|ddznK|dr6|j|dddd|j|j |j d|j ddSdS)NFz-- rz -- T) rrget_textrr<r replace startswithr;rrr)r2rrs r7rz#CreationReportView._comment_clicked^s&&((  /:&&u--D"--// I ##E$,,tW*E*E$EFFFF??5))IJ'' Wd(C(CABB(GHHH J " "v':#: ; ; ; O ' ' - - -   ( ( . . . . . / /r8c l|}|reg}|jD]-}|jdkrA|d|jdO|jdkrD|dd|jdz|jdkrD|dd|jdz|d|jd/|jd||r|j nd}|rt|d r|j |j |j |j |j|jdk|jd |jd |jd dS|j d |j d |jd |jd dS) Nrz rr WARNING: %s ERROR: %sz temp_sqlTFr )rentries entryTypeappendr+rsplitrr(rhasattrrr rr;rrr0rrr)r2rrentryrs r7rz%CreationReportView._selection_changednsm''))  4D G G?a''KK ej.>.>t.D.D E EFFFF_))KK  ej>N>Nt>T>T0U0U UVVVV_))KK hmmEJ.>t.D.D E EFFFF J T!2!2 3 3 3"%/4  gfj11  J   0 0 0 J " "v':#: ; ; ;   * *6+>!+C D D D L $ $T * * * O ' ' . . .   ( ( / / / F B u%%% &&u---   '''''r8cn|jd|jddSr?)rr;r)r2xyzs r7rz CreationReportView._code_changeds5 ##D))) $$T*****r8c|jd}|}|r%||_|j|_|jd|j ddS)NF) rrrrrr<rrr;r)r2rrs r7rz!CreationReportView._apply_clickedsz""5))&&((  C"FO"&"5"@"@"B"BF  ##E*** $$U+++++r8c|}|rB|j|j|j|jdk|jd|j ddS)NrF) rrr rrr0rrr;r)r2rs r7rz#CreationReportView._discard_clickeds&&((  E J   0 0 0   * *6+>!+C D D D ##E*** $$U+++++r8ci|_g|_|j|jjjjD]}|j}|j }d}tj j tj j tj jtj jtj jfD]}t#||r |jdz}n|stjdd|jz|j}|j}|r6|jdz|z}t#|tj j rn |j}|6|d||d|||j||j|j<g}d} |jD]} | | j} nt9| | j} | jdkr|d| jzJ| jd krX|dd | jzt#|tj j r|j||d | dkr|dd n9| dkr|dd n| d kr|dd|dd|dS)NzGrtObject.16x16.pngz .16x16.png Migrationz-Object creation log '%s' referenced no object.rrrrrzScript executed successfullyztask_checked.pngztask_warning.pngztask_error.pngz, ) rrrclearrrXrY creationLogadd_noderrr db_Schemadb_Tabledb_View db_Routine db_Triggerr__grtclassname__ log_warningrr set_string set_icon_pathset_tag__id__rrmaxrinsertr+) r2rnodeobjiconc full_nameorworstrs r7refreshzCreationReportView.refreshs 9>'3, 1, 1C:&&((D-C(Dk+S[-A3;CVX[XcXnpsp{qGH  c1%%-l:DE  -\_b_g-ghhhI A FSL94 a!677G   OOAy ) ) )   q$ ' ' ' LL $ $ $,/D cj )DE @ @=!OEEu77E?a''KK  :;;;;_))KK;#;<<<!#s{';<<7*11#666KK >????zz""1&89999!""1&89999!""1&6777 OOAuzz$// 0 0 0 0Y, 1, 1r8c\|r|tj||dSr:)r!rrvrxs r7rvz!CreationReportView.page_activateds0   LLNNN!$ 22222r8c`|j}|dSr:)rgo_previous_pager{)r2pages r7 go_advancedzCreationReportView.go_advanceds&y))++ r8N)r_r`rarr^rrrrrrrr!rvr&rbr8r7rrsJ J J Z ! ! !    / / / (((>+++ ,,,,,,010101f333 r8r) rrr) workbench.uirrrrdrrbr8r7r(s, ######++++++q!q!q!q!q!zq!q!q!jZ4Z4Z4Z4Z4-Z4Z4Z4|oooooooooor8