package Ġcom . pi ot rek 1 5 4 3 . android . boilerplate . data . source Ċ Ċ import Ġcom . pi ot rek 1 5 4 3 . android . boilerplate . data . repository . Forecast Cache Ċ import Ġcom . pi ot rek 1 5 4 3 . android . boilerplate . data . repository . Forecast DataStore Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreate Ġan Ġinstance Ġof Ġa ĠFore cast DataStore Ċ Ġ*/ Ċ open Ġclass ĠFore cast DataStore Factory Ġ@ Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġforecast Cache : ĠFore cast Cache , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġforecast Cache DataStore : ĠFore cast Cache DataStore , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġforecast Remote DataStore : ĠFore cast Remote DataStore ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa ĠData Store Ġbased Ġon Ġwhether Ġor Ġnot Ġthere Ġis Ġcontent Ġin Ġthe Ġcache Ġand Ġthe Ġcache ĊĠĠĠĠ Ġ* Ġhas Ġnot Ġexpired ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġretrieve DataStore ( is Cached : ĠBoolean ): ĠFore cast DataStore Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Cached Ġ&& Ġ! forecast Cache . is Expired ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġretrieve Cache DataStore () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġretrieve Remote DataStore () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġan Ġinstance Ġof Ġthe ĠCache ĠData ĠStore ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġretrieve Cache DataStore (): ĠFore cast DataStore Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġforecast Cache DataStore ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġan Ġinstance Ġof Ġthe ĠRemote ĠData ĠStore ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġretrieve Remote DataStore (): ĠFore cast DataStore Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġforecast Remote DataStore ĊĠĠĠ Ġ} Ċ Ċ }