package Ġnet . mi lo sv asic . factory . application . server _ factory Ċ Ċ import Ġnet . mi lo sv asic . factory . EMPTY Ċ import Ġnet . mi lo sv asic . factory . common . filesystem . FilePath Builder Ċ import Ġnet . mi lo sv asic . factory . configuration . recipe . Configuration Recipe Ċ import Ġnet . mi lo sv asic . logger . Logger Ċ Ċ class ĠServer Factory Builder Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġlogger : ĠLogger ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfeature Database Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġinstallation Home : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġrecipe : ĠConfiguration Recipe < *> ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Throws ( Security Exception :: class ) ĊĠĠĠ Ġfun Ġget Installation Location (): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġinstallation Home Location Ġ= ĠString . EMPTY ĊĠĠĠĠĠĠĠ Ġinstallation Home ?. let Ġ{ Ġhome Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstallation Home Location Ġ= Ġhome ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( installation Home Location . isEmpty () Ġ|| Ġinstallation Home Location . isBlank ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstallation Home Location Ġ= ĠSystem . getProperty (" user . home ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠFilePath Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Context ( installation Home Location ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getPath () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IllegalArgumentException :: class ) ĊĠĠĠ Ġfun Ġget Recipe (): ĠConfiguration Recipe < *> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġrecipe ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Configuration Ġrecipe Ġis Ġnot Ġprovided ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Recipe ( recipe : ĠConfiguration Recipe < *> ): ĠServer Factory Builder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġthis . recipe Ġ= Ġrecipe ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Logger () Ġ= Ġlogger ĊĊĠĠĠ Ġfun Ġget Feature Database () Ġ= Ġfeature Database ĊĊĠĠĠ Ġfun Ġset Feature Database ( database : ĠBoolean ): ĠServer Factory Builder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfeature Database Ġ= Ġdatabase ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Installation Home ( home : ĠString ): ĠServer Factory Builder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinstallation Home Ġ= Ġhome ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} Ċ }