package Ġcom . mobile dev pro . data . repository . statistic Ċ Ċ import Ġcom . mobile dev pro . data . mapper . throwable To Domain Ċ import Ġcom . mobile dev pro . data . mapper . to Domain Ċ import Ġcom . mobile dev pro . data . model . statistic . Coord Entity Ċ import Ġcom . mobile dev pro . data . model . statistic . Country Statistic Entity Ċ import Ġcom . mobile dev pro . data . model . statistic . Count y Statistic Entity Ċ import Ġcom . mobile dev pro . data . model . statistic . Day Statistic Entity Ċ import Ġcom . mobile dev pro . data . model . statistic . Statistic Entity Ċ import Ġcom . mobile dev pro . data . repository . par cer . Statistics Parser Html Ċ import Ġcom . mobile dev pro . domain . model . Statistic Country Ċ import Ġcom . mobile dev pro . domain . statistic . data . Statistic Data Repository Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . functions . Function 3 Ċ Ċ class ĠDefault Statistic Data Repository ( ĊĠĠĠ Ġprivate Ġval Ġstatistics Cache : ĠStat istic Cov id Cache , ĊĠĠĠ Ġprivate Ġval Ġstatistic Remote : ĠStat istic Cov id Remote , ĊĠĠĠ Ġprivate Ġval Ġstatistics Parser Html : ĠStatistics Parser Html Ċ ) Ġ: ĠStat istic Data Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Statistic From Api By Page ( page : ĠInt ) Ġ= Ġstatistic Remote ĊĠĠĠĠĠĠĠ Ġ. get Statistic By Page ( page ) ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . map ( Country Statistic Entity :: to Domain ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Statistics From Html () Ġ= ĠSingle ĊĠĠĠĠĠĠĠ Ġ. zip < ArrayList < Statistic Entity >, ĠArrayList < Statistic Entity >, ĠArrayList < Statistic Entity >, ĠArrayList < Statistic Entity >>( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatistics Parser Html . get Confirmed Statistics (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatistics Parser Html . get Death s Statistics (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatistics Parser Html . get Re covered Statistics (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFunction 3 Ġ{ Ġconfirmed , Ġdeath s , Ġre covered Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconverted Statistic Country Ġ= ĠArrayList < Statistic Entity >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġconfirmed . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Statistics Entity Ġ= ĠArrayList < Day Statistic Entity >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġconfirmed [ i ]. day Statistic . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Statistics Entity . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDay Statistic Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= Ġconfirmed [ i ]. day Statistic [ j ]. date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirmed Ġ= Ġconfirmed [ i ]. day Statistic [ j ]. confirmed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconverted Statistic Country . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStat istic Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCounty Statistic Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovince Name Ġ= Ġconfirmed [ i ]. country . province Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Name Ġ= Ġconfirmed [ i ]. country . country Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCoord Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlat Ġ= Ġconfirmed [ i ]. coord . lat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Ġ= Ġconfirmed [ i ]. coord . long ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Statistic Ġ= Ġday Statistics Entity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdeath s . indices ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconverted Statistic Country . filter Ġ{ Ġit . country . province Name Ġ== Ġdeath s [ i ]. country . province Name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġcountry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġdeath s [ i ]. day Statistic . indices ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry . day Statistic ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . date Ġ== Ġdeath s [ i ]. day Statistic [ j ]. date Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . deaths Ġ= Ġdeath s [ i ]. day Statistic [ j ]. deaths Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġre covered . indices ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconverted Statistic Country . filter Ġ{ Ġit . country . province Name Ġ== Ġre covered [ i ]. country . province Name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġcountry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġre covered [ i ]. day Statistic . indices ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry . day Statistic ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . date Ġ== Ġre covered [ i ]. day Statistic [ j ]. date Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . re covered Ġ= Ġre covered [ i ]. day Statistic [ j ]. re covered Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconverted Statistic Country ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. flatMap Comp letable ( statistics Cache :: update Confirmed Data ) ĊĠĠĠĠĠĠĠ Ġ. throwable To Domain () ĊĊĠĠĠ Ġoverride Ġfun Ġobserve Statistic By Count y Name ( query : ĠString ): ĠObservable < Statistic Country > Ġ= ĊĠĠĠĠĠĠĠ Ġstatistics Cache ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe Confirmed Data By Country Name ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. skip While Ġ{ Ġit . isEmpty () Ġ|| Ġit . first (). day Statistic . isEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . size Ġ<= Ġ 1 ) Ġresult [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġcollect Data By Day ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( Statistic Entity :: to Domain ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. throwable To Domain () ĊĊĠĠĠ Ġprivate Ġfun Ġcollect Data By Day ( result : ĠList < Statistic Entity >): ĠStat istic Entity Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconverted Days Total Entity Ġ= ĠArrayList < Day Statistic Entity >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġresult [ 0 ]. day Statistic . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġconfirmed Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdeath s Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġre covered Ġ= Ġ 0 L ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġresult . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirmed Ġ+= Ġresult [ j ]. day Statistic [ i ]. confirmed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeath s Ġ+= Ġresult [ j ]. day Statistic [ i ]. deaths ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre covered Ġ+= Ġresult [ j ]. day Statistic [ i ]. re covered ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconverted Days Total Entity . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDay Statistic Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= Ġresult [ 0 ]. day Statistic [ i ]. date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirmed Ġ= Ġconfirmed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeath s Ġ= Ġdeath s , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre covered Ġ= Ġre covered ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠStat istic Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Ġ= ĠCounty Statistic Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Name Ġ= Ġresult [ 0 ]. country . country Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovince Name Ġ= Ġresult [ 0 ]. country . country Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoord Ġ= Ġresult [ 0 ]. coord , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġday Statistic Ġ= Ġconverted Days Total Entity ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} Ċ }