package Ġnl . rs dt . j app . j ot ial . maps . clustering Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġnl . rs dt . j app . application . J app Ċ import Ġnl . rs dt . j app . application . J app Preferences Ċ import Ġnl . rs dt . j app . j ot ial . Intent Cre atable Ċ import Ġnl . rs dt . j app . j ot ial . Re cre atable Ċ import Ġnl . rs dt . j app . j ot ial . data . structures . area 3 4 8 . S co uting Gro ep Info Ċ import Ġnl . rs dt . j app . j ot ial . io . AppData Ċ import Ġnl . rs dt . j app . j ot ial . maps . clustering . osm . O sm S co uting Gro ep ClusterManager Ċ import Ġnl . rs dt . j app . j ot ial . maps . management . Map Item Up datable Ċ import Ġnl . rs dt . j app . j ot ial . maps . wrapper . IJ oti Map Ċ import Ġnl . rs dt . j app . j ot ial . maps . wrapper . google . Google J oti Map Ċ import Ġnl . rs dt . j app . j ot ial . maps . wrapper . osm . O sm J oti Map Ċ import Ġnl . rs dt . j app . j ot ial . net . apis . S co uting Gro ep Api Ċ import Ġnl . rs dt . j app . service . cloud . data . Update Info Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ@ author ĠD ingen is ĠSie ger ĠSin ke Ċ Ġ* Ġ@ version Ġ 1 . 0 Ċ Ġ* Ġ@ since Ġ 2 9 - 8 - 2 0 1 6 Ċ Ġ* ĠDescription ... Ċ Ġ*/ Ċ class ĠS co uting Gro ep Controller Ġ: ĠRe cre atable , ĠIntent Cre atable , ĠMap Item Up datable < ArrayList < S co uting Gro ep Info >>, ĠCallback < ArrayList < S co uting Gro ep Info >> Ġ{ ĊĊĠĠĠ Ġvar Ġcluster Manager : ĠCluster Manager Interface ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprotected Ġset ĊĊĊĠĠĠ Ġinternal Ġvar Ġbuffer : ĠArrayList < S co uting Gro ep Info >? Ġ= ĠArrayList () ĊĊĠĠĠ Ġoverride Ġfun Ġon Intent Create ( bundle : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( bundle . containsKey ( B UNDLE _ ID )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Buffer : ĠArrayList < S co uting Gro ep Info > Ġ= Ġbundle . get Parcelable ArrayList ( B UNDLE _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer Ġ= Ġlocal Buffer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cluster Manager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcluster Manager !!. add Items ( local Buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcluster Manager !!. cluster () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState ?. containsKey ( B UNDLE _ ID ) Ġ== true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠsavedInstanceState . get Parcelable ArrayList < S co uting Gro ep Info >( B UNDLE _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( items Ġ!= Ġnull Ġ&& Ġ! items . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cluster Manager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcluster Manager !!. add Items ( items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcluster Manager !!. cluster () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer Ġ= Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( save InstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cluster Manager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġcluster Manager !!. items ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( items Ġis ĠArrayList <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave InstanceState ?. put Parcelable ArrayList ( B UNDLE _ ID , Ġitems Ġas ĠArrayList < S co uting Gro ep Info ?> ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave InstanceState ?. put Parcelable ArrayList ( B UNDLE _ ID , ĠArrayList ( items )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Map Ready ( j oti Map : ĠI J oti Map ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( j oti Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGoogle J oti Map Ġ-> Ġcluster Manager Ġ= ĠS co uting Gro ep ClusterManager ( J app . instance !! , Ġj oti Map ?. google Map !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠO sm J oti Map Ġ-> Ġcluster Manager Ġ= ĠO sm S co uting Gro ep ClusterManager ( j oti Map ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcluster Manager Ġ= ĠNone ClusterManager () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġl Buffer Ġ= Ġbuffer ĊĠĠĠĠĠĠĠ Ġif Ġ( l Buffer Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcluster Manager !!. add Items ( l Buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcluster Manager !!. cluster () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < ArrayList < S co uting Gro ep Info >>, Ġresponse : ĠResponse < ArrayList < S co uting Gro ep Info >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( response . code () Ġ== Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cluster Manager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cluster Manager !!. items . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body ()?. also Ġ{ Ġcluster Manager !!. add Items ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcluster Manager !!. clear Items () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body ()?. also Ġ{ Ġcluster Manager !!. add Items ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Data . save Object As Json In Background ( response . body (), ĠSTORAGE _ ID ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < ArrayList < S co uting Gro ep Info >>, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġt . toString (), Ġt ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( mode : ĠString , Ġcallback : ĠCallback < ArrayList < S co uting Gro ep Info >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapi Ġ= ĠJ app . get Api ( S co uting Gro ep Api :: class . java ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap Item Up datable . MODE _ ALL Ġ-> Ġapi . getAll ( J app Preferences . account Key ). enqueue ( callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap Item Up datable . MODE _ LATE ST Ġ-> Ġapi . getAll ( J app Preferences . account Key ). enqueue ( callback ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonUpdate Inv oked () Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate ( Map Item Up datable . MODE _ ALL , Ġthis ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonUpdate Message ( info : ĠUpdate Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcall : ĠCall < ArrayList < S co uting Gro ep Info >> ? ĊĠĠĠĠĠĠĠ Ġwhen Ġ( info . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Info . ACTION _ NEW Ġ-> Ġupdate ( Map Item Up datable . MODE _ ALL , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Info . ACTION _ UPDATE Ġ-> Ġupdate ( Map Item Up datable . MODE _ ALL , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= Ġ" S co uting Gro ep Controller " ĊĊĠĠĠĠĠĠĠ Ġval ĠSTORAGE _ ID Ġ= Ġ" SC " ĊĊĠĠĠĠĠĠĠ Ġval ĠB UNDLE _ ID Ġ= Ġ" SC " ĊĊĠĠĠĠĠĠĠ Ġfun Ġload And Put To Bundle ( bundle : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠApp Data . getObject < ArrayList < S co uting Gro ep Info >>( STORAGE _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠType Token < ArrayList < S co uting Gro ep Info >>() Ġ{} . type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list Ġ!= Ġnull Ġ&& Ġlist . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . put Parcelable ArrayList ( B UNDLE _ ID , Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ