package Ġcom . smart ton i . sync ĊĊ Ċ import Ġandroid . content . Context Ċ import Ġcom . smart ton i . database . Dao Adapter Ċ import Ġcom . smart ton i . entities . Machine Ċ import Ġcom . smart ton i . models . Sync Data Ċ import Ġcom . smart ton i . http . HttpClient Ċ import Ġcom . smart ton i . utils . Http Helper Ċ import Ġcom . smart ton i . utils . Date Util Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġjava . util .* Ċ Ċ class ĠMachine Sync Adapter Ġ: ĠAbstract Sync Adapter Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Sync ( context : ĠContext , Ġdao Adapter : ĠDao Adapter , Ġrestaurant Id : ĠString , Ġsuccess Listener : ĠAbstract Sync Adapter . Sync Success Listener , Ġfail Listener : ĠAbstract Sync Adapter . Sync Fail Listener ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġmachine Ġ= Ġdao Adapter . machine By Desc Order ĊĠĠĠĠĠĠĠ Ġvar Ġlast CreatedAt Ġ= ĠDate Util . format Standard Date ( Date ( 0 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( machine Ġ!= Ġnull Ġ&& Ġmachine . createdAt Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast CreatedAt Ġ= ĠHttp Helper . convert Milliseconds To Mysql DateTime String ( machine . createdAt . time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠHttpClient ( context ). httpClient . sync Machines ( restaurant Id , Ġlast CreatedAt ). enqueue ( object Ġ: ĠCallback < Sync Data < Machine >> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Sync Data < Machine >>, Ġresponse : ĠResponse < Sync Data < Machine >>) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġresponse . body () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreated Ġ= Ġdata . created ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdated Ġ= Ġdata . updated ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeleted Ġ= Ġdata . deleted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Create Ġ= ĠArrayList < Machine >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Delete Ġ= ĠArrayList < String >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( created Ġ!= Ġnull Ġ&& Ġcreated . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Create . addAll ( created ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( r Ġin Ġcreated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Delete . add ( r . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( updated Ġ!= Ġnull Ġ&& Ġupdated . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Create . addAll ( updated ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( r Ġin Ġupdated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Delete . add ( r . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Delete e Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( station Ġin Ġcreated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Delete e . add ( station . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete M ach iness ( context , Ġto Delete e , Ġdao Adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( deleted Ġ!= Ġnull Ġ&& Ġdeleted . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( r Ġin Ġdeleted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Delete . add ( r . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Machines ( context , Ġto Delete , Ġdao Adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Machines To Db ( context , Ġto Create , Ġdao Adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Listener . on Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Sync Data < Machine >>, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail Listener . on Fail () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Machines ( context : ĠContext , Ġids : ĠList < String >, Ġdao Adapter : ĠDao Adapter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( id Ġin Ġids ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmachine Ġ= Ġdao Adapter . get Machine ById ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( machine Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdao Adapter . delete Machine ( machine ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Machines To Db ( context : ĠContext , Ġmachines : ĠList < Machine >, Ġdao Adapter : ĠDao Adapter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist : ĠArrayList < Machine > Ġ= ĠArrayList < Machine >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( m Ġin Ġmachines ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm . name Ġ= Ġm . locales [ 0 ]. name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm . capacity Ġ= Ġm . capacity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm . id Ġ= Ġm . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm . room Ġ= Ġm . room ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( m ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdao Adapter . save Machine List ( list ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete M ach iness ( context : ĠContext , Ġids : ĠList < String >, Ġdao Adapter : ĠDao Adapter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( id Ġin Ġids ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmachine Ġ= Ġdao Adapter . get Machine ById ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( machine Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdao Adapter . delete Machine ( machine ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ