package Ġno . nav . sy fo . common . delete Ċ Ċ import Ġkotlinx . coroutines . Del icate Cor outines Api Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ import Ġno . nav . sy fo . application . Application State Ċ import Ġno . nav . sy fo . util . Un bounded Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . time . LocalDate Ċ import Ġkotlin . time . Duration . Companion . hours Ċ import Ġkotlin . time . Experimental Time Ċ Ċ class ĠDelete DataService ( ĊĠĠĠ Ġprivate Ġval Ġdatabase : ĠDelete Data Db , ĊĠĠĠ Ġprivate Ġval Ġapplication State : ĠApplication State Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlog : ĠLogger Ġ= ĠLoggerFactory . getLogger ( Delete DataService :: class . java ) ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEL AY _ HOUR S Ġ= Ġ 2 4 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMON TH S _ FOR _ SY K ME LD ING Ġ= Ġ 4 L ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Del icate Cor outines Api ĊĠĠĠ Ġ@ Experimental Time ĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Un bounded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( application State . ready ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdatabase . delete Old Data ( getDate For Deletion ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Deleted Ġ${ result . deleted Sy k meld ing } Ġsy k meld inger , Ġ${ result . deleted Sy k meld t } Ġsy k meld te , Ġ${ result . deleted S ok n ader } Ġs ok n ader Ġand Ġ${ result . deleted H en del ser } Ġh en del ser ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Could Ġnot Ġdelete Ġdata ", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( hours ( DELAY _ HOUR S )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Date For Deletion () Ġ= ĠLocalDate . now (). minus Months ( MONTH S _ FOR _ SY K ME LD ING ) Ċ } Ċ