/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠA det un ji ĠD ahun si Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . main street code . team mate . persistence . entity Ċ Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . os . Parcelable Ċ import Ġandroidx . annotation . NonNull Ċ import Ġandroidx . room . Column Info Ċ import Ġandroidx . room . Entity Ċ import Ġandroidx . room . ForeignKey Ċ import Ġandroidx . room . ForeignKey . CASCADE Ċ import Ġandroidx . room . PrimaryKey Ċ import Ġcom . main street code . team mate . model . Comp et itive Ċ import Ġcom . main street code . team mate . model . Comp et itor Ċ import Ġcom . main street code . team mate . model . Config Ċ import Ġcom . main street code . team mate . model . Event Ċ import Ġcom . main street code . team mate . model . Team Ċ import Ġcom . main street code . team mate . model . Tournament Ċ import Ġcom . main street code . team mate . model . User Ċ import Ġcom . main street code . team mate . model . enums . Sport Ċ import Ġcom . main street code . team mate . util . EMPTY _ STRING Ċ import Ġcom . main street code . team mate . util . as Int Or Zero Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* ĊĊ Ċ @ Entity ( ĊĠĠĠĠĠĠĠ ĠtableName Ġ= Ġ" games ", ĊĠĠĠĠĠĠĠ Ġforeign Keys Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠForeign Key ( entity Ġ= ĠTo urnament Entity :: class , Ġparent Columns Ġ= Ġ[" tournament _ id "], Ġchild Columns Ġ= Ġ[" game _ tournament "], ĠonDelete Ġ= ĠCASCADE ) ĊĠĠĠĠĠĠĠ Ġ] Ċ ) Ċ open Ġclass ĠGame Entity Ġ: ĠParcel able Ġ{ ĊĊĠĠĠ Ġ@ NonNull ĊĠĠĠ Ġ@ PrimaryKey ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ id ") ĊĠĠĠ Ġvar Ġid : ĠString ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ name ") ĊĠĠĠ Ġvar Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ ref _ path ") ĊĠĠĠ Ġvar Ġref Path : ĠString ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ score ") ĊĠĠĠ Ġvar Ġscore : ĠString ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ match _ up ") ĊĠĠĠ Ġvar Ġmatch Up : ĠString ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ home _ entity ") ĊĠĠĠ Ġvar Ġhome EntityId : ĠString ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ away _ entity ") ĊĠĠĠ Ġvar Ġaway EntityId : ĠString ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ winner _ entity ") ĊĠĠĠ Ġvar Ġwinner EntityId : ĠString ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ created ") ĊĠĠĠ Ġvar Ġcreated : ĠDate ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ sport ") ĊĠĠĠ Ġvar Ġs port : ĠS port ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ ref ere e ") ĊĠĠĠ Ġvar Ġref ere e : ĠUser ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ host ") ĊĠĠĠ Ġvar Ġhost : ĠTeam ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ event ") ĊĠĠĠ Ġvar Ġevent : ĠEvent ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ tournament ") ĊĠĠĠ Ġvar Ġtournament : ĠTo urnament ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ home ") ĊĠĠĠ Ġvar Ġhome : ĠComp et itor ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ away ") ĊĠĠĠ Ġvar Ġaway : ĠComp et itor ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ winner ") ĊĠĠĠ Ġvar Ġwinner : ĠComp et itor ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ leg ") ĊĠĠĠ Ġvar Ġleg : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ seed ") ĊĠĠĠ Ġvar Ġseed : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ round ") ĊĠĠĠ Ġvar Ġround : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ home _ score ") ĊĠĠĠ Ġvar Ġhome Score : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ away _ score ") ĊĠĠĠ Ġvar Ġaway Score : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ ended ") ĊĠĠĠ Ġvar Ġis Ended : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" game _ can _ draw ") ĊĠĠĠ Ġvar Ġcan Draw : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĠĠĠ Ġval ĠimageUrl : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠEMPTY _ STRING ĊĊĠĠĠ Ġval Ġdate : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( event . isEmpty ) Ġ"" Ġelse Ġpretty Printer . format ( event . startDate ) ĊĊĠĠĠ Ġconstructor ( id : ĠString , Ġname : ĠString , Ġref Path : ĠString , Ġscore : ĠString , Ġmatch Up : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhome EntityId : ĠString , Ġaway EntityId : ĠString , Ġwinner EntityId : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreated : ĠDate , Ġs port : ĠS port , Ġref ere e : ĠUser , Ġhost : ĠTeam , Ġevent : ĠEvent , Ġtournament : ĠTo urnament , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhome : ĠComp et itor , Ġaway : ĠComp et itor , Ġwinner : ĠComp et itor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseed : ĠInt , Ġleg : ĠInt , Ġround : ĠInt , Ġhome Score : ĠInt , Ġaway Score : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġended : ĠBoolean , Ġcan Draw : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . id Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġthis . ref Path Ġ= Ġref Path ĊĠĠĠĠĠĠĠ Ġthis . score Ġ= Ġscore ĊĠĠĠĠĠĠĠ Ġthis . match Up Ġ= Ġmatch Up ĊĠĠĠĠĠĠĠ Ġthis . home EntityId Ġ= Ġhome EntityId ĊĠĠĠĠĠĠĠ Ġthis . away EntityId Ġ= Ġaway EntityId ĊĠĠĠĠĠĠĠ Ġthis . winner EntityId Ġ= Ġwinner EntityId ĊĠĠĠĠĠĠĠ Ġthis . created Ġ= Ġcreated ĊĠĠĠĠĠĠĠ Ġthis . sport Ġ= Ġs port ĊĠĠĠĠĠĠĠ Ġthis . ref ere e Ġ= Ġref ere e ĊĠĠĠĠĠĠĠ Ġthis . host Ġ= Ġhost ĊĠĠĠĠĠĠĠ Ġthis . event Ġ= Ġevent ĊĠĠĠĠĠĠĠ Ġthis . tournament Ġ= Ġtournament ĊĠĠĠĠĠĠĠ Ġthis . home Ġ= Ġhome ĊĠĠĠĠĠĠĠ Ġthis . away Ġ= Ġaway ĊĠĠĠĠĠĠĠ Ġthis . winner Ġ= Ġwinner ĊĠĠĠĠĠĠĠ Ġthis . seed Ġ= Ġseed ĊĠĠĠĠĠĠĠ Ġthis . leg Ġ= Ġleg ĊĠĠĠĠĠĠĠ Ġthis . round Ġ= Ġround ĊĠĠĠĠĠĠĠ Ġthis . home Score Ġ= Ġhome Score ĊĠĠĠĠĠĠĠ Ġthis . away Score Ġ= Ġaway Score ĊĠĠĠĠĠĠĠ Ġthis . is Ended Ġ= Ġended ĊĠĠĠĠĠĠĠ Ġthis . can Draw Ġ= Ġcan Draw ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġconstructor (` in `: ĠParcel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ` in `. readString () !! ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ` in `. readString () !! ĊĠĠĠĠĠĠĠ Ġref Path Ġ= Ġ` in `. readString () !! ĊĠĠĠĠĠĠĠ Ġscore Ġ= Ġ` in `. readString () !! ĊĠĠĠĠĠĠĠ Ġmatch Up Ġ= Ġ` in `. readString () !! ĊĠĠĠĠĠĠĠ Ġhome EntityId Ġ= Ġ` in `. readString () !! ĊĠĠĠĠĠĠĠ Ġaway EntityId Ġ= Ġ` in `. readString () !! ĊĠĠĠĠĠĠĠ Ġwinner EntityId Ġ= Ġ` in `. readString () !! ĊĠĠĠĠĠĠĠ Ġcreated Ġ= ĠDate (` in `. read Long ()) ĊĠĠĠĠĠĠĠ Ġs port Ġ= ĠConfig . sport From Code (` in `. readString () !! ) ĊĠĠĠĠĠĠĠ Ġref ere e Ġ= Ġ` in `. readValue ( User :: class . java . class Loader ) Ġas ĠUser ĊĠĠĠĠĠĠĠ Ġhost Ġ= Ġ` in `. readValue ( Team :: class . java . class Loader ) Ġas ĠTeam ĊĠĠĠĠĠĠĠ Ġevent Ġ= Ġ` in `. readValue ( Event :: class . java . class Loader ) Ġas ĠEvent ĊĠĠĠĠĠĠĠ Ġtournament Ġ= Ġ` in `. readValue ( Tournament :: class . java . class Loader ) Ġas ĠTo urnament ĊĠĠĠĠĠĠĠ Ġhome Ġ= Ġ` in `. readValue ( Comp et itor :: class . java . class Loader ) Ġas ĠComp et itor ĊĠĠĠĠĠĠĠ Ġaway Ġ= Ġ` in `. readValue ( Comp et itor :: class . java . class Loader ) Ġas ĠComp et itor ĊĠĠĠĠĠĠĠ Ġwinner Ġ= Ġ` in `. readValue ( Comp et itor :: class . java . class Loader ) Ġas ĠComp et itor ĊĠĠĠĠĠĠĠ Ġseed Ġ= Ġ` in `. readInt () ĊĠĠĠĠĠĠĠ Ġleg Ġ= Ġ` in `. readInt () ĊĠĠĠĠĠĠĠ Ġround Ġ= Ġ` in `. readInt () ĊĠĠĠĠĠĠĠ Ġhome Score Ġ= Ġ` in `. readInt () ĊĠĠĠĠĠĠĠ Ġaway Score Ġ= Ġ` in `. readInt () ĊĠĠĠĠĠĠĠ Ġis Ended Ġ= Ġ` in `. read Byte (). toInt () Ġ!= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġcan Draw Ġ= Ġ` in `. read Byte (). toInt () Ġ!= Ġ 0 x 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠĠ ĊĊĠĠĠĠ ĊĊĠĠĠ Ġfun Ġbetween Users (): ĠBoolean Ġ= ĠUser . COMP ET ITOR _ TYPE Ġ== Ġref Path ĊĊĠĠĠ Ġfun Ġis Comp eting ( compet itive : ĠComp et itive ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome . entity Ġ== Ġcompet itive Ġ|| Ġaway . entity Ġ== Ġcompet itive ĊĊĠĠĠ Ġfun Ġcompet itors Not Accepted (): ĠBoolean Ġ= Ġ! home . is Accepted Ġ|| Ġ! away . is Accepted ĊĊĠĠĠ Ġfun Ġcompet itors Decl ined (): ĠBoolean Ġ= Ġhome . is Decl ined Ġ|| Ġaway . is Decl ined ĊĊĠĠĠ Ġfun Ġset Home Score ( home Score : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . home Score Ġ= Ġhome Score . as Int Or Zero () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Away Score ( away Score : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . away Score Ġ= Ġaway Score . as Int Or Zero () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠGame Entity ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġother Ġas ĠGame Entity ? ĊĊĠĠĠĠĠĠĠ Ġreturn Ġid Ġ== Ġevent !!. id ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġid . hashCode () ĊĊĠĠĠ Ġoverride Ġfun Ġdescribe Contents (): ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠwriteTo Parcel ( dest : ĠParcel , Ġflags : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdest . writeString ( id ) ĊĠĠĠĠĠĠĠ Ġdest . writeString ( name ) ĊĠĠĠĠĠĠĠ Ġdest . writeString ( ref Path ) ĊĠĠĠĠĠĠĠ Ġdest . writeString ( score ) ĊĠĠĠĠĠĠĠ Ġdest . writeString ( match Up ) ĊĠĠĠĠĠĠĠ Ġdest . writeString ( home EntityId ) ĊĠĠĠĠĠĠĠ Ġdest . writeString ( away EntityId ) ĊĠĠĠĠĠĠĠ Ġdest . writeString ( winner EntityId ) ĊĠĠĠĠĠĠĠ Ġdest . write Long ( created . time ) ĊĠĠĠĠĠĠĠ Ġdest . writeString ( sport . code ) ĊĠĠĠĠĠĠĠ Ġdest . writeValue ( ref ere e ) ĊĠĠĠĠĠĠĠ Ġdest . writeValue ( host ) ĊĠĠĠĠĠĠĠ Ġdest . writeValue ( event ) ĊĠĠĠĠĠĠĠ Ġdest . writeValue ( tournament ) ĊĠĠĠĠĠĠĠ Ġdest . writeValue ( home ) ĊĠĠĠĠĠĠĠ Ġdest . writeValue ( away ) ĊĠĠĠĠĠĠĠ Ġdest . writeValue ( winner ) ĊĠĠĠĠĠĠĠ Ġdest . writeInt ( seed ) ĊĠĠĠĠĠĠĠ Ġdest . writeInt ( leg ) ĊĠĠĠĠĠĠĠ Ġdest . writeInt ( round ) ĊĠĠĠĠĠĠĠ Ġdest . writeInt ( home Score ) ĊĠĠĠĠĠĠĠ Ġdest . writeInt ( away Score ) ĊĠĠĠĠĠĠĠ Ġdest . write Byte (( if Ġ( is Ended ) Ġ 0 x 0 1 Ġelse Ġ 0 x 0 0 ). to Byte ()) ĊĠĠĠĠĠĠĠ Ġdest . write Byte (( if Ġ( can Draw ) Ġ 0 x 0 1 Ġelse Ġ 0 x 0 0 ). to Byte ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpretty Printer Ġ= ĠSimpleDateFormat (" dd ĠM MM ", ĠLocale . US ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠCRE ATOR : ĠParcel able . Creator < Game Entity > Ġ= Ġobject Ġ: ĠParcel able . Creator < Game Entity > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate From Parcel (` in `: ĠParcel ): ĠGame Entity Ġ= ĠGame Entity (` in `) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Array ( size : ĠInt ): ĠArray < Game Entity ?> Ġ= ĠarrayOf Null s ( size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ