package Ġnet . b jo ern pe ters en . music bot . internal . auth Ċ Ċ import Ġnet . b jo ern pe ters en . music bot . api . auth . Duplicate User Exception Ċ import Ġnet . b jo ern pe ters en . music bot . api . auth . Guest User Ċ import Ġnet . b jo ern pe ters en . music bot . api . auth . User Ċ import Ġnet . b jo ern pe ters en . music bot . api . auth . to Id Ċ import Ġjava . util . HashMap Ċ Ċ private Ġconst Ġval ĠTEMP OR ARY _ USER _ CAP ACITY Ġ= Ġ 3 2 Ċ Ċ internal Ġclass ĠTemp User Database Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtemporary Users : ĠMutable Map < String , ĠGuest User > Ġ= ĠHashMap ( TEMP OR ARY _ USER _ CAP ACITY ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFinds Ġa Ġspecific Ġuser Ġby Ġhis Ġusername . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġname Ġwill Ġbe Ġtrimmed Ġand Ġconverted Ġto Ġlower - case Ġaccording Ġto Ġthe ĠUS Ġlocale Ġbefore ĊĠĠĠĠ Ġ* Ġchecking Ġuni queness . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġthe Ġuser 's Ġname ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġuser Ġobject Ġfor Ġthat Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfind User ( name : ĠString ): ĠUser ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtemporary Users [ name . to Id ()] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInser ts Ġa Ġnew Ġuser Ġinto Ġthe Ġdatabase . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġthe Ġname Ġof Ġa Ġuser Ġto Ġinsert Ġinto Ġthe Ġdatabase ĊĠĠĠĠ Ġ* Ġ@ param Ġid Ġthe Ġuser 's Ġpassword - like ĠID ĊĠĠĠĠ Ġ* Ġ@ throws ĠDuplicate User Exception Ġif Ġa Ġfull Ġuser Ġwith Ġan Ġequal Ġname Ġalready Ġexists ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Duplicate User Exception :: class ) ĊĠĠĠ Ġfun Ġinsert User ( name : ĠString , Ġid : ĠString ): ĠUser Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠGuest User ( name , Ġid ) ĊĠĠĠĠĠĠĠ Ġval Ġprev Ġ= Ġtemporary Users . put If Absent ( name . to Id (), Ġuser ) ĊĠĠĠĠĠĠĠ Ġif Ġ( prev Ġ!= Ġnull ) Ġthrow ĠDuplicate User Exception (" Temp Ġuser Ġalready Ġexists : Ġ$ name ") ĊĠĠĠĠĠĠĠ Ġreturn Ġuser ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDeletes Ġa Ġuser Ġfrom Ġthe Ġdatabase . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġname Ġwill Ġbe Ġtrimmed Ġand Ġconverted Ġto Ġlower - case Ġaccording Ġto Ġthe ĠUS Ġlocale Ġbefore ĊĠĠĠĠ Ġ* Ġchecking Ġuni queness . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġthe Ġuser 's Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdelete User ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemporary Users . remove ( name . to Id ()) ĊĠĠĠ Ġ} Ċ } Ċ