/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 . hyper aware . android . firebase jet pack . worker Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġandroidx . work . Worker Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġcom . hyper aware . android . firebase jet pack . repo . Stock Repository Ċ import Ġorg . k oin . standalone . K oin Component Ċ import Ġorg . k oin . standalone . inject Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠWork Manager ĠWorker Ġthat Ġsynchron izes Ġone Ġstock Ġprice Ġrecord , Ġso Ġit 's Ċ Ġ* Ġread ily Ġavailable Ġoffline . Ċ Ġ*/ Ċ Ċ class ĠStock Price Sync Worker ( context : ĠContext , Ġparams : ĠWorker Parameters ) ĊĠĠĠ Ġ: ĠWorker ( context , Ġparams ), ĠK oin Component Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Stock Sync " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġrepo Ġby Ġinject < Stock Repository >() ĊĊĠĠĠ Ġoverride Ġfun Ġdo Work (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġticker Ġ= Ġinput Data . getString (" ticker ") Ġ?: Ġreturn ĠResult . FAILURE ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Synchron izing Ġ$ ticker ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsync Ġ= Ġrepo . sync Stock Price ( ticker , Ġ 5 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsync . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStock Repository . Sync Result . SUCCESS Ġ-> ĠResult . SUCCESS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStock Repository . Sync Result . UNKNOWN Ġ-> ĠResult . SUCCESS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStock Repository . Sync Result . FAILURE Ġ-> ĠResult . FAILURE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStock Repository . Sync Result . TIMEOUT Ġ-> ĠResult . RETRY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠResult . FAILURE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Error Ġsynchron izing Ġ$ ticker ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . FAILURE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ