Xׯdp~ddlZddlZddlmZddlmZddlZddlZddlZddlZdZ ejdkrdZ ddlm Z m Z m Z ddlm Z dd lmZdd lmZmZmZd Zd Zd ZGddZddlmZmZmZGddeZdZGddeZGddeZGddeZGddeZ dS)N) get_exe_path)Versiondarwin_mac) newButton newCheckBox newTreeView) FileChooser)datetime) log_error log_debuglog_infocvt|}|||dSN)SpatialImporterWizard set_schemarun)editorschemaimporters #..\modules\sqlide_import_spatial.py showImporterr+s4$V,,H  LLNNNNNc6tj|d}|d}d|D]}|jdkr |jndStjd}||ffd |d||dS)Nmenu selectionz db.SchemaLoad Spatial Datac$t|Sr)r)senderschemas_selecteds rz#handleContextMenu..As\&JZ5[5[rr)mformsfromgrttypename newMenuItemadd_clicked_callback insert_item add_separator)r&r argsrrsitemr!s @rhandleContextMenur.0s >$v, ' 'D[!I 6[  v  E FF  1 2 2DF[[[[[\\\Qrc4d}tjdkru tj|tjtjd}n#t $r9}t d|d|dddl}|Yd}~nd}~wwxYw tj }|xj tj zc_ tj |_ t|trjt!|D]4\}}t|t"r|dn|||<5t'dd |zn>t|t"r|dn|}t'd|ztjt#|tjtjtj|d }nG#t $r:}t d|d|dddl}|d}Yd}~nd}~wwxYw|S) NWindowsT)stdoutstderrshellzError executing command  rutf8zExecuting command: %s r)r1stdinr2 startupinfor3)platformsystem subprocessPopenPIPEOSErrorr traceback print_exc STARTUPINFOdwFlagsSTARTF_USESHOWWINDOWSW_HIDE wShowWindow isinstancelist enumeratestrencoderjoin)cmdp1excr>infoidxr-s r cmd_executorrPGs> BI%% "!#  aefffBB " " " ICCCE F F F        ! ! ! ! ! ! ! ! "  )++D LLJ; ;LL)1D  #t$$ ; )#UUHC6@c6J6JTt{{6222PTCHH3bggcllBCCCC,6s3,?,?Hcjj(((S3c9:::!#c((:?*/blbq@DNRSSSBB    ICCCE F F F        ! ! !BBBBBB   Is0,A B .BB EG H0HHc,eZdZdZdZdZdZdZdS)SpatialImportercd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_dS)NFi shape) import_tableselected_fieldsprocess_handleimport_overwrite import_appendmy_hostmy_pwdmy_usermy_port my_schemafilepath skipfailuresfeatures_per_transcationdestination_EPSG my_geo_columnabort_requested is_running returncode user_cancelselfs r__init__zSpatialImporter.__init__is #" %"     !(+% $$$ rct|}||_d}||d|r|j||jd}|dkr>|dkr|dz}n? t |}n#t$rYnJwxYw|dkr|dkr ||d n-|d z }||d t|d zz|r|j| \}}|j|_|jd kr[|j r,td||jfztj td||jfzt|tddS)Ngz0 %0.gQ?g?g@Finishedg$@z%d %%drz>Execute command failed with error: %s, the exit code was: %d. zExecute command succeeed. )rPrXrgpollr1readfloat ValueErrorint communicaterhrgrt UserInterruptr Exception) rjrKprogress_notifyrLpctcharnumsoutserrs r execute_cmdzSpatialImporter.execute_cmds #   U### ;R]* GGIII9>>!$$Ds{{3;;*CC#Dkk%czzcCii'Z888d(C OC3sSy>>!9 : : :) ;R]*,^^%% d- ?Q   &Z^bdhds]ttuuu')))[_ceiet^uuvvvoo%./////s0B B  B c$t|dSr)print)rjmsgs rprint_log_messagez!SpatialImporter.print_log_messages c rc d|_|jrtjdkr@d|jjz}t d|zt j|dd|_dSddl } t d|jjztj |jj|j d|_dS#t$rB}td|z|d t!|zYd}~dSd}~wwxYwdS) NTr0ztaskkill /F /T /PID %izKilling task: %s )r3rzSending SIGTERM to task %s z&Exception sending SIGTERM to task: %s z kill task: %s)rerXr8r9pidrr:r;rhsignaloskillSIGTERMr=r rrH)rjrKrrMs rrzSpatialImporter.kills6#   G  I--.1D1HH.4555 T2222#'    G7C;;Dc 6i}|j|d<|j|d<|j|d<|j|d<|j|d<g}t jdkr|d|tt jdkrdnd |d |d |d |z||j |j r2|d |d|j z|j r2|d|d|j z|j r|d|jr|d|jr|d|jr/|d||j|d|d|t#|j|d|d|jz|d|d|d|jr|dn|dd|_ |d||n`#t0j$rt5dt6$r5}ddl}t;d |d!|d"|d#d}~wwxYwd$|_dS)%Nhostruserpwdportwin32exec ogr2ogr.exeogr2ogrz-fz"MySQL"zMMySQL:"%(schema)s,host=%(host)s,user=%(user)s,password=%(pwd)s,port=%(port)d"z-nlnz"%s"z-t_srsEPSG:z -skipfailuresz-appendz -overwritez-selectz -progressz-gtz-lcozGEOMETRY_NAME="%s"z ENGINE=InnoDbzSPATIAL_INDEX=YESzSPATIAL_INDEX=NOT zUser cancelledrz:An error occured during execution of ogr2ogr file import: z , stack: z The command was: r4F)r[r_r]r\r^sysr8lowerappendrr`rVrcrarZrYrWrHrbrd spatial_indexrfrrJrxryrrzr>r format_exc)rjr{cmd_argsrKrMr>s rrzSpatialImporter.runs<!^<+< <    7 * * JJv    <1C1C1E1E1P1P V_``aaa 4 9 bemmnnn 4=!!!   3 JJv    JJv 11 2 2 2   8 JJx JJw!66 7 7 7   ( JJ ' ' '   " JJy ! ! !   % JJ| $ $ $   - JJy ! ! ! JJt+ , , , ; 5 3t455666 6 '$*<<=== 6 ?### 6   + JJ* + + + + JJ) * * *    SXXc]]O < < < <     % & & &         I{~{~{~AJAUAUAWAWAWAWY\Y\Y\] ^ ^ ^   s)L22(N0N  NN)__name__ __module__ __qualname__rkrrrrrrrRrRhsc!!!0'0'0'0VGGG$= = = = = rrR) WizardForm WizardPageWizardProgressPagec2eZdZdZdZdZdZdZdZdS)SelectFileWizardPagectj||ddtjd|_|jdd|_d|_dS)NzSelect File to ImportTwidezTarget schema: F) rrkr#newLabel schema_label back_button set_enabledogrinfo_missingogr2ogr_missingrjowners rrkzSelectFileWizardPage.__init__s]D%)@tLLLL"O,=>> $$U+++##rcf |d|j|jddt jd}|d|t jdddt j|_||jddt|_ |j d|j d|j |j||j dd|j|ddt jd}|j|ddt jd|_|jd t j|_|jd t&z|j|jddt jd }|j|dd|j|jddt jd |_|jd|j|jddt jd|_|jd t j|_|jd t&z|j|jddt jd }|j|dd|j|jddt jd|_|jd|j|jddt jd|_|jd t j|_|jd t&z|j|jddt jd}|j|dd|jd|j|jddt jd|_|jd t j|_|jd t&z|j|jddt jd}|j|dd|jd|j|jddt jd|_|j|jdd|dS)NFTz File Path:z Browse...BrowsezSelect a shapefile containing spatial data to load into MySQL. A new table with the imported fields will be created in the selected schema, unless the append or update options are specified.ztask_unchecked%s.pngz!Check if ogrinfo tool is present.zLogrinfo executable wasn't found. Please check if it's available in the PATH.z!Check if ogr2ogr tool is present.zKogr2ogr executable wasn't find. Please check if it's available in the PATH.zCheck if dbf file is present.zCheck if prj file is present.r) set_spacingcontentaddrr#newBoxr newTextEntryshapefile_pathrshapefile_browse_btnset_textset_namer(shapefile_browse ogrinfo_box newImageBox ogrinfo_icon set_imageos_icon_suffixogrinfo_missing_lblshow ogr2ogr_box ogr2ogr_iconogr2ogr_missing_lbldbf_boxdbf_iconproj_box proj_icon warning_srscheck_ogr_executables)rj entry_boxlabel ogrinfo_label ogr2ogr_label dbf_label proj_labels r create_uizSelectFileWizardPage.create_uisR  *E4888M$'' a    fol33UDAAA$133 d)4666$-KK! !**;777 !**8444 !66t7LMMM d/=== E4000!677 t,,,!=.. $$Q'''".00 ##$:^$KLLL T.t<<<(KLL  ]D$777 )5$777#)?4B$C$C   %%e,,, 15$???!=.. $$Q'''".00 ##$:^$KLLL T.t<<<(KLL  ]D$777 )5$777#)?4A$B$B   %%e,,, 15$??? }T**    ###*,,   6 GHHH t444O$CDD  D$/// $ ud333 d++  !!!$$$+--   !7.!HIII $.%666_%DEE  *dD111 4    t444!?2.. )5$777 ""$$$$$rc8|jdSrmaincancelris r go_cancelzSelectFileWizardPage.go_cancel] rclttjdkrdndr*d|_|jdtzn<|jdtz|j dttjdkrdnd r+d|_ |j dtzdS|j dtz|j ddS) Nr ogrinfo.exeogrinfoFtask_checked%s.pngtask_warning%s.pngTrr) rrr8rrrrrrrrrrris rrz*SelectFileWizardPage.check_ogr_executables`s ););)=)=)H)H i X X 0#(D   ' '(<~(M N N N N   ' '(<~(M N N N  $ ) )$ / / / ););)=)=)H)H i X X 0#(D   ' '(<~(M N N N N N   ' '(<~(M N N N  $ ) )$ / / / / /rc&|js|jr%tjddddddS|j}tj |s%tjddddddSdS) NzMissing ExecutablezPOne of the required executables is missing. Please correct this before continue.OKrFz Invalid Pathz!Please specify a valid file path.T) rrr# Utilities show_errorrget_string_valuerpathisfile)rjr`s rvalidatezSelectFileWizardPage.validatens   4#7    ' '(<?QSWY[]_ ` ` `5&7799w~~h''    ' '8[]acegi j j j5trcttj}|tj|j| dd| r| }tj tj |d}|j|tjdtj|d|dgr#|jdt&zn"|jdt&ztjdtj|d|d gr$|jdt&zdS|jdt&z|jd dSdS) Nz Spatial Shape File (*.shp)|*.shpshprr/z.dbfrrz.prjzBProjection file not found, assuming WGS84 Spatial Reference System)r r#OpenFile set_directoryrrdirnamerrset_extensions run_modalget_pathsplitextbasename set_valuerrJrrrrrr)rj filechooserr`filenames rrz%SelectFileWizardPage.shapefile_browseys!&/22 !!"'//$2E2V2V2X2X"Y"YZZZ""#EuMMM  " " p"++--Hw''(8(8(B(BCCAFH   ) )( 3 3 3w~~bggrwx'@'@Xf&UVVWW O ''(<~(MNNNN ''(<~(MNNNw~~bggrwx'@'@Xf&UVVWW p(()=)NOOOOO(()=)NOOO ))*nooooo p prN) rrrrkrrrrrrrrrrsw$$$M%M%M%^ 0 0 0ppppprrcltj|}|tj|Sr)r#r set_styleSmallHelpTextStyle)textls r small_labelrs+AKK)*** Hrc>eZdZdZdZdZdZdZdZdZ dZ d S) ContentPreviewPagectj||ddd|_g|_t j|jjddd|_ dS)NzImport OptionsTrr) rrk layer_name column_listrr$r serverVersion#is_supported_mysql_version_at_leastsupport_spatial_indexrs rrkzContentPreviewPage.__init__s^D%)9EEEE%,_U\5O%P%P%t%tuvxy{|%}%}"""rcH|jjjSrrselect_file_pagerrris rrzContentPreviewPage.get_pathy)8IIKKKrcFttjdkrdndd|}t |}|\}}|rtd|zddl}| d|j }| D]D}| dr|j |d d |d d |_|j|d d ||}|X|j} | dd | d |d Ft4jjd t<j |dz} | r|j!| dS|j!dtEd dS)Nrrrz -al -so z/There was an error getting file information: %srz^(\w+):\s(\w+)\s\(([0-9\.]+)\)z Layer name: :rmTz%s.prjzCan't find EPSG fallback to 0)#rrr8rrrPrwr recompile IGNORECASE splitlines startswithlayer_name_lblrsplitstripr table_namermatchradd_nodeset_bool set_stringgrouprxmodulesrfetchAuthorityCodeFromFilerrrepsg_lblr) rjrKrLrrr plinemrowress rget_infozContentPreviewPage.get_infosF!-s|?Q?Q?S?SW^?^?^mmdm!n!n!n!nptp}p}pppA #  ^^%% d  P G$N O O O JJ7 G GOO%% 2 2D~.. 2#,,TZZ__Q-?-E-E-G-GHHH"&**S//!"4":":"<"<))$**S//!*<*B*B*D*DEEEE774==q-*3355CLLD)))NN1aggajj111k#>>x"'JZJZ[_[h[h[j[jJkJklmJn?noo  6 M " "3 ' ' ' ' ' M " "1 % % % 4 5 5 5 5 5rc8|jdSrrris rrzContentPreviewPage.go_cancelrrcd} t|j}n#YnxYwt|jr+|dkr%tjddddddS|}t|dkr%tjddddddS|j}t|d krTtj tjd d d d dkr!|j |j dSdSdS)NrzDestination ESPGz5Incorrect destination EPSG. Value should be a number.rrFzMissing columnsz-Please specify at least one column to import.rmzInvalid Table Name z(Please specify a destination table name.zUse Layer NameCancelT) rvconvert_to_epsgrlenr#rr get_fieldsrResultOkrr)rjresultsfieldsrs rrzContentPreviewPage.validatesl ->>@@AAFF  D t#4466 7 7 FaKK   ' '(:.$s2qurErEFOQZr[r[rc0||Srr<)r?r>rjs rr"z.ContentPreviewPage.create_ui..%s2txuHuHIRT]u^u^rz(Drop the selected table and recreate it.zCreate spatial indexz5import will make spatial index around geometry columnz#Convert data to the following EPSG:z1leave empty to import the data with no conversion)#rr#rrrrrrrrrr TreeFlatListr add_columnCheckColumnTypeStringColumnType end_columnsset_sizernewPanelTitledBoxPanel set_title set_paddingr skipfailures_chbr set_active append_chb overwrite_chbr(rspatial_index_chbr'r#)rj layer_box layer_headingepsg_boxepsg_box_headingrcbox options_layer options_box boxfailures boxappend boxoverwrite boxspatial boxconverts` rrzContentPreviewPage.create_uis9 M$'' a    66  mUD111$ob11 d)5$777 E4000=&&Q!?733 %ud333++  T]E4000 5$///M$'' b!!! fo&:;;UDIII -// dotT222 E4000t}U##&v':;; ##F$:BDIII ##F$;]CQVWWW $$&&& !!"c*** LMMuVZ[[[ !5$/// ud+++ $(=>>  4555mE** ######mE** +  &&777 ((///-ud;;; $`aachjnooo UD111M%(( %--   !:;;; ""5))) doud333 k"[\\^ceijjj 5$///}U++ (]] ##$=>>> %%e,,, ,,]a]o.[.[.[.[.[ \ \ \ //4?`d`r1^1^1^1^1^ _ _ _+UD999%OPPRWY]^^^ eT222  % 5u--J%0]]D "  " + +,B C C C  " - -e 4 4 4 NN415$ ? ? ? NN;'^__afhl m m m OOJt 4 4 4+&&&4    t444]5)) M$'' a    fo&KLLeUYZZZ%244 d*E4888y$---{#VWWY^`efff UD111 rc\|r|ddSdS)NF) get_activerL)rjchk1chk2s rr=z!ContentPreviewPage.one_check_onlyDs6 ??   # OOE " " " " " # #rN) rrrrkrr#rrr)rr=rrrrrs~~~ LLL6666.iiiV#####rrcHeZdZdZdZfdZdZdZdZdZ dZ xZ S) ImportProgressPagectj||d||jdd||jddd|_d|_dS)Nz Import DatazPrepare importzPrepare ImportzImport data filezImport Data File)rrkadd_taskprepare_importadd_threaded_task start_import importer_timerrs rrkzImportProgressPage.__init__Ksb#D%??? d)+;=MNNN t02DFXYYY! rc|j}|d}|j}d}tj|||d\}}|sdS|S)NuserNamezMySQL password for File ImportF)parameterValueshostIdentifierr#rfind_or_ask_for_password)rj connectionrjusernamertitleacceptedrs rget_mysql_passwordz%ImportProgressPage.get_mysql_passwordSsT$4":.(0(AA%xY^__ # 4 rc|dd|_tt||dS)NT)resetrsuperrapage_activated)rj advancing __class__s rruz!ImportProgressPage.page_activated]sA 4   $''66yAAAAArcH|jjjSrrris rrzImportProgressPage.get_pathbr rc|jr>|jjr2tjdddddt dt |_||j_|jjdks)tj |jjst d|jjz| |j jj|j_|jjdkrt#dt d|j jjjj|j_|j jjjj|j_|j jjjj|j_|j j|j_|j jj|j_|j jj|j_ |j jj!|j_"tG|j jd r.|j jj$|j_%n d |j_%|j jj&'dkr-|j jj&'|j_(|j jj)'dkr:tU|j jj)'|j_+d ,|j j-|j_.d S) Nz Importing...z!Import thread is already running.OkrzImport is already runningz!Unable to open specified file: %szCancelled MySQL password input zCancelled MySQL password inputrOF,T)/rrfr#r show_message RuntimeErrorrRrr`rrrrqrrrmr\r rjhostNamer[rr^rir]selected_schemar_content_preview_pagerKr]rarNrYrMrZhasattrrOrrrrVr'rvrcrJr)rWris rrdz!ImportProgressPage.prepare_importfs = rs2 ((((((######%$$$$$$$$$$$$$$$<N76666666668888888888 .BV V V V V V V V rDCCCCCCCCCFpFpFpFpFp:FpFpFpR   t#t#t#t#t#t#t#t#nU#U#U#U#U#+U#U#U#p S S S S S* S S S"+++++J+++++r