/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 ĠS IA ĠJ oom Ċ Ġ* Ċ Ġ* Ġ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 . jo om . g rip . io Ċ Ċ import Ġjava . nio . file . Path Ċ import Ġkotlin . io . path . exists Ċ import Ġkotlin . io . path . extension Ċ import Ġkotlin . io . path . isDirectory Ċ Ċ object ĠIo Factory Ġ: ĠFile Source . Factory , ĠFile Sink . Factory Ġ{ ĊĊĠ Ġoverride Ġfun Ġcreate File Source ( input Path : ĠPath ): ĠFile Source Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( input Path . source Type ) Ġ{ ĊĠĠĠĠĠ ĠSource Type . EMPTY Ġ-> ĠEmpty File Source ĊĠĠĠĠĠ ĠSource Type . DIRECTORY Ġ-> ĠDirectory File Source ( input Path ) ĊĠĠĠĠĠ ĠSource Type . JAR Ġ-> ĠJar File Source ( input Path ) ĊĠĠĠĠĠ ĠSource Type . J RT Ġ-> ĠJ rt File Source ( input Path ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate File Sink ( input Path : ĠPath , Ġoutput Path : ĠPath ): ĠFile Sink Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( input Path . source Type ) Ġ{ ĊĠĠĠĠĠ ĠSource Type . EMPTY Ġ-> ĠEmpty File Sink ĊĠĠĠĠĠ ĠSource Type . DIRECTORY Ġ-> ĠDirectory File Sink ( output Path ) ĊĠĠĠĠĠ ĠSource Type . JAR Ġ-> ĠJar File Sink ( output Path ) ĊĠĠĠĠĠ ĠSource Type . J RT Ġ-> ĠEmpty File Sink ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval ĠPath . source Type : ĠSource Type ĊĠĠĠ Ġget () Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠ Ġfile System . toString (). startsWith (" j rt ") Ġ-> ĠSource Type . J RT ĊĠĠĠĠĠ Ġ! exists () Ġ|| Ġis Directory () Ġ-> ĠSource Type . DIRECTORY ĊĠĠĠĠĠ Ġextension . endsWith (" jar ", Ġignore Case Ġ= Ġtrue ) Ġ-> ĠSource Type . JAR ĊĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unknown Ġfile Ġtype Ġfor Ġfile Ġ$ this ") ĊĠĠĠ Ġ} ĊĊĠ Ġprivate Ġenum Ġclass ĠSource Type Ġ{ ĊĠĠĠ ĠEMPTY , ĊĠĠĠ ĠDIRECTORY , ĊĠĠĠ ĠJ AR , ĊĠĠĠ ĠJ RT ĊĠ Ġ} Ċ } Ċ