/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 ĠB eno Ã® t ĠPri ou x Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġio . github . bin out . soc cer . domain . season Ċ Ċ import Ġio . github . bin out . soc cer . domain . date . Friendly Match Date Ċ import Ġio . github . bin out . soc cer . domain . date . League Match Date Ċ import Ġio . github . bin out . soc cer . domain . player . Player Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Month Ċ import Ġjava . time . temporal . Ch rono Field Ċ Ċ class ĠSe ason ( val Ġname : ĠString ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfriendly Matches : ĠMutable Set < Friendly Match > Ġ= Ġmutable Set Of () ĊĠĠĠ Ġprivate Ġval Ġle ague Matches : ĠMutable Set < League Match > Ġ= Ġmutable Set Of () ĊĊĠĠĠ Ġfun Ġfriendly Matches (): ĠList < Friendly Match > Ġ= Ġfriendly Matches . sorted By Ġ{ Ġit . date Ġ} ĊĊĠĠĠ Ġfun Ġle ague Matches (): ĠList < League Match > Ġ= Ġle ague Matches . sorted By Ġ{ Ġit . date Ġ} ĊĊĠĠĠ Ġfun Ġadd Friendly Match ( date : ĠFriend ly Match Date , Ġplayers : ĠSet < Player >): ĠFriend ly Match Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= ĠMatch . new Friendly Match ( date , Ġplayers ) ĊĠĠĠĠĠĠĠ Ġthis . friendly Matches . add ( match ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmatch ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel Friendly Match ( friendly Match Date : ĠFriend ly Match Date ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . friendly Matches . remove If Ġ{ Ġit . date Ġ== Ġfriendly Match Date . date Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd League Match ( date : ĠLeague Match Date , Ġplayers : ĠSet < Player >): ĠLeague Match Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= ĠMatch . new League Match ( date , Ġplayers ) ĊĠĠĠĠĠĠĠ Ġthis . league Matches . add ( match ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmatch ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel League Match ( league Match Date : ĠLeague Match Date ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . league Matches . remove If Ġ{ Ġit . date Ġ== Ġle ague Match Date . date Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmatches () Ġ= Ġfriendly Matches Ġ+ Ġle ague Matches ĊĊĠĠĠ Ġfun Ġstatistics (): ĠSe ason Statistics Ġ= ĠSe ason Statistics ( this ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSTART _ MONTH Ġ= ĠSystem . getenv (" START _ MONTH ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĠMonth . of ( it . toInt ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠMonth . OCT OB ER ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSTART _ DAY Ġ= ĠSystem . getenv (" START _ DAY ") ?. toInt () Ġ?: Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġfun Ġcurrent Season Name () Ġ= Ġcompute Season ( LocalDate . now ()) ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġcompute Season ( now : ĠLocalDate ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmonth Ġ= Ġnow . get ( Ch rono Field . MONTH _ OF _ YEAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġyear Ġ= Ġnow . get ( Ch rono Field . YEAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Ġ= Ġnow . day OfMonth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( month Ġ> ĠSTART _ MONTH . value Ġ|| Ġmonth Ġ== ĠSTART _ MONTH . value Ġ&& Ġday Ġ>= ĠSTART _ DAY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ year -${ year Ġ+ Ġ 1 }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ ( year Ġ- Ġ 1 )} -$ year " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠSe ason Repository Ġ{ ĊĊĠĠĠ Ġfun Ġreplace ( season : ĠSe ason ) ĊĊĠĠĠ Ġfun Ġby Name ( name : ĠString ): ĠSe ason ? ĊĊĠĠĠ Ġfun Ġall (): ĠList < Season > Ċ } Ċ