package Ġhu . b me . sch . park ett . park ett application . inter actor Ċ Ċ import Ġandroid . util . Log Ċ import Ġhu . b me . sch . park ett . park ett application . database . Data Base Ċ import Ġhu . b me . sch . park ett . park ett application . inter actor . events . Get D ance Event Ċ import Ġhu . b me . sch . park ett . park ett application . inter actor . events . Get D ance TypeList Event Ċ import Ġhu . b me . sch . park ett . park ett application . inter actor . events . Get D ances Event Ċ import Ġhu . b me . sch . park ett . park ett application . model . D ance Ċ import Ġhu . b me . sch . park ett . park ett application . network . D ance Network Ċ import Ġhu . b me . sch . park ett . park ett application . network . Network Exception Ċ import Ġorg . green robot . event bus . EventBus Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠD ance Interactor Impl Ġ@ Inject Ġconstructor ( private Ġvar Ġd ance Network : ĠD ance Network , Ġprivate Ġvar Ġdatabase : ĠData Base , Ġprivate Ġval Ġevent Bus : ĠEvent Bus ) Ġ: ĠD ance Interactor Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġfirst Time Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġget D ance TypeList () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġevent Ġ= ĠGet D ance TypeList Event () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh D ance Types From API () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . d ance TypeList Ġ= Ġdatabase . getAll D ance Type () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . code Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Bus . post ( event ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNetwork Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . throwable Ġ= Ġe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Bus . post ( event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget D ance List (){ ĊĠĠĠĠĠĠĠ Ġval Ġevent Ġ= ĠGet D ances Event () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh D ances From API () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . d ance List Ġ= Ġdatabase . getAll D ance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . code Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Bus . post ( event ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNetwork Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . throwable Ġ= Ġe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Bus . post ( event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh D ances From API () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! first Time ) Ġreturn ĊĠĠĠĠĠĠĠ Ġfirst Time Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġd ances Ġ= Ġd ance Network . get D ances () ĊĠĠĠĠĠĠĠ Ġfor Ġ( d ance Ġin Ġd ances ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . save ( d ance ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh D ance Types From API () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! first Time ) Ġreturn ĊĠĠĠĠĠĠĠ Ġfirst Time Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġd ance Types Ġ= Ġd ance Network . get D ance Types () ĊĠĠĠĠĠĠĠ Ġfor Ġ( d ance Type Ġin Ġd ance Types ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . save ( d ance Type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget D ance ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġevent Ġ= ĠGet D ance Event () ĊĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġd ance Ġ= Ġdatabase . get D ance ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( d ance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd ance From Api Ġ= Ġd ance Network . get D ance ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . save ( d ance From Api ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd ance Ġ= Ġd ance From Api ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . d ance Ġ= Ġd ance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . code Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Bus . post ( event ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNetwork Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . throwable Ġ= Ġe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Bus . post ( event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd D ance ( d ance : ĠD ance ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" Adding ĠD ance ", Ġd ance . toString ()) ĊĠĠĠĠĠĠĠ Ġdatabase . save ( d ance ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete D ance ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . delete ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave D ance ( d ance : ĠD ance ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" Saving ĠD ance ", d ance . toString ()) ĊĠĠĠĠĠĠĠ Ġdatabase . save ( d ance ) ĊĠĠĠ Ġ} Ċ }