/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 6 Ġy vol k Ġ( Y uri ĠVol kov ), Ġhttp :// y ur iv olk ov . com Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġorg . and status . app . note Ċ Ċ import Ġorg . and status . app . context . My Context Ċ import Ġorg . and status . app . data . Projection Map Ċ import Ġorg . and status . app . database . table . Note Table Ċ import Ġorg . and status . app . net . social . Actor Ċ import Ġorg . and status . app . origin . Origin Ċ import Ġorg . and status . app . timeline . meta . Timeline Type Ċ import Ġorg . and status . app . util . My Log Ċ Ċ /** Ċ Ġ* Ġ@ author Ġy vol k @ y ur iv olk ov . com Ċ Ġ*/ Ċ class ĠRecursive Conversation Loader ( empty Item : ĠCon versation View Item , Ġmy Context : ĠMy Context , Ġorigin : ĠOrigin , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Note Id : ĠLong , Ġsync With Internet : ĠBoolean ) Ġ: ĊĠĠĠĠĠĠĠ ĠCon versation Loader ( empty Item , Ġmy Context , Ġorigin , Ġselected Note Id , Ġsync With Internet ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġload 2 ( non Loaded : ĠCon versation View Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Previous Notes Re cursively ( non Loaded ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcache Conversation ( item : ĠCon versation View Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( conversation Ids . contains ( item . conversation Id ) Ġ|| Ġitem . conversation Id Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( conversation Ids . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfix Conversation Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . d ( this , Ġ" Another Ġconversation Id :$ item ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconversation Ids . add ( item . conversation Id ) ĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġ( Projection Map . NOTE _ TABLE _ ALIAS Ġ+ Ġ"." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠNote Table . CONVER S ATION _ ID Ġ+ Ġ"=" Ġ+ Ġitem . conversation Id ) ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġmy Context . time lines [ Timeline Type . E VERY TH ING , ĠActor . EMPTY , Ġma . origin ]. get Uri () ĊĠĠĠĠĠĠĠ Ġmy Context . context . content Resolver . query ( uri , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . get Projection (). to Typed Array (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection , Ġnull , Ġnull ). use Ġ{ Ġcursor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor Ġ!= Ġnull Ġ&& Ġcursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Loaded Ġ= Ġitem . from Cursor ( my Context , Ġcursor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcached Conversation Items [ item Loaded . get Note Id ()] Ġ= Ġitem Loaded ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Previous Notes Re cursively ( item In : ĠCon versation View Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! add Note Id To Find ( item In . get Note Id ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġload Item From Database ( item In ) ĊĠĠĠĠĠĠĠ Ġfind Rep lies Re cursively ( item ) ĊĠĠĠĠĠĠĠ ĠMy Log . v ( this ) Ġ{ Ġ" find Previous Notes Re cursively Ġid =" Ġ+ Ġitem . get Note Id () Ġ+ Ġ" Ġreplies :" Ġ+ Ġitem . n Rep lies Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( item . is Loaded ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( addItem ToList ( item ) Ġ&& Ġitem . in Reply To Note Id Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Previous Notes Re cursively ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetItem ( item . in Reply To Note Id , Ġitem . conversation Id , Ġitem . reply Level Ġ- Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( m Allow Loading From Internet ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload From Internet ( item . get Note Id ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Rep lies Re cursively ( item : ĠCon versation View Item ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMy Log . v ( this ) Ġ{ Ġ" find Rep lies Ġfor Ġid =" Ġ+ Ġitem . get Note Id () Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( reply Ġin Ġcached Conversation Items . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reply . in Reply To Note Id Ġ== Ġitem . get Note Id ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . n Rep lies ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreply . reply Level Ġ= Ġitem . reply Level Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Previous Notes Re cursively ( reply ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ