package Ġgl 8 0 8 0 . life game . web . resource čĊč Ċ import Ġgl 8 0 8 0 . life game . logic . Life Game č Ċ import Ġgl 8 0 8 0 . life game . logic . Position č Ċ import Ġgl 8 0 8 0 . life game . util . Nested Loop č Ċ import Ġjavax . ws . rs . BadRequest Exception čĊčĊč Ċ data Ġclass ĠLife Game Dto ( čĊĠĠĠ Ġval Ġid : ĠLong ?, čĊĠĠĠ Ġval Ġsize : ĠInt , čĊĠĠĠ Ġval Ġcells : ĠList < List < Boolean >>, čĊĠĠĠ Ġval Ġversion : ĠLong ? č Ċ ) Ġ{ čĊčĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* Ġ{@ link ĠLife Game } Ġ ãģĭãĤī ãĤ¤ãĥ³ ãĤ¹ãĤ¿ ãĥ³ãĤ¹ ãĤĴ çĶŁæĪĲ ãģĻãĤĭ ãĢĤ čĊĠĠĠĠĠĠĠĠ Ġ* čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġlife Game Ġ{@ link ĠLife Game } čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠçĶŁæĪĲ ãģķãĤĮãģŁ ĠD TO čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġof ( life Game : ĠLife Game ): ĠLife Game Dto Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcells Ġ= Ġlife Game . get Cells () čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcells Status Ġ= ĠNested Loop . collect List ( life Game . getSize (), Ġ{ i , Ġj Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcells [ Position ( i , Ġj )] ?. is Alive () Ġ?: Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdto Ġ= ĠLife Game Dto ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlife Game . getId (), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlife Game . getSize (), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcells Status , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlife Game . getVersion () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdto čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġãģĵãģ® ĠD TO ĠãģĮ æĮģ ãģ¤ åħ¨ ãģ¦ ãģ® ãĤ» ãĥ« ãģ«å¯¾ ãģĹãģ¦ ãĢģ æĮĩå®ļ ãģĹãģŁ åĩ¦çĲĨ ãĤĴ éģ© çĶ¨ ãģĹãģ¾ãģĻ ãĢĤ čĊĠĠĠĠ Ġ* Ġ@ param Ġiterator Ġ åıį å¾ © åĩ¦çĲĨ čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġeach Cell ( iterator : Ġ( Position , ĠBoolean ) Ġ-> ĠUnit ) Ġ{ čĊĠĠĠĠĠĠĠ ĠNested Loop . each ( this . cells , Ġ{ i , Ġj , Ġstatus Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator ( Position ( i , Ġj ), Ġstatus ) čĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun ĠgetId (): ĠLong Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġthis . id Ġ?: Ġthrow ĠBadRequest Exception (" id ĠãģĮ è¨Ńå®ļ ãģķãĤĮ ãģ¦ãģĦ ãģ¾ãģĽãĤĵ ãĢĤ ") čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġconstructor (): Ġthis ( null , Ġ- 1 , ĠlistOf (), Ġ- 1 ) č Ċ }