/* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 1 8 ĠK eval ĠP ate l . Ċ Ġ* Ċ Ġ* Ġ Ġ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 Ġcom . stand up . core . sleep Manager Ċ Ċ import Ġcom . ke val p ate l 2 1 0 6 . common . prefs . User Session Manager Ċ import Ġcom . ke val p ate l 2 1 0 6 . common . prefs . User Settings Manager Ċ import Ġcom . ke val p ate l 2 1 0 6 . utils . Time Utils Ċ import Ġcom . ke val p ate l 2 1 0 6 . utils . annotations . Helper Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠK eval Ġon Ġ 1 9 / 0 1 / 1 8 . Ċ Ġ* ĠHelper Ġclass Ġfor Ġ[ Sleep Mode Monitoring Job ]. Ċ Ġ* Ċ Ġ* Ġ@ author Ġ[ ke val p ate l 2 1 0 6 ]( https :// github . com / ke val p ate l 2 1 0 6 ) Ċ Ġ*/ Ċ @ Helper ( Sleep Mode Monitoring Job :: class ) Ċ internal Ġobject ĠSleep Mode Monitoring Helper Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġnext Ġsleep Ġmode Ġstart Ġtime Ġin Ġunix Ġmilliseconds . ĠIt Ġwill Ġconvert Ġthe ĊĠĠĠĠ Ġ* Ġ[ User Settings Manager . sleep StartTime ] Ġwhich Ġis Ġin Ġthe Ġmilliseconds Ġfrom Ġthe Ġ 1 2 AM Ġinto Ġthe Ġunix ĊĠĠĠĠ Ġ* Ġtime Ġof Ġthe Ġcurrent Ġday Ġif Ġthe Ġthe Ġtime Ġis Ġnot Ġpassed Ġaway Ġor Ġit Ġwill Ġgive Ġstart Ġtime Ġfor Ġthe ĊĠĠĠĠ Ġ* Ġnext Ġday . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠUser Settings Manager . sleep StartTime ĊĠĠĠĠ Ġ* Ġ@ see ĠTime Utils . today Mid night Cal ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Sleep Start Timing ( user Settings Manager : ĠUser Settings Manager ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwith ( Time Utils . today Mid night M ills () Ġ+ Ġuser Settings Manager . sleep StartTime ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ< ĠSystem . currentTimeMillis ()) Ġ{ ĠĠĠ Ġ// Auto Ġd nd Ġstart Ġtime Ġis Ġalready Ġpassed . ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Schedule Ġthe Ġjob Ġtomorrow . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Ġthis Ġ+ ĠTime Utils . ONE _ DAY _ MILLISECONDS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĠĠĠ Ġ// Auto Ġd nd Ġstart Ġtime Ġis Ġyet Ġto Ġpass . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Schedule Ġthe Ġjob Ġtoday Ġitself . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġnext Ġsleep Ġmode Ġend Ġtime Ġin Ġunix Ġmilliseconds . ĠIt Ġwill Ġconvert Ġthe ĊĠĠĠĠ Ġ* Ġ[ User Settings Manager . sleep EndTime ] Ġwhich Ġis Ġin Ġthe Ġmilliseconds Ġfrom Ġthe Ġ 1 2 AM Ġinto Ġthe Ġunix ĊĠĠĠĠ Ġ* Ġtime Ġof Ġthe Ġcurrent Ġday Ġif Ġthe Ġthe Ġtime Ġis Ġnot Ġpassed Ġaway Ġor Ġit Ġwill Ġgive Ġstart Ġtime Ġfor Ġthe ĊĠĠĠĠ Ġ* Ġnext Ġday . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠUser Settings Manager . sleep EndTime ĊĠĠĠĠ Ġ* Ġ@ see ĠTime Utils . today Mid night Cal ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Sleep End Timing ( user Settings Manager : ĠUser Settings Manager ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwith ( Time Utils . today Mid night M ills () Ġ+ Ġuser Settings Manager . sleep EndTime ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ< ĠSystem . currentTimeMillis ()) Ġ{ ĠĠĠ Ġ// Auto Ġd nd Ġstart Ġtime Ġis Ġalready Ġpassed . ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Schedule Ġthe Ġjob Ġtomorrow . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Ġthis Ġ+ ĠTime Utils . ONE _ DAY _ MILLISECONDS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĠĠĠ Ġ// Auto Ġd nd Ġstart Ġtime Ġis Ġyet Ġto Ġpass . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Schedule Ġthe Ġjob Ġtoday Ġitself . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIs Ġit Ġokay Ġto Ġrun / schedule Ġthe Ġ[ Sleep Mode Monitoring Job ]? ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ[ Sleep Mode Monitoring Job ] Ġshould Ġonly Ġbe Ġrunning Ġif Ġuser Ġis Ġlogged Ġin Ġ( i . e . ĊĠĠĠĠ Ġ* Ġ[ User Session Manager . is User LoggedIn ] Ġis Ġtrue .). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠTrue Ġif Ġapplication Ġis Ġgood Ġto Ġschedule / run Ġthe Ġ[ Sleep Mode Monitoring Job ] Ġor Ġelse Ġfalse . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshould Running Job ( user Session Manager : ĠUser Session Manager ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Session Manager . is User LoggedIn ĊĠĠĠ Ġ} Ċ } Ċ