package Ġcom . x ily . kotlin weather . presenter Ċ Ċ import Ġcom . x ily . kotlin weather . base . Base Presenter Ċ import Ġcom . x ily . kotlin weather . contract . Add City Contract Ċ import Ġcom . x ily . kotlin weather . model . DataManager Ċ import Ġcom . x ily . kotlin weather . model . db . bean . City List Bean Ċ import Ġcom . x ily . kotlin weather . model . db . bean . Location Bean Ċ import Ġcom . x ily . kotlin weather . utils . apply Schedulers Ċ import Ġio . reactivex . Observable Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠAdd City Presenter Ġ@ Inject Ċ constructor ( private Ġval Ġm DataManager : ĠData Manager ) Ġ: ĠBase Presenter < Add City Contract . View >(), ĠAdd City Contract . Presenter Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget City By Weather Id ( id : ĠInt ): ĠList < City List Bean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm DataManager . get City By Weather Id ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsearch ( str : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata List Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġval Ġcode List Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠ ĠObservable . create < List < Location Bean >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onNext ( m DataManager . search ( str )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onComplete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Lifecycle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Schedulers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġm View . show Progress Dialog () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do Finally Ġ{ Ġm View . close Progress Dialog () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . add ( it . area Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode List . add ( it . weather Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show ( data List , Ġcode List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show ErrorMsg ( throwable . message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery Pro vin ces () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata List Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ ĠObservable . create < List < Location Bean >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onNext ( m DataManager . get Pro vin ces ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onComplete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Lifecycle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Schedulers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġm View . show Progress Dialog () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do Finally Ġ{ Ġm View . close Progress Dialog () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . add ( it . province Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show ( data List , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show ErrorMsg ( throwable . message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery C ities ( province Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata List Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ ĠObservable . create < List < Location Bean >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onNext ( m DataManager . getC ities ( province Name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onComplete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Lifecycle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Schedulers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġm View . show Progress Dialog () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do Finally Ġ{ Ġm View . close Progress Dialog () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . add ( it . city Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show ( data List , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show ErrorMsg ( throwable . message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery Count ies ( province Name : ĠString , Ġcity Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata List Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġval Ġcode List Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠ ĠObservable . create < List < Location Bean >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onNext ( m DataManager . getCount ies ( province Name , Ġcity Name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onComplete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Lifecycle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Schedulers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġm View . show Progress Dialog () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do Finally Ġ{ Ġm View . close Progress Dialog () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . add ( it . area Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode List . add ( it . weather Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show ( data List , Ġcode List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show ErrorMsg ( throwable . message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd City ( Weather Id : ĠInt , Ġcount y Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcity List Ġ= ĠCity List Bean ( city Name Ġ= Ġcount y Name , Ġweather Id Ġ= ĠWeather Id ) ĊĠĠĠĠĠĠĠ Ġcity List . save () ĊĠĠĠ Ġ} Ċ } Ċ