/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// 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 . example . android . architecture . blueprint s . todo app . statistics ĊĊ Ċ import Ġcom . example . android . architecture . blueprint s . todo app . data . Task Ċ import Ġcom . example . android . architecture . blueprint s . todo app . data . source . Tasks DataSource Ċ import Ġcom . example . android . architecture . blueprint s . todo app . data . source . Tasks Repository Ċ import Ġcom . example . android . architecture . blueprint s . todo app . util . Esp ress o Id ling Resource Ċ Ċ /** Ċ Ġ* ĠList ens Ġto Ġuser Ġactions Ġfrom Ġthe ĠUI Ġ([ Statistics Fragment ]), Ġretrieves Ġthe Ġdata Ġand Ġupdates Ċ Ġ* Ġthe ĠUI Ġas Ġrequired . Ċ Ġ*/ Ċ class ĠStatistics Presenter ( ĊĠĠĠĠĠĠĠ Ġval Ġtasks Repository : ĠTasks Repository ĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠStatistics Contract . Presenter Ġ{ ĊĊĠĠĠ Ġoverride Ġlateinit Ġvar Ġview : ĠStatistics Contract . View ĊĊĠĠĠ Ġoverride Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġload Statistics () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Statistics () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . set Progress Indicator ( true ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġnetwork Ġrequest Ġmight Ġbe Ġhandled Ġin Ġa Ġdifferent Ġthread Ġso Ġmake Ġsure ĠE sp ress o Ġknows ĊĠĠĠĠĠĠĠ Ġ// Ġthat Ġthe Ġapp Ġis Ġbusy Ġuntil Ġthe Ġresponse Ġis Ġhandled . ĊĠĠĠĠĠĠĠ ĠE sp ress o Id ling Resource . increment () Ġ// ĠApp Ġis Ġbusy Ġuntil Ġfurther Ġnotice ĊĊĠĠĠĠĠĠĠ Ġtasks Repository . get Tasks ( object Ġ: ĠTasks DataSource . Load Tasks Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tasks Loaded ( tasks : ĠList < Task >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġcalculate Ġnumber Ġof Ġactive Ġand Ġcompleted Ġtasks ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcompleted Tasks Ġ= Ġtasks . filter Ġ{ Ġit . is Completed Ġ}. size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactive Tasks Ġ= Ġtasks . size Ġ- Ġcompleted Tasks ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġcallback Ġmay Ġbe Ġcalled Ġtwice , Ġonce Ġfor Ġthe Ġcache Ġand Ġonce Ġfor Ġloading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġdata Ġfrom Ġthe Ġserver ĠAPI , Ġso Ġwe Ġcheck Ġbefore Ġdecrement ing , Ġotherwise ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġit Ġthrows Ġ" Counter Ġhas Ġbeen Ġcorrupted !" Ġexception . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Esp ress o Id ling Resource . count ing Id ling Resource . is Idle Now ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE sp ress o Id ling Resource . decrement () Ġ// ĠSet Ġapp Ġas Ġidle . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġview Ġmay Ġnot Ġbe Ġable Ġto Ġhandle ĠUI Ġupdates Ġanymore ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! view . isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . set Progress Indicator ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Statistics ( active Tasks , Ġcompleted Tasks ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Not Available () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġview Ġmay Ġnot Ġbe Ġable Ġto Ġhandle ĠUI Ġupdates Ġanymore ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! view . isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Loading Statistics Error () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ