package Ġcom . alam kan ak . week view Ċ Ċ import Ġjava . util . Calendar Ċ Ċ internal Ġclass ĠEvent Cache < T > Ġ{ ĊĊĠĠĠ Ġval Ġall Events : ĠList < Week View Event < T >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġprevious Period Events . or Empty () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Period Events . or Empty () Ġ+ Ġnext Period Events . or Empty () ĊĊĠĠĠ Ġvar Ġprevious Period Events : ĠList < Week View Event < T >> ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġcurrent Period Events : ĠList < Week View Event < T >> ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġnext Period Events : ĠList < Week View Event < T >> ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġfetched Range : ĠFetch Range ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġhas Events : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfetched Range Ġ!= Ġnull ĊĊĠĠĠ Ġoperator Ġfun Ġcontains ( fetch Range : ĠFetch Range ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfetched Range ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . previous Ġ== Ġfetch Range . previous Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . current Ġ== Ġfetch Range . current Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . next Ġ== Ġfetch Range . next ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġget ( ĊĠĠĠĠĠĠĠ Ġdate Range : ĠList < Calendar > ĊĠĠĠ Ġ) Ġ= Ġall Events . filter Ġ{ Ġdate Range . contains ( it . startTime . at Start OfDay ) Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġget ( ĊĠĠĠĠĠĠĠ Ġperiod : ĠPeriod ĊĠĠĠ Ġ): ĠList < Week View Event < T >> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrange Ġ= ĠcheckNotNull ( f etched Range ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( period ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrange . previous Ġ-> Ġprevious Period Events ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrange . current Ġ-> Ġcurrent Period Events ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrange . next Ġ-> Ġnext Period Events ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" Request ing Ġevents Ġfor Ġinvalid Ġperiod Ġ$ period ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġset ( ĊĠĠĠĠĠĠĠ Ġperiod : ĠPeriod , ĊĠĠĠĠĠĠĠ Ġevents : ĠList < Week View Event < T >> ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrange Ġ= ĠcheckNotNull ( f etched Range ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( period ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrange . previous Ġ-> Ġprevious Period Events Ġ= Ġevents ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrange . current Ġ-> Ġcurrent Period Events Ġ= Ġevents ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrange . next Ġ-> Ġnext Period Events Ġ= Ġevents ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġprevious Period Events Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġcurrent Period Events Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġnext Period Events Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfetched Range Ġ= Ġnull ĊĠĠĠ Ġ} Ċ } Ċ