package Ġorg . apache . fin er act . couch base Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log . e Ċ import Ġcom . couch base . lite .* Ċ import Ġorg . apache . fin er act . injection . ApplicationContext Ċ import Ġorg . apache . fin er act . utils . Constants . DATABASE _ NAME Ċ import Ġjavax . inject . Inject ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠA hm ad ĠJ aw id ĠMu ham m adi Ġon Ġ 6 / 8 / 2 0 . Ċ Ġ*/ Ċ Ċ class ĠSynchron ization Manager Ġ@ Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ@ ApplicationContext Ġval Ġcontext : ĠContext Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠSynchron ization Manager :: class . java . simple Name ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġdatabase : ĠCouch base Database ĊĊĠĠĠ Ġfun Ġclose Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . close Database ForUser () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Throws ( C ouch base Lite Exception :: class ) ĊĠĠĠ Ġfun Ġ< T > Ġsave Document ( identifier : ĠString , Ġproperties : ĠMap < String , ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠMutable Document ( identifier , Ġproperties ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe ( TAG , Ġ" Document : Ġ$ document ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . get Database (). save ( document ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Document ( identifier : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . get Database (). purge ( identifier ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T > Ġupdate Document ( identifier : ĠString , Ġproperties : ĠMap < String , ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠMutable Document ( identifier , Ġproperties ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . get Database (). save ( document ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Documents ( expression : ĠExpression , Ġlimit : ĠInt Ġ= Ġ 5 0 , Ġoffset : ĠInt Ġ= Ġ 0 ): ĠList < HashMap < String , ĠAny >> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġarray ListOf < HashMap < String , ĠAny >>() ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠQuery Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( Select Result . all ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( DataSource . database ( database . get Database ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( expression ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy ( Ordering . expression ( Meta . id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. limit ( Expression . intValue ( limit ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExpression . intValue ( offset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval ĠresultSet Ġ= Ġquery . execute () ĊĠĠĠĠĠĠĠ Ġvar Ġresult : ĠResult ? Ġ= ĠresultSet . next () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Map Ġ= Ġresult . get Dictionary ( DATABASE _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġvalue Map ?. toMap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( item Ġas ĠHashMap < String , ĠAny >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠresultSet . next () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġget Document For Test ( identifier : ĠString , Ġcontext : ĠContext ): ĠHashMap < String , ĠAny > Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase Ġ= ĠCouch base Database ( context ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Document ById ( identifier ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Document ById ( identifier : ĠString ): ĠHashMap < String , ĠAny > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠQuery Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( Select Result . all ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( DataSource . database ( database . get Database ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( Meta . id . equalTo ( Expression . string ( identifier )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. limit ( Expression . intValue ( 1 )) ĊĊĠĠĠĠĠĠĠ Ġval ĠresultSet Ġ= Ġquery . execute (). next () ĊĠĠĠĠĠĠĠ Ġreturn ĠresultSet . get Dictionary ( DATABASE _ NAME )?. toMap () Ġas ĠHashMap < String , ĠAny > ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġclear Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠQuery Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( Select Result . all ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( DataSource . database ( database . get Database ())) ĊĊĠĠĠĠĠĠĠ Ġval ĠresultSet Ġ= Ġquery . execute () ĊĠĠĠĠĠĠĠ Ġvar Ġresult : ĠResult ? Ġ= ĠresultSet . next () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Map Ġ= Ġresult . get Dictionary ( DATABASE _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" implement Ġcode Ġhere Ġto Ġdelete Ġitem ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠresultSet . next () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }