package Ġcom . k air lec . dao Ċ Ċ import Ġcom . k air lec . config . startup . Startup Config Factory Ċ import Ġcom . k air lec . intf . DAO Initialize able Ċ import Ġcom . k air lec . model . bo . AbsolutePath Ċ import Ġcom . k air lec . model . vo . Extra Info Ċ import Ġcom . k air lec . model . vo . RelativePath Ċ import Ġcom . k air lec . utils . Local Config . Companion . toJSON Ċ import Ġcom . k air lec . utils . Local Config . Companion . toObject Ċ import Ġcom . k air lec . utils . content Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Paths Ċ Ċ object ĠExtra Info DAO Ġ: ĠDAO Initialize able Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġconfig RootPath : ĠPath ĊĊĠĠĠ Ġprivate Ġfun Ġget Extra Info AbsolutePath ( path : ĠRelative Path ): ĠAbsolute Path Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAbsolute Path ( Paths . get ( config RootPath . toString (), Ġpath . path )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate File If NotExist ( path : ĠPath ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Files . not Exists ( path )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġpath . parent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Files . not Exists ( parent )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . create Directories ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . create File ( path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate OrCreate Extra Info ( path : ĠRelative Path , Ġextra Info : ĠExtra Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġabsolute Path Ġ= Ġget Extra Info AbsolutePath ( path ) ĊĠĠĠĠĠĠĠ Ġcreate File If NotExist ( absolute Path . path ) ĊĠĠĠĠĠĠĠ ĠFiles . writeString ( absolute Path . path , ĠString . toJSON ( extra Info ), ĠChar sets . UTF _ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Extra Info ( path : ĠRelative Path ): ĠExtra Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġabsolute Path Ġ= Ġget Extra Info AbsolutePath ( path ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Files . not Exists ( absolute Path . path )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabsolute Path . path . to File (). content . toObject < Extra Info >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdao Init () Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig RootPath Ġ= ĠPaths . get ( Startup Config Factory . Instance . data DirPath . toString (), Ġ" Extra Info Maps ") ĊĠĠĠĠĠĠĠ Ġif Ġ( Files . not Exists ( config RootPath )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . create Directories ( config RootPath ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }