/****************************************************************************** Ċ Ġ* ĠCor ona - Warn - App ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* ĠSAP ĠSE Ġand Ġall Ġother Ġcontributors Ġ/ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* Ġcopyright Ġowners Ġlicense Ġthis Ġfile Ġto Ġyou Ġ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 Ġde . r ki . cor on aw arn app . storage . tracing Ċ Ċ import Ġandroid . content . Context Ċ import Ġde . r ki . cor on aw arn app . risk . Time Variables Ċ import Ġde . r ki . cor on aw arn app . storage . App Database Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠTr acing Interval Repository ( private Ġval Ġtracing Interval Dao : ĠTr acing Interval Dao ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG : ĠString ? Ġ= ĠTr acing Interval Repository :: class . simple Name ĊĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠTr acing Interval Repository ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠgetInstance ( tracing Interval Dao : ĠTr acing Interval Dao ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ?: Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠTr acing Interval Repository ( tracing Interval Dao ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġinstance Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġreset Instance () Ġ= Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Date Repository ( context : ĠContext ): ĠTr acing Interval Repository Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠgetInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Database . getInstance ( context . application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. tracing Interval Dao () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġcreate Interval ( from : ĠLong , Ġto : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . v (" Insert ĠTr acing ĠInterval Ġ$ from , Ġ$ to ") ĊĠĠĠĠĠĠĠ Ġif Ġ( to Ġ< Ġfrom ) Ġthrow ĠIllegalArgumentException (" to Ġcannot Ġbe Ġbefore Ġfrom ") ĊĠĠĠĠĠĠĠ Ġtracing Interval Dao . insert Interval ( Tracing Interval Entity (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . from Ġ= Ġfrom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . to Ġ= Ġto ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Intervals (): ĠList < Pair < Long , ĠLong >> Ġ{ ĊĠĠĠĠĠĠĠ Ġdelete Out dated Interval () ĊĠĠĠĠĠĠĠ Ġreturn Ġtracing Interval Dao . getAll Intervals (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( it . from , Ġit . to ) ĊĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Intervals : Ġ$ it ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġdelete Out dated Interval () Ġ= Ġtracing Interval Dao ĊĠĠĠĠĠĠĠ Ġ. delete Out dated Intervals ( System . currentTimeMillis () Ġ- ĠTime Variables . getDefault Retention Period In MS ()) Ċ } Ċ