package Ġcom . github . ai . is f provider . data Ċ Ċ import Ġcom . github . ai . is f provider . entity . File Model Ċ import Ġcom . github . ai . is f provider . entity . Result Ċ import Ġcom . github . ai . is f provider . entity . exception . Invalid FileType Exception Ċ import Ġcom . github . ai . is f provider . entity . exception . Invalid FileType Exception . Companion . FILE _ IS _ NOT _ A _ DIRECTORY Ċ import Ġcom . github . ai . is f provider . entity . exception . No AccessException Ċ import Ġcom . github . ai . is f provider . utils . to Model Ċ import Ġcom . github . ai . is f provider . utils . to Models Ċ import Ġjava . io . File Ċ import Ġjava . io . FileNotFoundException Ċ Ċ internal Ġclass ĠInternal FileSystem ( ĊĠĠĠ Ġprivate Ġval Ġroot DirPath : ĠString Ċ ) Ġ: ĠFileSystem Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Real Path ( path : ĠString ): ĠResult < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( root DirPath Ġ+ Ġpath ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . Failure ( FileNotFoundException ( file . path )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResult . Success ( file . path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetFile ( path : ĠString ): ĠResult < File Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( root DirPath Ġ+ Ġpath ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . Failure ( FileNotFoundException ( file . path )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResult . Success ( file . to Model ( trim Path Prefix Ġ= Ġroot DirPath )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Child Files ( parent Path : ĠString ): ĠResult < List < File Model >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( root DirPath Ġ+ Ġparent Path ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . Failure ( FileNotFoundException ( file . path )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! file . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . Failure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInvalid FileType Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= ĠString . format ( FILE _ IS _ NOT _ A _ DIRECTORY , Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġwrite Ġtest Ġfor ĠNo AccessException ĊĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġfile . list Files () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . to Models ( trim Path Prefix Ġ= Ġroot DirPath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠResult . Failure ( No AccessException ( file )) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResult . Success ( files ) ĊĠĠĠ Ġ} Ċ }