package Ġcom . cur i ol abs . j us audio . repository Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . cur i ol abs . j us audio . content _ providers . J us Aud ios Content Provider Ċ import Ġcom . cur i ol abs . j us audio . persistence . J us Audio Database Ċ import Ġcom . cur i ol abs . j us audio . persistence . entities . J us Aud ios Ċ import Ġcom . cur i ol abs . j us audio . utility _ classes . J us Audio Constants . QUERY _ LIMIT Ċ import Ġcom . cur i ol abs . j us audio . utility _ classes . J us Audio Constants . SEARCH _ QUERY _ TXT _ MIN _ LENGTH ĊĊ Ċ private Ġconst Ġval ĠLOG _ TAG Ġ= Ġ" Audio Data Repository " Ċ Ċ class ĠAudio Data Repository ( ĊĠĠĠ Ġprivate Ġval Ġj us Audio Content Provider : ĠJ us Aud ios Content Provider , ĊĠĠĠ Ġprivate Ġval Ġj us Audio Database : ĠJ us Audio Database Ċ ) Ġ{ ĊĊĠĠĠ Ġ// cache ĊĠĠĠ Ġprivate Ġval Ġmy Collection Cache Ġ= ĠArrayList < J us Aud ios >() ĊĠĠĠ Ġprivate Ġval Ġrecommended Aud ios Cache Ġ= ĠArrayList < J us Aud ios >() ĊĊĠĠĠ Ġ/ ******** * Ġgetters Ġ********* / ĊĠĠĠ Ġfun Ġfind Audio ( search Query : ĠString , Ġoffset : ĠInt Ġ= Ġ 0 ): ĠArrayList < J us Aud ios > Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ" find Audio () Ġcalled ") ĊĠĠĠĠĠĠĠ Ġvar Ġfound Aud ios Ġ= ĠArrayList < J us Aud ios >() ĊĠĠĠĠĠĠĠ Ġif Ġ( search Query . trim (). length Ġ> ĠSEARCH _ QUERY _ TXT _ MIN _ LENGTH ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Results Ġ= Ġj us Audio Database . j us Aud ios F ts Dao () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Audio ( search Query Ġ= Ġ"* ${ search Query } *", Ġoffset Ġ= Ġoffset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfound Aud ios . addAll ( local Results ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( found Aud ios . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// fetch Ġfrom Ġserver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ" fetch ing Ġfrom Ġserver ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Aud ios Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj us Audio Content Provider . search Audio ( query Ġ= Ġsearch Query , Ġoffset Ġ= Ġoffset ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( found Aud ios . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj us Audio Database . j us Aud ios Dao () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. insert Aud ios ( found Aud ios ) Ġ Ġ// add Ġto Ġlocal Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfound Aud ios ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Recommended Aud ios ( offset : ĠInt Ġ= Ġ 0 ): ĠArrayList < J us Aud ios >? Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ" get Recommended Aud ios () Ġcalled ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( recommended Aud ios Cache . size Ġ<= Ġoffset ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ" fetch ing Ġfrom Ġlocal Ġdb ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecommended Aud ios Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj us Audio Database . j us Aud ios Dao (). get Recommend ations ( offset Ġ= Ġoffset ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( recommended Aud ios . isNotEmpty ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecommended Aud ios Cache . addAll ( recommended Aud ios ) Ġ// add Ġto Ġcache ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ" fetch ing Ġfrom Ġserver ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// poll Ġthe Ġserver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecommended Aud ios From Server Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj us Audio Content Provider . get Recommend ations ( offset Ġ= Ġoffset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( recommended Aud ios From Server . isNotEmpty ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ" found Ġin Ġserver ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj us Audio Database . j us Aud ios Dao () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. insert Aud ios ( recommended Aud ios From Server ) Ġ Ġ// add Ġto Ġlocal Ġdatabase ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecommended Aud ios Cache . addAll ( recommended Aud ios From Server ) Ġ// add Ġto Ġcache ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġrecommended Aud ios Cache ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget My Collection ( offset : ĠInt Ġ= Ġ 0 , Ġlimit Ġ: ĠInt Ġ= ĠQUERY _ LIMIT ): ĠArrayList < J us Aud ios >? Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ" get My Collection () Ġcalled Ġoffset Ġ$ offset ") ĊĠĠĠĠĠĠĠ Ġif Ġ( my Collection Cache . size Ġ<= Ġoffset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaud ios List Ġ= Ġj us Audio Database . j us Aud ios Dao (). get My Collection ( offset Ġ= Ġoffset , Ġlimit Ġ= Ġlimit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( aud ios List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ" found Ġin Ġlocal Ġdb Ġ" Ġ+ Ġaud ios List . size . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Collection Cache . addAll ( aud ios List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ" get My Collection () Ġreturned Ġcache Ġsize Ġ" Ġ+ Ġmy Collection Cache . size . toString ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġmy Collection Cache ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/ ******** Ġset ters Ġ********* ****/ ĊĠĠĠ Ġfun Ġupdate Audio ( og Audio : ĠJ us Aud ios , Ġmodified Audio : ĠJ us Aud ios ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ" update Audio () Ġ${ modified Audio . audio Title }") ĊĠĠĠĠĠĠĠ Ġval Ġpos In Collection Ġ= Ġmy Collection Cache . indexOf ( og Audio ) ĊĠĠĠĠĠĠĠ Ġif Ġ( pos In Collection Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Collection Cache . remove At ( pos In Collection ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( modified Audio . audio IsIn My Collection ) Ġmy Collection Cache . add ( modified Audio ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpos In Recommend ations Ġ= Ġrecommended Aud ios Cache . indexOf ( og Audio ) ĊĠĠĠĠĠĠĠ Ġif Ġ( pos In Recommend ations Ġ>= Ġ 0 ) Ġrecommended Aud ios Cache [ pos In Recommend ations ] Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Audio ĊĊĊĠĠĠĠĠĠĠ Ġj us Audio Database . j us Aud ios Dao (). update Audio ( modified Audio ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/ ******** **** Ġde letions Ġ********* ***/ ĊĠĠĠ Ġfun Ġclear My Collection () Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Collection Cache . clear () ĊĠĠĠĠĠĠĠ Ġj us Audio Database . j us Aud ios Dao (). clear My Collection () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Recommend ations () Ġ{ ĊĠĠĠĠĠĠĠ Ġrecommended Aud ios Cache . clear () ĊĠĠĠĠĠĠĠ Ġj us Audio Database . j us Aud ios Dao (). clear Recommend ations () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear F avorites () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( audio Ġin Ġmy Collection Cache ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( audio . audio Is Favorite ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Collection Cache . remove At ( my Collection Cache . indexOf ( audio )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio . audio Is Favorite Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Collection Cache . add ( audio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġj us Audio Database . j us Aud ios Dao (). clear F avorites () ĊĠĠĠ Ġ} ĊĊ Ċ }