package Ġcom . mb ak gun . weather logger . model Ċ Ċ import Ġandroid . arch . lifecycle . LiveData Ċ import Ġandroid . util . Log Ċ import Ġcom . mb ak gun . weather logger . network . Network Repository Ċ import Ġcom . mb ak gun . weather logger . network . Response . Weather Response Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġjava . util .* Ċ Ċ class ĠWeather Data Processor ( val Ġrepository : ĠWeather Data Repository Ġ= ĠWeather Data Repository (), Ġval Ġnetwork Repository : ĠNetwork Repository Ġ= ĠNetwork Repository ()) Ġ{ ĊĊĠĠĠ Ġinterface ĠOn Weather Data Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠonSuccess ( weather Data : ĠWeather Data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Weather Data ( tc : ĠWeather Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . save Weather Data ( tc ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Weather Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . clear Weather Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmerge Local DataList ( data List : ĠList < Weather Data >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . merge Local DataList ( data List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Weather Data By Dt ( create Date : ĠDate ): ĠWeather Data ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository . load Weather Data By Dt ( create Date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Weather Data (): ĠLive Data < List < Weather Data >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository . load Weather Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Weather Data ( on Weather Data Listener : ĠOn Weather Data Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġnetwork Repository . weather Service . get Weather ( network Repository . id , Ġnetwork Repository . appId ) ĊĠĠĠĠĠĠĠ Ġcall . enqueue ( object Ġ: ĠCallback < Weather Response > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Weather Response > ?, Ġresponse : ĠResponse < Weather Response > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Ġ!= Ġnull Ġ&& Ġresponse . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweather Item Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Weather Data Listener . on Success ( Weather Data ( weather Item ?. name !! , Ġweather Item . sys ?. country !! , Ġweather Item . weather ?. get ( 0 )?. description !! , Ġweather Item . main ?. temp !! , Ġweather Item . dt . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure ( call , ĠThrowable (" Bad ĠResponse ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Weather Response > ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Response ĠFailure ", Ġt ?. message , Ġt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }