package Ġar . edu . ut n . fr ba . t acs . tp . api . her oc ard sg ame . persistence . entity . match Ċ Ċ import Ġar . edu . ut n . fr ba . t acs . tp . api . her oc ard sg ame . models . game . Card Ċ import Ġar . edu . ut n . fr ba . t acs . tp . api . her oc ard sg ame . models . game . Match Status Ċ import Ġar . edu . ut n . fr ba . t acs . tp . api . her oc ard sg ame . models . game . match . Match Ċ import Ġar . edu . ut n . fr ba . t acs . tp . api . her oc ard sg ame . models . game . player . Player Ċ import Ġar . edu . ut n . fr ba . t acs . tp . api . her oc ard sg ame . persistence . entity . deck . Deck History Entity Ċ import Ġar . edu . ut n . fr ba . t acs . tp . api . her oc ard sg ame . persistence . entity . user . User Entity Ċ import Ġjavax . persistence .* Ċ Ċ @ Entity Ċ @ Table ( name Ġ= Ġ" MATCH ES ") Ċ data Ġclass ĠMatch Entity ( ĊĠĠĠ Ġ@ Id ĊĠĠĠ Ġ@ GeneratedValue ( strategy Ġ= ĠGeneration Type . IDENTITY ) ĊĠĠĠ Ġval Ġid : ĠLong ? Ġ= Ġnull , ĊĠĠĠ Ġ@ ManyToMany ( cascade Ġ= Ġ[ Cascade Type . MERGE ]) ĊĠĠĠ Ġval Ġplayer : ĠList < User Entity >, ĊĠĠĠ Ġval Ġplayer Id Turn : ĠLong , ĊĠĠĠ Ġval Ġplayer Id Created Match : ĠLong , ĊĠĠĠ Ġval Ġplayer Available Card Ids : ĠString , ĊĠĠĠ Ġval Ġplayer Pri ze Card Ids : ĠString , ĊĠĠĠ Ġval Ġopponent Available Card Ids : ĠString , ĊĠĠĠ Ġval Ġopponent Pri ze Card Ids : ĠString , ĊĠĠĠ Ġval Ġdeck Id : ĠLong , ĊĠĠĠ Ġ@ ManyToOne ( cascade Ġ= Ġ[ Cascade Type . ALL ]) ĊĠĠĠ Ġval Ġdeck History : ĠDeck History Entity , ĊĠĠĠ Ġ@ Enumer ated ( value Ġ= ĠEnum Type . STRING ) ĊĠĠĠ Ġval Ġstatus : ĠMatch Status , ĊĠĠĠ Ġ@ OneToMany ( cascade Ġ= Ġ[ Cascade Type . ALL ]) ĊĠĠĠ Ġval Ġdue l History : ĠList < D uel History Entity > Ġ= Ġempty List () Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġto Model ( card Models : ĠList < Card >): ĠMatch Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayer Model Ġ= Ġto Player Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . first Ġ{ Ġit . id Ġ== Ġplayer Id Turn Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Available Card Ids , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Pri ze Card Ids , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard Models ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġopponent Model Ġ= Ġto Player Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . first Ġ{ Ġit . id Ġ!= Ġplayer Id Turn Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopponent Available Card Ids , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopponent Pri ze Card Ids , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard Models ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġdeck History Model Ġ= Ġdeck History . to Model ( deck Id , Ġcard Models ) ĊĠĠĠĠĠĠĠ Ġval Ġdue l History Model Ġ= Ġdue l History . map Ġ{ Ġit . to Model ( card Models ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠMatch ( id , Ġplayer Model , Ġopponent Model , Ġdeck History Model , Ġstatus , Ġdue l History Model ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto Player Model ( ĊĠĠĠĠĠĠĠ Ġuser : ĠUser Entity , ĊĠĠĠĠĠĠĠ Ġavailable Card Ids : ĠString , ĊĠĠĠĠĠĠĠ Ġpri ze Card Ids : ĠString , ĊĠĠĠĠĠĠĠ Ġcard Models : ĠList < Card > ĊĠĠĠ Ġ): ĠPlayer Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġavailable Cards Ġ= Ġavailable Card Ids . split (",") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . isBlank () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġcard Id Ġ-> Ġcard Models . first Ġ{ Ġcard Ġ-> Ġcard . id Ġ== Ġcard Id . to Long () Ġ} Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġprice Cards Ġ= Ġpri ze Card Ids . split (",") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . isBlank () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġcard Id Ġ-> Ġcard Models . first Ġ{ Ġcard Ġ-> Ġcard . id Ġ== Ġcard Id . to Long () Ġ} Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPlayer ( user . to Model (), Ġuser . id Ġ== Ġplayer Id Created Match , Ġavailable Cards , Ġprice Cards ) ĊĠĠĠ Ġ} Ċ Ċ }