package Ġcom . a osh en f eng yu . test amaz ing talk er . factory Ċ Ċ import Ġcom . a osh en f eng yu . test amaz ing talk er . bean . Schedule Bean Ċ import Ġcom . a osh en f eng yu . test amaz ing talk er . bean . Schedule Bundle Ċ import Ġcom . a osh en f eng yu . test amaz ing talk er . bean . Schedule Item Ċ import Ġcom . a osh en f eng yu . test amaz ing talk er . constant . Constant . CAL END AR _ COLUMN _ COUNT Ċ import Ġcom . a osh en f eng yu . test amaz ing talk er . constant . Constant . CAL END AR _ TIME _ INTERVAL _ MINUTE Ċ import Ġcom . a osh en f eng yu . test amaz ing talk er . util . Date Util Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠSchedule Items Factory Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġtoday Ġ= ĠDate () ĊĠĠĠ Ġprivate Ġvar Ġtoday String Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġtoday Items Ġ= ĠArrayList < Schedule Item >() ĊĊĠĠĠ Ġfun Ġcreate ( ĊĠĠĠĠĠĠĠ Ġiso 8 6 0 1 S unday String : ĠString , ĊĠĠĠĠĠĠĠ Ġdate Ranges : ĠArrayList < Schedule Bean . DateRange Bean > ĊĠĠĠ Ġ): ĠSchedule Bundle Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtwo Dimension al Schedule Items Ġ= Ġcreate Schedule Items Array ( iso 8 6 0 1 S unday String , Ġdate Ranges ) ĊĠĠĠĠĠĠĠ Ġval Ġschedule Items Ġ= Ġtwo Dimension al Schedule Items . flat () ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Title Enable s Ġ= Ġtwo Dimension al Schedule Items . getColumn Title Enable s () ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠSchedule Bundle () ĊĠĠĠĠĠĠĠ Ġbundle . set Schedule Items ( schedule Items ) ĊĠĠĠĠĠĠĠ Ġbundle . set Column Title Enable s ( column Title Enable s ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbundle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Schedule Items Array ( ĊĠĠĠĠĠĠĠ Ġiso 8 6 0 1 S unday String : ĠString , ĊĠĠĠĠĠĠĠ Ġdate Ranges : ĠArrayList < Schedule Bean . DateRange Bean > ĊĠĠĠ Ġ): ĠTwo Dimension al Schedule Items Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtwo Dimension al Schedule Items Ġ= ĠTwo Dimension al Schedule Items () ĊĠĠĠĠĠĠĠ Ġif Ġ( date Ranges . size Ġ== Ġ 0 ) Ġreturn Ġtwo Dimension al Schedule Items ĊĊĠĠĠĠĠĠĠ Ġval Ġs unday Ġ= ĠDate Util . getDate ( iso 8 6 0 1 S unday String ) ĊĠĠĠĠĠĠĠ Ġval Ġlast DayOfWeek Ġ= ĠDate Util . getLast DayOfWeek ( s unday ) ĊĊĠĠĠĠĠĠĠ Ġstart Day ( s unday ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( date Range Ġin Ġdate Ranges ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= ĠDate Util . getDate ( date Range . iso 8 6 0 1 StartDate String !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= ĠDate Util . getDate ( date Range . iso 8 6 0 1 EndDate String !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġschedule Items Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Schedule Items ( startDate , ĠendDate , Ġdate Range . is Enable , Ġlast DayOfWeek ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Schedule Items ( two Dimension al Schedule Items , Ġschedule Items ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġadd Ġlast Ġday Ġitems Ġof Ġweek Ġto Ġitems Array ĊĠĠĠĠĠĠĠ Ġif Ġ(! two Dimension al Schedule Items . is Full ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtwo Dimension al Schedule Items . add ( today Items ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtwo Dimension al Schedule Items . fill Every Day With Space Items () ĊĠĠĠĠĠĠĠ Ġreturn Ġtwo Dimension al Schedule Items ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgroup Schedule Items ( ĊĠĠĠĠĠĠĠ Ġtwo Dimension al Schedule Items : ĠTwo Dimension al Schedule Items , ĊĠĠĠĠĠĠĠ Ġschedule Items : Ġjava . util . ArrayList < Schedule Item > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( schedule Item Ġin Ġschedule Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! two Dimension al Schedule Items . is Full ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( today String Ġ== Ġschedule Item . date String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Last DayOfWeek Ġ= Ġend Today ( two Dimension al Schedule Items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Last DayOfWeek ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoday Items . add ( schedule Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Schedule Items ( ĊĠĠĠĠĠĠĠ ĠstartDate : ĠDate , ĊĠĠĠĠĠĠĠ ĠendDate : ĠDate , ĊĠĠĠĠĠĠĠ Ġis Enable : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġlast DayOfWeek : ĠDate ĊĠĠĠ Ġ): ĠArrayList < Schedule Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġschedule Items Ġ= ĠArrayList < Schedule Item >() ĊĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( endDate . before ( last DayOfWeek )) ĠendDate Ġelse Ġlast DayOfWeek ĊĠĠĠĠĠĠĠ Ġval Ġinterval Date Calendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġinterval Date Calendar . time Ġ= ĠstartDate ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( interval Date Calendar . time . before ( endDate )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġschedule Item Ġ= Ġcreate Schedule Item ( interval Date Calendar . time , Ġis Enable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Items . add ( schedule Item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterval Date Calendar . add ( Calendar . MINUTE , ĠCAL END AR _ TIME _ INTERVAL _ MINUTE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġschedule Items ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Schedule Item ( date : ĠDate , Ġis Enable : ĠBoolean ): ĠSchedule Item Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSchedule Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDate Util . getDate String ( date ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDate Util . getTime String ( date ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Enable ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Day ( s unday : ĠDate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtoday Ġ= Ġs unday ĊĠĠĠĠĠĠĠ Ġtoday String Ġ= ĠDate Util . getDate String ( today ) ĊĠĠĠĠĠĠĠ Ġtoday Items Ġ= ĠArrayList < Schedule Item >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġis Ġlast Ġday Ġof Ġweek ? ĊĠĠĠĠ Ġ* Ġ**/ ĊĠĠĠ Ġprivate Ġfun Ġend Today ( two Dimension al Schedule Items : ĠTwo Dimension al Schedule Items ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtwo Dimension al Schedule Items . add ( today Items ) ĊĠĠĠĠĠĠĠ Ġif Ġ( two Dimension al Schedule Items . is Full ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtoday Ġ= ĠDate Util . get Tom orrow Date ( today ) ĊĠĠĠĠĠĠĠ Ġtoday String Ġ= ĠDate Util . getDate String ( today ) ĊĠĠĠĠĠĠĠ Ġtoday Items Ġ= ĠArrayList < Schedule Item >() ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠTwo Dimension al Schedule Items Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġitems Array Ġ= ĠArrayList < ArrayList < Schedule Item >>() ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcolumn Title Enable s Ġ= ĠArrayList < Boolean >() ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd ( schedule Item : Ġjava . util . ArrayList < Schedule Item >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Array . add ( schedule Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġis Full (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitems Array . size Ġ== ĠCAL END AR _ COLUMN _ COUNT ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfill Every Day With Space Items () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠmaxSize Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( items Ġin Ġitems Array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( items . size Ġ> ĠmaxSize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxSize Ġ= Ġitems . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( items Ġin Ġitems Array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Title Enable s . add ( items . size Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( items . size Ġ< ĠmaxSize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġitems . size Ġuntil ĠmaxSize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Schedule Item ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġflat (): ĠArrayList < Schedule Item > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠArrayList < Schedule Item >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Count Ġ= Ġitems Array [ 0 ]. size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcolumn Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( schedule Items Ġin Ġitems Array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( schedule Items [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitems ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Column Title Enable s (): ĠArrayList < Boolean > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcolumn Title Enable s ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }