package Ġus . wh od ag . acquire . web . db Ċ Ċ import Ġmu . K Logging Ċ import Ġus . wh od ag . acquire . Acquire Ċ import Ġus . wh od ag . acquire . Acquire s Ċ import Ġus . wh od ag . acquire . Acquire s . file Persist Ċ import Ġus . wh od ag . acquire . Acquire s . json Cache Ċ import Ġus . wh od ag . acquire . ac q . Acquire Id Ċ import Ġus . wh od ag . acquire . ac q . Json Cache Acquire Ċ import Ġus . wh od ag . acquire . default Game Path Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Paths Ċ import Ġkotlin . collections . Collection Ċ import Ġkotlin . collections . Mutable Map Ċ import Ġkotlin . collections . mutable Map Of Ċ import Ġkotlin . collections . set Ċ Ċ /** Ċ Ġ* ĠDatabase Ġof ĠJSON Ġcached ĠAc quire Ġgames Ġwhich Ġare Ġfile Ġpersisted . Ċ Ġ*/ Ċ class ĠAc quire Json Caches ( private Ġval Ġacquire s : ĠMutable Map < Acquire Id , ĠJson Cache Acquire >) Ġ{ ĊĠĠĠ Ġconstructor () Ġ: Ġthis ( mutable Map Of ()) ĊĊĠĠĠ Ġcompanion Ġobject : ĠK Logging () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġan Ġacquire Ġgame Ġto Ġthe ĠAc quire Database . ĊĠĠĠĠ Ġ* ĠReturns Ġwhether Ġthe Ġadd Ġwas Ġsuccessful . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd ( acquire : ĠAc quire ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( find ( acquire . id ()) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn Ġ{ Ġ" Unable Ġto Ġadd ĠAc quire Ġgame Ġas Ġa Ġgame Ġwith Ġid Ġ[ ${ acquire . id ()} ] Ġalready Ġexists " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġacquire s [ acquire . id ()] Ġ= Ġacquire . file Persist (). json Cache () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAttempt Ġto Ġfind Ġacquire Ġgame Ġwith Ġthe Ġassociated Ġid . ĊĠĠĠĠ Ġ* ĠFirst Ġlooks Ġin Ġmemory , Ġif Ġnot Ġfile , Ġlooks Ġfor Ġa Ġfile Ġpersisted Ġinstance . ĊĠĠĠĠ Ġ* ĠReturns Ġnull Ġif Ġunable Ġto Ġbe Ġfound . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfind ( acquire Id : ĠAc quire Id ): ĠJson Cache Acquire ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġin Memory Ġ= Ġacquire s [ acquire Id ] ĊĠĠĠĠĠĠĠ Ġif Ġ( in Memory Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug Ġ{ Ġ" Found ĠAc quire Ġgame Ġwith Ġid Ġ$ acquire Id Ġin Ġmemory " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġin Memory ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpersisted Ġ= Ġload Pers isted Game ("${ acquire Id . name }. ac q "); ĊĠĠĠĠĠĠĠ Ġif Ġ( pers isted Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug Ġ{ Ġ" Found ĠAc quire Ġgame Ġwith Ġid Ġ$ acquire Id Ġin Ġfile " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpersisted ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠLoad Ġan ĠAc quire Ġgame Ġinto Ġmemory Ġfrom Ġits Ġpersisted Ġpath Ġname . Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġload Pers isted Game ( pers isted Name : ĠString ): ĠJson Cache Acquire ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġin File Ġ= ĠAc quire s . standard Load From Path ( default Game Path ( pers isted Name )) ĊĠĠĠĠĠĠĠ Ġif Ġ( in File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloaded Ġ= Ġin File . file Persist (). json Cache () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacquire s [ loaded . id ()] Ġ= Ġloaded ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġloaded ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠLoad Ġall ĠAc quire Ġgames Ġthat Ġhave Ġbeen Ġpersisted . Ġ*/ ĊĠĠĠ Ġfun Ġload All Pers isted Games () Ġ{ ĊĠĠĠĠĠĠĠ ĠFiles . walk ( Paths . get ( default Game Path (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġitem Ġ-> Ġitem . toString (). endsWith (". ac q ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġac q File Ġ-> Ġload Pers isted Game ( ac q File . fileName . toString ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġall Ġstored ĠAc quire Ġgames . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġall (): ĠCollection < Acquire > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġacquire s . values ĊĠĠĠ Ġ} Ċ }