/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠThe ĠSimple Cloud Ġauthors Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ġassociated Ċ Ġ* Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ċ Ġ* Ġthe Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ċ Ġ* Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , Ċ Ġ* ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . Ċ Ġ* ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , Ċ Ġ* ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , Ċ Ġ* ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER Ċ Ġ* ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġeu . the simple cloud . api . config Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġeu . the simple cloud . json lib . Json Lib Ċ import Ġjava . io . File Ċ Ċ abstract Ġclass ĠAbstract Json Lib Config Loader < T Ġ: ĠAny >( ĊĠĠĠ Ġprivate Ġval Ġconfig Class : ĠClass < T >, ĊĠĠĠ Ġprivate Ġval Ġconfig F ie : ĠFile , ĊĠĠĠ Ġprivate Ġval Ġlazy Default Object : Ġ() Ġ-> ĠT , ĊĠĠĠ Ġprivate Ġval Ġsave Default On F ist Load : ĠBoolean , ĊĠĠĠ Ġprivate Ġval Ġgson ToUse : ĠGson Ġ= ĠJson Lib . G SON Ċ ) Ġ: ĠI Config Loader < T > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġload Config (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobject FromFile Ġ= ĠJson Lib . fromJson File ( config F ie , Ġgson ToUse )?. getObject OrNull ( config Class ) ĊĠĠĠĠĠĠĠ Ġif Ġ( object FromFile Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Object Ġ= Ġlazy Default Object () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( save Default On F ist Load Ġ&& Ġ! does ConfigFile Exist ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Config ( default Object ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdefault Object ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġobject FromFile ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave Config ( value : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ ĠJson Lib . from Object ( value , Ġgson ToUse ). save As File ( config F ie ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdoes ConfigFile Exist (): ĠBoolean Ġ= Ġthis . config F ie . exists () ĊĊ Ċ }