package Ġorg . sage b ion etwork s . research . s ag ere search . dao . room Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . room . Dao Ċ import Ġandroidx . room . Insert Ċ import Ġandroidx . room . On Conflict Strategy Ċ import Ġandroidx . room . Query Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġio . reactivex . Flow able Ċ import Ġorg . th reet en . bp . Instant Ċ import Ġorg . th reet en . bp . LocalDateTime Ċ Ċ // Ċ // Ġ ĠCopyright ĠÂ© Ġ 2 0 1 8 ĠS age ĠB ion etwork s . ĠAll Ġrights Ġreserved . Ċ // Ċ // ĠRedistribution Ġand Ġuse Ġin Ġsource Ġand Ġbinary Ġforms , Ġwith Ġor Ġwithout Ġmodification , Ċ // Ġare Ġpermitted Ġprovided Ġthat Ġthe Ġfollowing Ġconditions Ġare Ġmet : Ċ // Ċ // Ġ 1 . Ġ ĠRedistributions Ġof Ġsource Ġcode Ġmust Ġretain Ġthe Ġabove Ġcopyright Ġnotice , Ġthis Ċ // Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer . Ċ // Ċ // Ġ 2 . Ġ ĠRedistributions Ġin Ġbinary Ġform Ġmust Ġreproduce Ġthe Ġabove Ġcopyright Ġnotice , Ċ // Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer Ġin Ġthe Ġdocumentation Ġand / or Ċ // Ġother Ġmaterials Ġprovided Ġwith Ġthe Ġdistribution . Ċ // Ċ // Ġ 3 . Ġ ĠNeither Ġthe Ġname Ġof Ġthe Ġcopyright Ġholder ( s ) Ġnor Ġthe Ġnames Ġof Ġany Ġcontributors Ċ // Ġmay Ġbe Ġused Ġto Ġendorse Ġor Ġpromote Ġproducts Ġderived Ġfrom Ġthis Ġsoftware Ġwithout Ċ // Ġspecific Ġprior Ġwritten Ġpermission . ĠNo Ġlicense Ġis Ġgranted Ġto Ġthe Ġtrade marks Ġof Ċ // Ġthe Ġcopyright Ġhold ers Ġeven Ġif Ġsuch Ġmarks Ġare Ġincluded Ġin Ġthis Ġsoftware . Ċ // Ċ // ĠTHIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ġ" AS ĠIS " Ċ // ĠAND ĠANY ĠEXPRESS ĠOR ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠTHE Ċ // ĠIMPLIED ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE Ċ // ĠARE ĠDISCLAIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT ĠOWNER ĠOR ĠCONTRIBUTORS ĠBE ĠLIABLE Ċ // ĠFOR ĠANY ĠDIRECT , ĠINDIRECT , ĠINCIDENTAL , ĠSPECIAL , ĠEXEMPLARY , ĠOR ĠCONSEQUENTIAL Ċ // ĠDAMAGES Ġ( INCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF ĠSUBSTITUTE ĠGOODS ĠOR Ċ // ĠSERVICES ; ĠLOSS ĠOF ĠUSE , ĠDATA , ĠOR ĠPROFITS ; ĠOR ĠBUSINESS ĠINTERRUPTION ) ĠHOWEVER Ċ // ĠCAUSED ĠAND ĠON ĠANY ĠTHEORY ĠOF ĠLIABILITY , ĠWHETHER ĠIN ĠCONTRACT , ĠSTRICT ĠLIABILITY , Ċ // ĠOR ĠTORT Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE ĠUSE Ċ // ĠOF ĠTHIS ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . Ċ // Ċ Ċ /** Ċ Ġ* ĠAll Ġinteractions Ġwith Ġthe ĠScheduled Activity Entity Ġtable Ġwill Ġbe Ġdone Ġthrough Ġthis Ġinterface . Ċ Ġ* ĠRoom Ġauto - gener ates Ġthe Ġimplementations Ġof Ġthese Ġmethods Ġas Ġwell Ġas Ġchecks Ġthe Ġsyntax Ġof Ġthe ĠSQL Ġstatements Ċ Ġ* ĠThis Ġclass Ġis Ġdesigned Ġto Ġwork Ġ@ see ĠSchedule ViewModel Ġusing ĠLive Data ĠDB Ġreturns Ċ Ġ* ĠTODO : Ġm de ph illi ps Ġ 8 / 2 0 / 1 8 Ġcreate Ġthe Ġrest Ġof Ġthe Ġqueries Ġin ĠiOS Ġcode Ġrepo Ġfile Ġ' S BB Scheduled Activity + Filters ' Ċ Ġ* ĠTODO : Ġ@ li uj osh ua Ġ 2 0 1 8 / 1 0 / 0 5 Ġfor Ġqueries Ġthat Ġshould Ġreturn Ġzero Ġor Ġone Ġvalues , Ġinstead Ġof Ġa Ġcollection , Ċ Ġ* ĠĠĠĠĠ Ġreturn Ġa Ġ@ Nullable ĠSchedule Activity Entity , ĠOptional < Schedule Activity Entity >, ĠMaybe < Schedule Activity Entity > Ċ Ġ*/ Ċ @ Dao Ċ interface ĠScheduled Activity Entity Dao Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġall Ġthe Ġscheduled Ġactivities Ġfrom Ġthe Ġtable ĊĠĠĠĠ Ġ* ĠThis Ġmay Ġtake Ġa Ġlong Ġtime Ġand Ġuse Ġa Ġlot Ġof Ġmemory Ġif Ġthe Ġtable Ġis Ġlarge , Ġcall Ġwith Ġca ution ĊĠĠĠĠ Ġ* Ġ@ return Ġall Ġthe Ġscheduled Ġactivities Ġin Ġthe Ġtable ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ QUERY _ ALL ) ĊĠĠĠ Ġfun Ġall (): ĠLive Data < List < Scheduled Activity Entity >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġguid Ġto Ġquery Ġon ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġscheduled Ġactivity Ġfrom Ġthe Ġtable Ġwith Ġthe Ġspecified Ġguid ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ QUERY _ SELECT _ GUID ) ĊĠĠĠ Ġfun Ġactivity ( guid : ĠString ): ĠList < Scheduled Activity Entity > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġall Ġthe Ġscheduled Ġactivities Ġthat Ġhave Ġone Ġof Ġthe Ġidentifiers Ġspecified Ġin Ġthe Ġtask Ġgroup ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity Group Ġa Ġset Ġof Ġidentifiers Ġto Ġuse Ġas Ġa Ġfilter Ġfor Ġscheduled Ġitems ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġlist Ġof Ġscheduled Ġactivities ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ QUERY _ SELECT _ ACTIVITY _ GROUP ) ĊĠĠĠ Ġfun Ġactivity Group ( activity Group : ĠSet < String >): ĠLive Data < List < Scheduled Activity Entity >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġall Ġthe Ġscheduled Ġactivities Ġthat Ġhave Ġone Ġof Ġthe Ġidentifiers Ġspecified Ġin Ġthe Ġtask Ġgroup ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity Group Ġa Ġset Ġof Ġidentifiers Ġto Ġuse Ġas Ġa Ġfilter Ġfor Ġscheduled Ġitems ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġlist Ġof Ġscheduled Ġactivities ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ QUERY _ SELECT _ ACTIVITY _ GROUP ) ĊĠĠĠ Ġfun Ġactivity Group Flow able ( activity Group : ĠSet < String >): ĠFlow able < List < Scheduled Activity Entity >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġall Ġthe Ġscheduled Ġactivities Ġthat Ġare Ġscheduled Ġduring Ġand Ġnot Ġexpired Ġyet Ġduring Ġthis Ġdate ĊĠĠĠĠ Ġ* Ġ@ param Ġdate Ġto Ġfilter Ġthe Ġscheduled Ġactivities ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġlist Ġof Ġscheduled Ġactivities ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ QUERY _ SELECT _ AVAILABLE _ DATE ) ĊĠĠĠ Ġfun Ġavailable On ( date : ĠLocalDateTime ): ĠLive Data < List < Scheduled Activity Entity >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġall Ġthe Ġscheduled Ġactivities Ġthat Ġare Ġavailable Ġ( not Ġfinished Ġyet ) Ġand Ġavailable Ġschedule - wise Ġat Ġthis Ġdate ĊĠĠĠĠ Ġ* Ġ@ param Ġdate Ġto Ġfilter Ġthe Ġscheduled Ġactivities ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġlist Ġof Ġscheduled Ġactivities ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ QUERY _ SELECT _ NOT _ FINISHED _ AVAILABLE _ DATE ) ĊĠĠĠ Ġfun Ġun finished Available On ( date : ĠLocalDateTime ): ĠLive Data < List < Scheduled Activity Entity >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġall Ġthe Ġscheduled Ġactivities Ġthat Ġare Ġavailable Ġschedule - wise Ġat Ġthis Ġdate Ġand Ġare Ġin Ġthis Ġtask Ġgroup ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity Group Ġto Ġfilter Ġthe Ġscheduled Ġactivities ĊĠĠĠĠ Ġ* Ġ@ param Ġdate Ġto Ġfilter Ġthe Ġscheduled Ġactivities ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġlist Ġof Ġscheduled Ġactivities ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ QUERY _ SELECT _ ACTIVITY _ GROUP _ AVAILABLE _ DATE ) ĊĠĠĠ Ġfun Ġactivity Group Available On ( activity Group : ĠSet < String >, Ġdate : ĠLocalDateTime ): ĠLive Data < List < Scheduled Activity Entity >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġall Ġthe Ġscheduled Ġactivities Ġthat Ġare Ġavailable Ġschedule - wise Ġbetween Ġthese Ġdates Ġand Ġare Ġin Ġthis Ġgroup ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity Group Ġto Ġfilter Ġthe Ġscheduled Ġactivities ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Ġto Ġfilter Ġthe Ġscheduled Ġactivities ĊĠĠĠĠ Ġ* Ġ@ param Ġend Ġto Ġfilter Ġthe Ġscheduled Ġactivities ĊĠĠĠĠ Ġ* Ġ@ param Ġfinished Start Ġstart Ġof Ġthe Ġfinished Ġon Ġbounds Ġ( usually Ġthe Ġsame Ġas Ġstart Ġbut Ġan ĠInstant ) ĊĠĠĠĠ Ġ* Ġ@ param Ġfinished End Ġend Ġof Ġthe Ġfinished Ġon Ġbounds Ġ( usually Ġthe Ġsame Ġas Ġend Ġbut Ġan ĠInstant ) ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġlist Ġof Ġscheduled Ġactivities ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ QUERY _ SELECT _ ACTIVITY _ GROUP _ B ETWEEN _ DATE _ UN FINISHED _ OR _ FINISHED _ B ETWEEN ) ĊĠĠĠ Ġfun Ġactivity Group Available Between ( activity Group : ĠSet < String >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart : ĠLocalDateTime , Ġend : ĠLocalDateTime , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinished Start : ĠInstant , Ġfinished End : ĠInstant ): ĠLive Data < List < Scheduled Activity Entity >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġall Ġthe Ġscheduled Ġactivities Ġthat Ġwere Ġfinished Ġbetween Ġthe Ġtwo Ġdates ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity Group Ġto Ġfilter Ġthe Ġscheduled Ġactivities ĊĠĠĠĠ Ġ* Ġ@ param Ġfinished Start Ġof Ġthe Ġbounds Ġwhere Ġactivity Ġwas Ġfinished ĊĠĠĠĠ Ġ* Ġ@ param Ġfinished End Ġof Ġthe Ġbounds Ġwhere Ġactivity Ġwas Ġfinished ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġlist Ġof Ġscheduled Ġactivities ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ QUERY _ ACTIVITY _ GROUP _ FINISHED _ B ETWEEN ) ĊĠĠĠ Ġfun Ġactivity Group Finished Between ( activity Group : ĠSet < String >, Ġfinished Start : ĠInstant , Ġfinished End : ĠInstant ): ĠLive Data < List < Scheduled Activity Entity >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġall Ġthe Ġscheduled Ġactivities Ġthat Ġwere Ġfinished Ġbetween Ġthe Ġtwo Ġdates ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity Group Ġthat Ġwill Ġbe Ġexcluded Ġfrom Ġresults ĊĠĠĠĠ Ġ* Ġ@ param Ġfinished Start Ġof Ġthe Ġbounds Ġwhere Ġactivity Ġwas Ġfinished ĊĠĠĠĠ Ġ* Ġ@ param Ġfinished End Ġof Ġthe Ġbounds Ġwhere Ġactivity Ġwas Ġfinished ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġlist Ġof Ġscheduled Ġactivities ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ QUERY _ EXCL UDE _ ACTIVITY _ GROUP _ FINISHED _ B ETWEEN ) ĊĠĠĠ Ġfun Ġexclude Activity Group Finished Between ( activity Group : ĠSet < String >, Ġfinished Start : ĠInstant , Ġfinished End : ĠInstant ): ĠLive Data < List < Scheduled Activity Entity >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġall Ġthe Ġscheduled Ġactivities Ġthat Ġare Ġsur veys Ġthat Ġdo Ġnot Ġhave Ġidentifiers Ġin Ġthe Ġsurvey Ġgroup ĊĠĠĠĠ Ġ* Ġ@ param Ġsurvey Group Ġthat Ġwill Ġbe Ġexcluded Ġfrom Ġresults , Ġand Ġresults Ġwill Ġonly Ġbe Ġsur veys ĊĠĠĠĠ Ġ* Ġ@ param Ġdate Ġto Ġfilter Ġthe Ġscheduled Ġactivities ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġlist Ġof Ġscheduled Ġactivities ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ QUERY _ EXCL UDE _ SUR VE Y _ GROUP _ UN FINISHED _ AVAILABLE _ DATE ) ĊĠĠĠ Ġfun Ġexclude Survey Group Un finished Available On ( survey Group : ĠSet < String >, Ġdate : ĠLocalDateTime ): ĠLive Data < List < Scheduled Activity Entity >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġmost Ġrecently Ġfinished Ġactivity Ġin Ġthe Ġactivity Ġgroup ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity Group Ġthat Ġwill Ġbe Ġincluded Ġin Ġresults ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġmost Ġrecently Ġfinished Ġschedule Ġthat Ġmatches Ġthe Ġquery ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ MO ST _ REC ENT _ FINISHED _ ACTIVITY ) ĊĠĠĠ Ġfun Ġmost Recent Finished Activity ( activity Group : ĠSet < String >): ĠLive Data < List < Scheduled Activity Entity >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġthe Ġoldest Ġactivity Ġfrom Ġthe Ġgroup Ġof Ġactivities Ġwithin Ġthe Ġset Ġof Ġactivity Ġidentifiers ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity Group Ġthat Ġwill Ġbe Ġincluded Ġin Ġresults ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġoldest Ġschedule Ġthat Ġmatches Ġthe Ġquery ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ OL DEST _ ACTIVITY ) ĊĠĠĠ Ġfun Ġoldest Activity ( activity Group : ĠSet < String >): ĠLive Data < List < Scheduled Activity Entity >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġall Ġthe Ġactivities Ġwhere Ġactivity . needs Sync ed To Bridge Ġis Ġtrue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ ACTIV ITIES _ THAT _ NEED _ SYNC ED ) ĊĠĠĠ Ġfun Ġactivities That Need Sync ed To Bridge (): ĠList < Scheduled Activity Entity > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġroom Scheduled Activity List Ġto Ġinsert Ġinto Ġthe Ġdatabase ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Insert ( on Conflict Ġ= ĠOn Conflict Strategy . REPLACE ) ĊĠĠĠ Ġfun Ġupsert ( room Scheduled Activity List : ĠList < Scheduled Activity Entity >) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDeletes Ġall Ġrows Ġin Ġthe Ġtable . Ġ ĠTo Ġbe Ġcalled Ġon Ġsign Ġout Ġor Ġa Ġcache Ġclear . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query ( Room Sql . SCHED ULE _ DELETE ) ĊĠĠĠ Ġfun Ġclear () Ċ }