package Ġde . sch wer in . stop p Cor ona DE . model . repositories Ċ Ċ import Ġandroidx . annotation . Int Range Ċ import Ġandroidx . annotation . String Res Ċ import Ġde . sch wer in . stop p Cor ona DE . constants . Constants . Near by . RANDOM _ IDENT IFICATION _ MAX Ċ import Ġde . sch wer in . stop p Cor ona DE . constants . Constants . Near by . RANDOM _ IDENT IFICATION _ MIN Ċ import Ġde . sch wer in . stop p Cor ona DE . model . exceptions . Sil ent Error Ċ import Ġde . sch wer in . stop p Cor ona DE . model . repositories . other . Context Interactor Ċ import Ġtim ber . log . Tim ber Ċ import Ġkotlin . math . abs Ċ import Ġkotlin . random . Random Ċ Ċ /** Ċ Ġ* ĠRepository Ġto Ġcreate Ġand Ġconvert Ġthe Ġrandom Ġidentifier . Ċ Ġ*/ Ċ interface ĠHand shake Code word Repository Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRandom Ġidentification Ġvalue Ġwhich Ġis Ġsent Ġto Ġall Ġnearby Ġcontacts . ĊĠĠĠĠ Ġ* ĠHas Ġa Ġvalue Ġfrom Ġ 0 Ġto Ġ 9 9 9 9 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ get : Int Range ( from Ġ= ĠR AN DOM _ IDENT IFICATION _ MIN . to Long (), Ġto Ġ= ĠR AN DOM _ IDENT IFICATION _ MAX . to Long ()) ĊĠĠĠ Ġval Ġidentification Number : ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġrelated Ġcode word Ġfor Ġa Ġrandom Ġnumber . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ[ identification ] Ġthe Ġreceived Ġrandom Ġidentification Ġnumber Ġwith Ġa Ġvalue Ġfrom Ġ 0 Ġto Ġ 9 9 9 9 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Code word ( ĊĠĠĠĠĠĠĠ Ġ@ Int Range ( from Ġ= ĠR AN DOM _ IDENT IFICATION _ MIN . to Long (), Ġto Ġ= ĠR AN DOM _ IDENT IFICATION _ MAX . to Long ()) ĊĠĠĠĠĠĠĠ Ġidentification : ĠInt ĊĠĠĠ Ġ): ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConvert Ġnumber Ġlower Ġthan Ġ 1 0 0 0 Ġto Ġstring Ġwith Ġprefixed Ġzeros Ġto Ġhave Ġ 4 Ġcharacters . ĊĠĠĠĠ Ġ* ĠNegative Ġnumbers Ġare Ġneg ated . ĊĠĠĠĠ Ġ* ĠIf Ġthere Ġis Ġnumber Ġgreater Ġthan Ġ 9 9 9 9 , Ġthe Ġresult Ġis Ġlast Ġ 4 Ġcharacters Ġof Ġthe Ġstring Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġzero Prefix ed ( number : ĠInt ): ĠString Ċ } Ċ Ċ class ĠHand shake Code word Repository Impl ( ĊĠĠĠ Ġprivate Ġval Ġcontext Interactor : ĠContext Interactor Ċ ) Ġ: ĠHand shake Code word Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġidentification Number : ĠInt Ġ= ĠRandom . nextInt ( from Ġ= ĠR AN DOM _ IDENT IFICATION _ MIN , Ġuntil Ġ= ĠR AN DOM _ IDENT IFICATION _ MAX Ġ+ Ġ 1 ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Code word ( identification : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġzero Prefix ed ( identification ) ĊĠĠĠĠĠĠĠ Ġval Ġparts Ġ= ĠarrayOf ( value . substring ( 0 , Ġ 2 ), Ġvalue . substring ( 2 )) ĊĠĠĠĠĠĠĠ Ġreturn Ġwith ( getResource Id ( parts [ 0 ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ context Interactor . getString ( this )} ${ parts [ 1 ]}" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ String Res ĊĠĠĠ Ġprivate Ġfun Ġget ResourceId ( identifier : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext Interactor . resources . getIdentifier (" handshake _ code _$ identifier ", Ġ" string ", Ġcontext Interactor . packageName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġzero Prefix ed ( number : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġabs ( number ) ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ< ĠR AN DOM _ IDENT IFICATION _ MIN Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ> ĠR AN DOM _ IDENT IFICATION _ MAX Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( Sil ent Error (" Invalid Ġinput Ġnumber Ġ$ number ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠString . format ("% 0 4 d ", Ġvalue ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . length Ġ> Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . substring ( it . length Ġ- Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ