/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 6 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . idea . refactor ing . move . move Declarations Ċ Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . Empty Runnable Ċ import Ġcom . intellij . openapi . util . Ref Ċ import Ġcom . intellij . psi . Psi Directory Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . refactor ing . move . Move Callback Ċ import Ġcom . intellij . refactor ing . move . move Files Or Directories . Move Files Or Directories Processor Ċ import Ġcom . intellij . usage View . Usage Info Ċ import Ġcom . intellij . usage View . Usage View Descriptor Ċ import Ġcom . intellij . util . containers . Multi Map Ċ import Ġcom . intellij . util . text . Unique Name Generator Ċ import Ġorg . jetbrains . kotlin . idea . Kotlin Bundle Ċ import Ġorg . jetbrains . kotlin . psi . Kt File Ċ Ċ class ĠMove To Kotlin File Processor Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġproject : ĠProject , ĊĠĠĠ Ġprivate Ġval Ġsource File : ĠK t File , ĊĠĠĠ Ġprivate Ġval Ġtarget Directory : ĠPsi Directory , ĊĠĠĠ Ġprivate Ġval Ġtarget FileName : ĠString , ĊĠĠĠ Ġsearch In Comments : ĠBoolean , ĊĠĠĠ Ġsearch In Non Java Files : ĠBoolean , ĊĠĠĠ Ġmove Callback : ĠMove Callback ?, ĊĠĠĠ Ġprepare Successful Callback : ĠRunnable Ġ= ĠEmpty Runnable . INSTANCE , ĊĠĠĠ Ġprivate Ġval Ġthrow On Conflict s : ĠBoolean Ġ= Ġfalse Ċ ) Ġ: ĠMove Files Or Directories Processor ( ĊĠĠĠ Ġproject , ĊĠĠĠ ĠarrayOf ( source File ), ĊĠĠĠ Ġtarget Directory , ĊĠĠĠ Ġtrue , ĊĠĠĠ Ġsearch In Comments , ĊĠĠĠ Ġsearch In Non Java Files , ĊĠĠĠ Ġmove Callback , ĊĠĠĠ Ġprepare Successful Callback Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget CommandName () Ġ= ĠKotlin Bundle . message (" text . move . file . 0 ", Ġsource File . name ) ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Usage View Descriptor ( us ages : ĠArray < out ĠUsage Info >): ĠUsage View Descriptor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMove Files With Declarations View Descriptor ( array Of ( source File ), Ġtarget Directory ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpreprocess Usage s ( ref Usage s : ĠRef < Array < Usage Info >> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( conflict s , Ġusage s ) Ġ= Ġpreprocess Conflict Usage s ( ref Usage s ) ĊĠĠĠĠĠĠĠ Ġreturn Ġshow Conflict s ( conflict s , Ġusage s ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Conflict s ( conflict s : ĠMulti Map < Psi Element , ĠString >, Ġusage s : ĠArray < out ĠUsage Info >? ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( throw On Conflict s Ġ&& Ġ! conflict s . isEmpty ) Ġthrow ĠRefactor ing Conflict s Found Exception () ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . show Conflict s ( conflict s , Ġusage s ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrename File Temp or arily IfNeeded () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( target Directory . find File ( source File . name ) Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġcontaining Directory Ġ= Ġsource File . containing Directory Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġtemporary Name Ġ= ĠUnique Name Generator . generate Unique Name (" temp ", Ġ"", Ġ". kt ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontaining Directory . find File ( it ) Ġ== Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsource File . name Ġ= Ġtemporary Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperform Ref actor ing ( us ages : ĠArray < Usage Info >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrename File Temp or arily IfNeeded () ĊĠĠĠĠĠĠĠ Ġsuper . perform Ref actor ing ( us ages ) ĊĠĠĠĠĠĠĠ Ġsource File . name Ġ= Ġtarget FileName ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠConflict Usage s ( val Ġconflicts : ĠMulti Map < Psi Element , ĠString >, Ġ@ Suppress (" Array In Data Class ") Ġval Ġusage s : ĠArray < Usage Info >) ĊĊĠĠĠĠĠĠĠ Ġfun Ġpreprocess Conflict Usage s ( ref Usage s : ĠRef < Array < Usage Info >> ): ĠConflict Usage s Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusage s : ĠArray < Usage Info > Ġ= Ġref Usage s . get () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( conflict Usage s , Ġusage sTo Process ) Ġ= Ġusage s . partition Ġ{ Ġit Ġis ĠConflict Usage Info Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconflicts Ġ= ĠMulti Map < Psi Element , ĠString >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( conflict Usage Ġin Ġconflict Usage s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconflicts . put Values ( conflict Usage . element , Ġ( conflict Usage Ġas ĠConflict Usage Info ). messages ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġref Usage s . set ( us ages To Process . to Typed Array ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠConflict Usage s ( conflict s , Ġusage s ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ