/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 5 Ġ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 TopLevel Declarations Ċ Ċ import Ġcom . intellij . refactor ing . Package Wrapper Ċ import Ġcom . intellij . refactor ing . Move Destination Ċ import Ġorg . jetbrains . kotlin . psi . Jet File Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . Psi Manager Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġkotlin . properties . Deleg ates Ċ Ċ public Ġtrait ĠKotlin Move Target Ġ{ ĊĠĠĠ Ġval Ġpackage Wrapper : ĠPackage Wrapper ? ĊĠĠĠ Ġfun Ġget OrCreate Target Psi ( original Psi : ĠPsi Element ): ĠPsi Element ? ĊĠĠĠ Ġfun Ġget Target Psi IfExists ( original Psi : ĠPsi Element ): ĠPsi Element ? ĊĊĠĠĠ Ġ// ĠCheck Ġpossible Ġerrors Ġand Ġreturn Ġcorresponding Ġmessage , Ġor Ġnull Ġif Ġno Ġerrors Ġare Ġdetected ĊĠĠĠ Ġfun Ġverify ( file : ĠPsi File ): ĠString ? Ċ } Ċ Ċ public Ġclass ĠMove Destination Kotlin Move Target ( val Ġmove Destination : ĠMove Destination ): ĠKotlin Move Target Ġ{ ĊĠĠĠ Ġoverride Ġval Ġpackage Wrapper : ĠPackage Wrapper ? Ġ= Ġmove Destination . getTarget Package () ĊĊĠĠĠ Ġoverride Ġfun Ġget OrCreate Target Psi ( original Psi : ĠPsi Element ): ĠPsi Element ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove Destination . getTarget Directory ( original Psi . get Containing File ()) ĊĊĠĠĠ Ġoverride Ġfun Ġget Target Psi IfExists ( original Psi : ĠPsi Element ): ĠPsi Element ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove Destination . getTarget IfExists ( original Psi . get Containing File ()) ĊĊĠĠĠ Ġoverride Ġfun Ġverify ( file : ĠPsi File ): ĠString ? Ġ= Ġmove Destination . verify ( file ) Ċ } Ċ Ċ public Ġclass ĠJet File Kotlin Move Target ( val Ġtarget File : ĠJet File ): ĠKotlin Move Target Ġ{ ĊĠĠĠ Ġoverride Ġval Ġpackage Wrapper : ĠPackage Wrapper ? Ġ= Ġtarget File . get Package Fq Name (). asString (). let Ġ{ ĠpackageName Ġ-> ĊĠĠĠĠĠĠĠ ĠPackage Wrapper ( Psi Manager . getInstance ( target File . getProject ()), ĠpackageName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget OrCreate Target Psi ( original Psi : ĠPsi Element ): ĠPsi Element ? Ġ= Ġtarget File ĊĊĠĠĠ Ġoverride Ġfun Ġget Target Psi IfExists ( original Psi : ĠPsi Element ): ĠPsi Element ? Ġ= Ġtarget File ĊĊĠĠĠ Ġ// ĠNo Ġadditional Ġverification Ġis Ġneeded ĊĠĠĠ Ġoverride Ġfun Ġverify ( file : ĠPsi File ): ĠString ? Ġ= Ġnull Ċ } Ċ Ċ public Ġclass ĠDeferred Jet File Kotlin Move Target ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġval Ġpackage Fq Name : ĠF q Name , ĊĠĠĠĠĠĠĠ Ġcreate File : Ġ() Ġ-> ĠJet File ?): ĠKotlin Move Target Ġ{ ĊĠĠĠ Ġval Ġcreated File : ĠJet File ? Ġby ĠDeleg ates . lazy ( create File ) ĊĊĠĠĠ Ġoverride Ġval Ġpackage Wrapper : ĠPackage Wrapper Ġ= ĠPackage Wrapper ( Psi Manager . getInstance ( project ), Ġpackage Fq Name . asString ()) ĊĊĠĠĠ Ġoverride Ġfun Ġget OrCreate Target Psi ( original Psi : ĠPsi Element ): ĠPsi Element ? Ġ= Ġcreated File ĊĊĠĠĠ Ġoverride Ġfun Ġget Target Psi IfExists ( original Psi : ĠPsi Element ): ĠPsi Element ? Ġ= Ġnull ĊĊĠĠĠ Ġ// ĠNo Ġadditional Ġverification Ġis Ġneeded ĊĠĠĠ Ġoverride Ġfun Ġverify ( file : ĠPsi File ): ĠString ? Ġ= Ġnull Ċ } Ċ