package Ġlt . mark mer kk Ċ Ċ import Ġlt . mark mer kk . entities . DateRange Ċ import Ġlt . mark mer kk . entities . Log Ċ import Ġlt . mark mer kk . events . Event Active Display Data Change Ċ import Ġorg . joda . time . Duration Ċ import Ġorg . joda . time . LocalDate Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ class ĠActive Display Repository Default ( ĊĠĠĠ Ġprivate Ġval Ġwork log Storage : ĠWork log Storage , ĊĠĠĠ Ġprivate Ġval Ġtime Provider : ĠTime Provider , ĊĠĠĠ Ġprivate Ġval Ġauto Sync Watcher : ĠAuto Sync Watcher 2 , ĊĠĠĠ Ġprivate Ġval Ġevent Bus : ĠW T EventBus Ċ ) Ġ: ĠActive Display Repository Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ display Logs Ġ= Ġempty List < Log >() ĊĠĠĠ Ġoverride Ġval Ġdisplay Logs : ĠList < Log > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ display Logs ĊĊĠĠĠ Ġprivate Ġvar Ġ_ display Type Ġ= ĠDisplay Type Length . DAY ĊĠĠĠ Ġoverride Ġval Ġdisplay Type : ĠDisplay Type Length ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ display Type ĊĊĠĠĠ Ġprivate Ġvar Ġ_ display DateRange : ĠDate Range Ġ= ĠDate Range . by Display Type ( display Type , Ġtime Provider . now (). to LocalDate ()) ĊĠĠĠ Ġoverride Ġval Ġdisplay DateRange : ĠDate Range ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ display DateRange ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġnotify Data Change () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchange Display Type ( display Type : ĠDisplay Type Length ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis ._ display Type Ġ= Ġdisplay Type ĊĠĠĠĠĠĠĠ Ġthis . change Display Date ( display DateRange . select Date ) ĊĠĠĠĠĠĠĠ Ġnotify Data Change () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchange Display Date ( new Date : ĠLocalDate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis ._ display DateRange Ġ= ĠDate Range . by Display Type ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Type Ġ= Ġdisplay Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Date Ġ= Ġnew Date ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġnotify Data Change () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprev Display Date () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Date Ġ= Ġwhen Ġ( display Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Type Length . DAY Ġ-> Ġdisplay DateRange . select Date . minus Days ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Type Length . WEEK Ġ-> Ġdisplay DateRange . select Date . minus Days ( 7 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġchange Display Date ( new Date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnext Display Date () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Date Ġ= Ġwhen Ġ( display Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Type Length . DAY Ġ-> Ġdisplay DateRange . select Date . plus Days ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Type Length . WEEK Ġ-> Ġdisplay DateRange . select Date . plus Days ( 7 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġchange Display Date ( new Date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinsert OrUpdate ( log : ĠLog ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Id Ġ= Ġwork log Storage . insert OrUpdate Sync ( log ) ĊĠĠĠĠĠĠĠ Ġauto Sync Watcher . mark For Short Cycle Update () ĊĠĠĠĠĠĠĠ Ġnotify Data Change () ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( log : ĠLog ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Id Ġ= Ġwork log Storage . delete Sync ( log ) ĊĠĠĠĠĠĠĠ Ġauto Sync Watcher . mark For Short Cycle Update () ĊĠĠĠĠĠĠĠ Ġnotify Data Change () ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( log : ĠLog ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Id Ġ= Ġwork log Storage . update Sync ( log ) ĊĠĠĠĠĠĠĠ Ġauto Sync Watcher . mark For Short Cycle Update () ĊĠĠĠĠĠĠĠ Ġnotify Data Change () ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnotify Data Change () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ display Logs Ġ= Ġwork log Storage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load Work logs Sync ( display DateRange . start , Ġdisplay DateRange . end . plus Days ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ! it . is Marked For Deletion Ġ} ĊĠĠĠĠĠĠĠ Ġevent Bus . post ( Event Active Display Data Change ( display Logs )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtotal In Millis () Ġ= Ġdisplay Logs . fold ( 0 L ) Ġ{ Ġsum , Ġlog Ġ-> ĊĠĠĠĠĠĠĠ Ġsum Ġ+ Ġlog . time . duration . millis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtotal As Duration (): ĠDuration Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDuration ( total In Millis ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( Tags . DB ) !! ĊĠĠĠ Ġ} Ċ Ċ } Ċ