/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 Ġcom . google . samples . apps . ios ched . shared . data Ċ Ċ import Ġandroidx . core . graphics . to Color Int Ċ import Ġcom . google . samples . apps . ios ched . model . Conference Data Ċ import Ġcom . google . samples . apps . ios ched . model . Session Ċ import Ġcom . google . samples . apps . ios ched . model . Tag Ċ import Ġcom . google . samples . apps . ios ched . shared . util . Time Utils . Conference Days Ċ import Ġorg . th reet en . bp . Duration Ċ import Ġorg . th reet en . bp . Z onedDateTime Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* ĠConference DataSource Ġdata Ġsource Ġthat Ġnever Ġto uches Ġthe Ġnetwork . Ċ Ġ* Ċ Ġ* ĠThis Ġclass Ġis Ġonly Ġavailable Ġwith Ġthe Ġstaging Ġvariant . ĠIt 's Ġused Ġfor ĠUI Ġtests Ġand Ċ Ġ* Ġfaster Ġdevelopment . Ċ Ġ*/ Ċ object ĠFake Conference DataSource Ġ: ĠConference DataSource Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Remote Conference Data () Ġ= Ġget Offline Conference Data () ĊĊĠĠĠ Ġoverride Ġfun Ġget Offline Conference Data (): ĠConference Data ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbootstrap Content Ġ= ĠBootstrap Conference DataSource . get Offline Conference Data () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtransform Data For Staging ( bootstrap Content Ġ?: Ġthrow ĠException (" Couldn 't Ġload Ġdata ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtransform Data For Staging ( data : ĠConference Data ): ĠConference Data Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsessions Ġ= Ġmove All Sessions To Today And Limit Duration ( data . sessions . to Mutable List ()) ĊĠĠĠĠĠĠĠ Ġval Ġspeak ers Ġ= Ġdata . speak ers . to Mutable Set () ĊĠĠĠĠĠĠĠ Ġval Ġtags Ġ= Ġdata . tags . to Mutable List () ĊĊĠĠĠĠĠĠĠ Ġvar Ġlast First Session : ĠSession ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ// ĠRename Ġthe Ġfirst Ġsessions Ġof Ġeach Ġday ĊĊĠĠĠĠĠĠĠ ĠConference Days . forEach Indexed Ġdays ForEach @{ Ġindex , Ġday Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Session Index Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsessions . indexOf First Ġ{ Ġit . startTime Ġ>= Ġday . start Ġ&& Ġit . endTime Ġ<= Ġday . end Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Session Index Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsessions . indexOf Last Ġ{ Ġit . startTime Ġ>= Ġday . start Ġ&& Ġit . endTime Ġ<= Ġday . end Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first Session Index Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" Some Ġsessions Ġare Ġset Ġoutside Ġof Ġthe Ġconference Ġdays ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ days ForEach ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Session Ġ= Ġsessions [ first Session Index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Session Ġ= Ġsessions [ last Session Index ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsessions . remove ( first Session ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsessions . remove ( last Session ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsessions . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Session Index , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Session . copy ( title Ġ= Ġ" First Ġsession Ġday Ġ${ index Ġ+ Ġ 1 }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMake Ġlast Ġsession Ġend Ġat Ġthe Ġend Ġof Ġthe Ġday ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsessions . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Session Index , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Session . copy ( title Ġ= Ġ" Last Ġsession Ġday Ġ${ index Ġ+ Ġ 1 }", ĠendTime Ġ= Ġday . end ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast First Session Ġ= Ġfirst Session ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last First Session Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" Conference Ġdata Ġdoes Ġnot Ġhave Ġsessions .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠGive Ġa Ġknown ĠID Ġto Ġan Ġarbitrary Ġsession Ġ( the Ġsecond Ġsession Ġwith Ġtags Ġand Ġspeak ers ) ĊĠĠĠĠĠĠĠ Ġval Ġsessions InRange Ġ= Ġsessions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . startTime Ġ>= ĠConference Days . first (). start Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . endTime Ġ<= ĠConference Days . last (). end ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsecond Session Ġ= Ġsessions InRange [ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġsecond Session Index Ġ= Ġsessions . indexOf ( second Session ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ... also , Ġchange Ġits Ġtitle , Ġid , Ġspeaker , Ġrelated Ġsessions Ġand Ġtags ĊĊĠĠĠĠĠĠĠ Ġval Ġspeaker Ġ= Ġspeak ers . first () ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Tag Ġ= ĠTag ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdisplayName Ġ= ĠFA KE _ SESSION _ TAG _ NAME , Ġid Ġ= Ġ" FA KE _ TAG ", ĠtagName Ġ= Ġ" topic _ staging ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġ"# 3 9 C 7 9 D ". to Color Int (), Ġfont Color Ġ= Ġ"# 2 0 2 1 2 4 ". to Color Int (), Ġcategory Ġ= Ġ" topic ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder In Category Ġ= Ġ 1 3 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġtags . add ( new Tag ) ĊĊĠĠĠĠĠĠĠ Ġsessions . remove At ( second Session Index ) ĊĠĠĠĠĠĠĠ Ġsessions . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Session Index , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Session . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠFA KE _ SESSION _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠFA KE _ SESSION _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelated Sessions Ġ= Ġset Of ( last First Session !!. id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeak ers Ġ= Ġset Of ( speaker . copy ( name Ġ= ĠFA KE _ SESSION _ SPE AK ER _ NAME )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags Ġ= ĠlistOf ( new Tag ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Tags Ġ= ĠlistOf ( new Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġadd Session For Al arms Testing ( sessions , Ġsecond Session ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠReturn Ġthe Ġnew Ġdata Ġreplacing Ġthe Ġmodified Ġproperties Ġonly . ĊĠĠĠĠĠĠĠ Ġreturn Ġdata . copy ( sessions Ġ= Ġsessions , Ġspeak ers Ġ= Ġspeak ers . toList (), Ġtags Ġ= Ġtags ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Session For Al arms Testing ( ĊĠĠĠĠĠĠĠ Ġsessions : ĠMutable List < Session >, ĊĠĠĠĠĠĠĠ Ġexample Session : ĠSession ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtime In 5 Minutes Ġ= ĠZ onedDateTime . now (). plus Minutes ( 5 ). plus Seconds ( 1 0 ) ĊĊĠĠĠĠĠĠĠ Ġsessions . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexample Session . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠAL ARM _ SESSION _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Fake Ġsession Ġthat Ġstarts Ġin Ġ 5 : 1 0 Ġminutes ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelated Sessions Ġ= Ġempty Set (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Ġ= Ġtime In 5 Minutes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Ġ= Ġtime In 5 Minutes . plus Minutes ( 3 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmove All Sessions To Today And Limit Duration ( ĊĠĠĠĠĠĠĠ Ġsessions : ĠMutable List < Session > ĊĠĠĠ Ġ): ĠMutable List < Session > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconference Start Ġ= ĠConference Days . first (). start ĊĊĠĠĠĠĠĠĠ Ġsessions . sortBy Ġ{ Ġit . startTime Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Session StartTime Ġ= Ġsessions . first (). startTime ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Session >() ĊĊĠĠĠĠĠĠĠ Ġsessions . forEach Ġ{ Ġsession Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelta Ġ= ĠDuration . between ( first Session StartTime , Ġsession . startTime ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠDuration . of Minutes ( 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Ġ= Ġconference Start Ġ+ Ġdelta , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Ġ= Ġconference Start Ġ+ Ġdelta Ġ+ Ġduration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconst Ġval ĠFA KE _ SESSION _ NAME Ġ= Ġ" Second Ġsession Ġon Ġday Ġ 1 " ĊĠĠĠ Ġconst Ġval ĠFA KE _ SESSION _ ID Ġ= Ġ" FA KE _ SESSION _ ID " ĊĠĠĠ Ġconst Ġval ĠFA KE _ SESSION _ TAG _ NAME Ġ= Ġ" Staging Ġtag " ĊĠĠĠ Ġconst Ġval ĠFA KE _ SESSION _ SPE AK ER _ NAME Ġ= Ġ" Dr . ĠSt aging " ĊĠĠĠ Ġconst Ġval ĠAL ARM _ SESSION _ ID Ġ= Ġ" abcdef g " Ċ } Ċ