package Ġno . nav . pens jon . v tp . test mode ll . repo . impl Ċ Ċ import Ġno . nav . pens jon . v tp . test mode ll . d okument . mode ll . D okument Mode ll Ċ import Ġno . nav . pens jon . v tp . test mode ll . d okument . mode ll . Journal post Mode ll Ċ import Ġno . nav . pens jon . v tp . test mode ll . repo . Journal Repository Ċ import Ġorg . springframework . stereotype . Repository Ċ import Ġjava . time . LocalDateTime . now Ċ import Ġjava . time . format . DateTime Formatter . of Pattern Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ Ċ @ Repository Ċ class ĠJournal Repository Impl Ġ: ĠJournal Repository Ġ{ ĊĠĠĠ Ġprivate Ġval Ġjournal poster Ġ= ĠHashMap < String , ĠJournal post Mode ll >() ĊĠĠĠ Ġprivate Ġval Ġdokument er Ġ= ĠHashMap < String , ĠD okument Mode ll >() ĊĊĠĠĠ Ġprivate Ġval Ġjournal post Id Ġ= ĠAtomicInteger ( now (). format ( of Pattern (" M dk m ")). toInt () Ġ* Ġ 1 0 0 ) ĊĠĠĠ Ġprivate Ġval Ġdokument Id Ġ= ĠAtomicInteger ( now (). format ( of Pattern (" M dk m ")). toInt () Ġ* Ġ 1 0 0 ) ĊĊĠĠĠ Ġoverride Ġfun Ġfin n D okument Med D okument Id ( d okument Id : ĠString ): ĠD okument Mode ll ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdokument er [ d okument Id ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfin n Journal poster Med Fn r ( fn r : ĠString ): ĠList < Journal post Mode ll > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjournal poster . values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġe : ĠJournal post Mode ll Ġ-> Ġe . av sender Fn r Ġ!= Ġnull Ġ&& Ġe . av sender Fn r . equals ( fn r , Ġignore Case Ġ= Ġtrue ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfin n Journal poster Med S ak Id ( sak Id : ĠString ): ĠList < Journal post Mode ll > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjournal poster . values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . sak Id Ġ!= Ġnull Ġ&& Ġit . sak Id . equals ( sak Id , Ġignore Case Ġ= Ġtrue ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfin n Journal post Med Journal post Id ( journal post Id : ĠString ): ĠJournal post Mode ll ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjournal poster [ journal post Id ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfin n Journal post Med D okument Id ( d okument Id : ĠString ): ĠJournal post Mode ll ? Ġ= ĊĠĠĠĠĠĠĠ Ġjournal poster . values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . d okument Mode ll List . any Ġ{ Ġdok Ġ-> Ġdok . d okument Id Ġ== Ġdokument Id Ġ} Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave ( journal post Mode ll : ĠJournal post Mode ll ): ĠJournal post Mode ll Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjournal post Id : ĠString Ġ= Ġjournal post Mode ll . journal post Id ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġgener er Journal post Id () ĊĊĠĠĠĠĠĠĠ Ġjournal post Mode ll . journal post Id Ġ= Ġjournal post Id ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( d okument Mode ll Ġin Ġjournal post Mode ll . d okument Mode ll List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdokument Id Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdokument Mode ll . d okument Id ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġgener er D okument Id () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdokument Mode ll . d okument Id Ġ= Ġdokument Id ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck (! d okument er . containsKey ( d okument Id )) Ġ{ Ġ" For s Ã¸ ker ĠÃ¥ Ġopp ret te Ġdokument Ġall ere de Ġe ks ist eren de Ġdokument Id " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdokument er [ d okument Id ] Ġ= Ġdokument Mode ll ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( journal poster . containsKey ( journal post Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" For s Ã¸ ker ĠÃ¥ Ġopp ret te Ġjournal post Ġall ere de Ġe ks ist eren de Ġjournal post Id ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjournal poster [ journal post Id ] Ġ= Ġjournal post Mode ll ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjournal post Mode ll ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgener er Journal post Id (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjournal post Id . increment AndGet (). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgener er D okument Id (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdokument Id . increment AndGet (). toString () ĊĠĠĠ Ġ} Ċ } Ċ