/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠSquare , ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . squareup . sql de light . intellij Ċ Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi . Psi Directory Ċ import Ġcom . intellij . psi . util . Psi Tree Util Ċ import Ġcom . squareup . sql de light . core . Sql Del ight Database Properties Ċ import Ġcom . squareup . sql de light . core . Sql Del ight File Index Ċ import Ġcom . squareup . sql de light . core . compiler . Query Id Generator Ċ import Ġcom . squareup . sql de light . core . lang . Sql Del ight File Ċ import Ġcom . squareup . sql de light . intellij . util . is Ancestor Of Ċ import Ġorg . jetbrains . kotlin . idea . refactor ing . to Psi Directory Ċ Ċ class ĠFile Index ( ĊĠ Ġprivate Ġval Ġproperties : ĠSql Del ight Database Properties , ĊĠ Ġoverride Ġval Ġcontent Root : ĠVirtual File Ċ ) Ġ: ĠSql Del ight File Index Ġ{ ĊĠ Ġoverride Ġval Ġis Configured Ġ= Ġtrue ĊĠ Ġoverride Ġval ĠpackageName Ġ= Ġproperties . packageName ĊĠ Ġoverride Ġval Ġoutput Directory Ġ= Ġproperties . output Directory ĊĠ Ġoverride Ġval ĠclassName Ġ= Ġproperties . className ĊĠ Ġoverride Ġval Ġdependencies Ġ= Ġproperties . dependencies ĊĠ Ġoverride Ġval Ġquery Id Generator Ġ= ĠQuery Id Generator ( properties . className ) ĊĊĠ Ġoverride Ġfun ĠpackageName ( file : ĠSql Del ight File ): ĠString Ġ{ ĊĠĠĠ Ġval Ġoriginal Ġ= Ġif Ġ( file . parent Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġfile . original File Ġas ĠSql Del ight File ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġfile ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġfolder Ġ= Ġsource Folders ( original ) ĊĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ ĠPsi Tree Util . find Common Parent ( original , Ġit ) Ġ!= Ġnull Ġ} Ġ?: Ġreturn Ġ"" ĊĠĠĠ Ġval Ġfolder Path Ġ= Ġfolder . virtual File . path ĊĠĠĠ Ġval ĠfilePath Ġ= Ġoriginal . virtual File !!. path ĊĠĠĠ Ġreturn ĠfilePath . substring ( folder Path . length Ġ+ Ġ 1 , ĠfilePath . indexOf ( original . name ) Ġ- Ġ 1 ). replace ('/', Ġ'.') ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġsource Folders ( ĊĠĠĠ Ġfile : ĠVirtual File , ĊĠĠĠ Ġinclude Dependencies : ĠBoolean ĊĠ Ġ): ĠCollection < Virtual File > Ġ{ ĊĠĠĠ Ġreturn Ġproperties . compilation Units . map Ġ{ Ġ(_, Ġsource Set ) Ġ-> ĊĠĠĠĠĠ Ġsource Set ĊĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġinclude Dependencies Ġ|| Ġ! it . dependency Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġcontent Root . find File By RelativePath ( it . path ) Ġ} ĊĠĠĠ Ġ}. fold ( empty Set ()) Ġ{ Ġcurrent Sources : ĠCollection < Virtual File >, Ġsource Set Ġ-> ĊĠĠĠĠĠ Ġif Ġ( source Set . any Ġ{ Ġit . is Ancestor Of ( file ) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFile Ġis Ġin Ġthis Ġsource Ġset . ĊĠĠĠĠĠĠĠ Ġif Ġ( current Sources . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn @ fold Ġsource Set ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// ĠFile Ġalso Ġin Ġanother Ġsource Ġset ! ĠThe Ġfiles Ġavailable Ġsources Ġis Ġthe Ġintersection . ĊĠĠĠĠĠĠĠĠĠ Ġreturn @ fold Ġcurrent Sources . intersect ( source Set ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn @ fold Ġcurrent Sources ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġsource Folders ( ĊĠĠĠ Ġfile : ĠSql Del ight File , ĊĠĠĠ Ġinclude Dependencies : ĠBoolean ĊĠ Ġ): ĠCollection < Psi Directory > Ġ{ ĊĠĠĠ Ġreturn Ġsource Folders ( file . virtual File !! , Ġinclude Dependencies ) ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . to Psi Directory ( file . project ) !! Ġ} ĊĠ Ġ} Ċ } Ċ