package Ġcom . k yle cor ry . trail _ sense . weather . infrastructure . clouds Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġcom . k yle cor ry . sol . units . Reading Ċ import Ġcom . k yle cor ry . trail _ sense . shared . database . I Reading Repo Ċ import Ġcom . k yle cor ry . trail _ sense . weather . domain . Cloud Observation Ċ import Ġjava . time . Duration Ċ import Ġjava . time . Instant Ċ Ċ class ĠCloud Observation Repo ( private Ġval Ġcontext : ĠContext ) Ġ: ĠI Reading Repo < Cloud Observation > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġread ings Ġ= Ġmutable ListOf < Reading < Cloud Observation >>() ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġadd ( reading : ĠReading < Cloud Observation >): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠSave Ġin ĠDB ĊĠĠĠĠĠĠĠ Ġread ings . add ( reading ) ĊĠĠĠĠĠĠĠ Ġreturn Ġread ings . size . to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdelete ( reading : ĠReading < Cloud Observation >) Ġ{ ĊĠĠĠĠĠĠĠ Ġread ings . remove If Ġ{ Ġit . value . id Ġ== Ġreading . value . id Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget ( id : ĠLong ): ĠReading < Cloud Observation >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġread ings . first OrNull Ġ{ Ġit . value . id Ġ== Ġid Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠgetAll (): ĠList < Reading < Cloud Observation >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġread ings ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll Live (): ĠLive Data < List < Reading < Cloud Observation >>> Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġclean () Ġ{ ĊĠĠĠĠĠĠĠ Ġread ings . removeAll Ġ{ Ġit . time Ġ< ĠInstant . now (). minus ( Duration . of Days ( 2 )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠCloud Observation Repo ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ@ Synchron ized ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext ): ĠCloud Observation Repo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠCloud Observation Repo ( context . application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }