package Ġdev . kos rat . mus lim data . database Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room .* Ċ import Ġdev . kos rat . mus lim data . database . tables . City Table Ċ import Ġdev . kos rat . mus lim data . database . tables . Country Table Ċ import Ġdev . kos rat . mus lim data . database . tables . Name Table Ċ import Ġdev . kos rat . mus lim data . database . tables . Name Translation Table Ċ import Ġdev . kos rat . mus lim data . database . tables . az k ars .* Ċ import Ġdev . kos rat . mus lim data . database . tables . pr ay ert imes . Fixed Pr ayer Time Ċ import Ġdev . kos rat . mus lim data . models .* Ċ Ċ /** Ċ Ġ* ĠData Ġaccess Ġobject Ġinterface Ġclass Ġfor ĠM us lim Data Ġdatabase Ġthat Ġholds Ġqueries Ġwhich Ġis Ċ Ġ* Ġautomatically Ġwill Ġbe Ġused Ġin ĠAndroid ĠRoom Ġlibrary . Ċ Ġ*/ Ċ @ Dao Ċ internal Ġinterface ĠM us lim Data Dao Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSearch Ġfor Ġcities Ġin Ġthe Ġdatabase Ġthat Ġmatch Ġor Ġlike Ġthe Ġprovided Ġcity Ġname . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transaction ĊĠĠĠ Ġ@ Query ( ĊĠĠĠĠĠĠĠ Ġ" SELECT Ġcity . country _ code Ġas Ġcountry Code , Ġcountry _ name Ġas Ġcountry Name , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" city _ name Ġas Ġcity Name , Ġlatitude , Ġlongitude , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" has _ fixed _ pr ayer _ time ĠAS Ġhas Fixed Pr ayer Time Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FROM Ġcity Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INNER ĠJOIN Ġcountry Ġon Ġcity . country _ code Ġ= Ġcountry . country _ code Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" WHERE Ġcity _ name Ġlike Ġ: city " ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġsearch Location ( city : ĠString ): ĠList < Location >? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġlocation Ġinformation Ġbased Ġon Ġthe Ġprovided Ġcountry Ġcode Ġand Ġcity Ġname Ġin Ġthe Ġdatabase . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transaction ĊĠĠĠ Ġ@ Query ( ĊĠĠĠĠĠĠĠ Ġ" SELECT Ġcity . country _ code Ġas Ġcountry Code , Ġcountry _ name Ġas Ġcountry Name , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" city _ name Ġas Ġcity Name , Ġlatitude , Ġlongitude , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" has _ fixed _ pr ayer _ time ĠAS Ġhas Fixed Pr ayer Time Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FROM Ġcity Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INNER ĠJOIN Ġcountry Ġon Ġcity . country _ code Ġ= Ġcountry . country _ code Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" WHERE Ġcity . country _ code = Ġ: country Code Ġ ĠCOLLATE ĠNO CASE Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" and Ġcity _ name = Ġ: city ĠCOLLATE ĠNO CASE " ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġgeo coder ( country Code : ĠString , Ġcity : ĠString ): ĠLocation ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġlocation Ġinformation Ġbased Ġon Ġthe Ġprovided Ġlatitude Ġand Ġlongitude Ġin Ġthe Ġdatabase . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transaction ĊĠĠĠ Ġ@ Query ( ĊĠĠĠĠĠĠĠ Ġ" SELECT Ġcity . country _ code Ġas Ġcountry Code , Ġcountry _ name Ġas Ġcountry Name , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" city _ name Ġas Ġcity Name , Ġlatitude , Ġlongitude , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" has _ fixed _ pr ayer _ time ĠAS Ġhas Fixed Pr ayer Time Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FROM Ġcity Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INNER ĠJOIN Ġcountry Ġon Ġcity . country _ code Ġ= Ġcountry . country _ code Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ORDER ĠBY Ġabs ( latitude Ġ- Ġ: latitude ) Ġ+ Ġabs ( longitude Ġ- Ġ: longitude ) ĠLIMIT Ġ 1 " ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġreverse Geo coder ( latitude : ĠDouble , Ġlongitude : ĠDouble ): ĠLocation ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġpr ayer Ġtimes Ġfor Ġthe Ġspecified Ġuser 's Ġlocation Ġand Ġdate Ġin Ġthe Ġdatabase . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM Ġpr ayer _ time ĠWHERE Ġcity Ġ= Ġ: city ĠAND Ġcountry _ code Ġ= Ġ: country Code ĠAND Ġdate Ġ= Ġ: date ") ĊĠĠĠ Ġfun Ġget Pr ayer Times ( country Code : ĠString , Ġcity : ĠString , Ġdate : ĠString ): ĠFixed Pr ayer Time ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġnames Ġof Ġall ah Ġfrom Ġthe Ġdatabase Ġfor Ġthe Ġspecified Ġlanguage . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transaction ĊĠĠĠ Ġ@ Query ( ĊĠĠĠĠĠĠĠ Ġ" SELECT Ġname ._ id ĠAS Ġnumber , Ġname . name Ġ, Ġtr . name ĠAS Ġtranslation Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FROM Ġname Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INNER ĠJOIN Ġname _ translation Ġas Ġtr Ġon Ġtr . name _ id Ġ= Ġname ._ id Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" and Ġtr . language Ġ= Ġ: language " ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġget Names ( language : ĠString ): ĠList < Name Of All ah > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġaz kar Ġcategories Ġfrom Ġthe Ġdatabase Ġfor Ġthe Ġspecified Ġlanguage . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transaction ĊĠĠĠ Ġ@ Query ( ĊĠĠĠĠĠĠĠ Ġ" SELECT Ġcategory ._ id ĠAS Ġcategory Id , Ġcategory _ name ĠAS Ġcategory Name Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FROM Ġaz kar _ category ĠAS Ġcategory Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INNER ĠJOIN Ġaz kar _ category _ translation Ġas Ġtr Ġon Ġtr . category _ id Ġ= Ġcategory ._ id Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" WHERE Ġlanguage Ġ= Ġ: language " ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġget Az kar Categories ( language : ĠString ): ĠList < Az kar Category > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġaz kar Ġchapter s Ġfrom Ġthe Ġdatabase Ġfor Ġthe Ġspecified Ġlanguage Ġand Ġcategory Ġid . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transaction ĊĠĠĠ Ġ@ Query ( ĊĠĠĠĠĠĠĠ Ġ" SELECT Ġchapter ._ id ĠAS Ġchapter Id , Ġcategory _ id ĠAS Ġcategory Id , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" chapter _ name ĠAS Ġchapter Name Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FROM Ġaz kar _ chapter ĠAS Ġchapter Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INNER ĠJOIN Ġaz kar _ chapter _ translation Ġas Ġtr Ġon Ġtr . chapter _ id Ġ= Ġchapter ._ id Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" WHERE Ġlanguage Ġ= Ġ: language Ġand Ġ(: categoryId Ġ= Ġ- 1 ĠOR Ġcategory _ id Ġ= Ġ: categoryId )" ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġget Az kar Chapter s ( language : ĠString , Ġcategory Id : ĠInt ): ĠList < Az kar Chapter >? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġaz kar Ġchapter s Ġfrom Ġthe Ġdatabase Ġfor Ġthe Ġspecified Ġlanguage Ġand Ġchapter Ġids . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transaction ĊĠĠĠ Ġ@ Query ( ĊĠĠĠĠĠĠĠ Ġ" SELECT Ġchapter ._ id ĠAS Ġchapter Id , Ġcategory _ id ĠAS Ġcategory Id , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" chapter _ name ĠAS Ġchapter Name Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FROM Ġaz kar _ chapter ĠAS Ġchapter Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INNER ĠJOIN Ġaz kar _ chapter _ translation Ġas Ġtr Ġon Ġtr . chapter _ id Ġ= Ġchapter ._ id Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" WHERE Ġlanguage Ġ= Ġ: language Ġand Ġchapter ._ id Ġin Ġ(: az kar Ids )" ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġget Az kar Chapter s ( language : ĠString , Ġaz kar Ids : ĠArray < Int >): ĠList < Az kar Chapter >? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġaz kar Ġitems Ġfrom Ġthe Ġdatabase Ġfor Ġthe Ġspecified Ġchapter Ġid Ġand Ġlanguage . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transaction ĊĠĠĠ Ġ@ Query ( ĊĠĠĠĠĠĠĠ Ġ" SELECT Ġitem ._ id ĠAS ĠitemId , Ġitem . chapter _ id ĠAS Ġchapter Id , Ġtr . language , Ġitem . item , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tr . item _ translation ĠAS Ġtranslation , Ġr tr . reference Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FROM Ġaz kar _ item Ġas Ġitem Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INNER ĠJOIN Ġaz kar _ item _ translation ĠAS Ġtr ĠON Ġtr . item _ id Ġ= Ġitem ._ id Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INNER ĠJOIN Ġaz kar _ reference ĠAS Ġref ĠON Ġref . item _ id Ġ= Ġitem ._ id Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INNER ĠJOIN Ġaz kar _ reference _ translation ĠAS Ġr tr ĠON Ġr tr . reference _ id Ġ= Ġref ._ id ĠAND Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" r tr . language Ġ= Ġtr . language Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" WHERE Ġchapter Id Ġ= Ġ: chapter Id ĠAND Ġtr . language Ġ= Ġ: language " ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġget Az kar Items ( chapter Id : ĠInt , Ġlanguage : ĠString ): ĠList < Az kar Item >? Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate ĠRoom Ġdatabase Ġinstance Ġfrom Ġasset Ġ( prepared Ġdatabase ). Ċ Ġ*/ Ċ @ Database ( ĊĠĠĠ Ġentities Ġ= Ġ[ ĊĠĠĠĠĠĠĠ ĠCountry Table :: class , ĊĠĠĠĠĠĠĠ ĠCity Table :: class , ĊĠĠĠĠĠĠĠ ĠFixed Pr ayer Time :: class , ĊĠĠĠĠĠĠĠ ĠName Table :: class , ĊĠĠĠĠĠĠĠ ĠName Translation Table :: class , ĊĠĠĠĠĠĠĠ ĠA zk ar Category Table :: class , ĊĠĠĠĠĠĠĠ ĠA zk ar Category Translation Table :: class , ĊĠĠĠĠĠĠĠ ĠA zk ar Chapter Table :: class , ĊĠĠĠĠĠĠĠ ĠA zk ar Chapter Translation Table :: class , ĊĠĠĠĠĠĠĠ ĠA zk ar Item Table :: class , ĊĠĠĠĠĠĠĠ ĠA zk ar Item Translation Table :: class , ĊĠĠĠĠĠĠĠ ĠA zk ar Reference Table :: class , ĊĠĠĠĠĠĠĠ ĠA zk ar Reference Translation Table :: class ĊĠĠĠ Ġ], ĊĠĠĠ Ġversion Ġ= Ġ 1 Ċ ) Ċ abstract Ġclass ĠM us lim Data Database Ġ: ĠRoom Database () Ġ{ ĊĠĠĠ Ġinternal Ġabstract Ġval Ġmus lim Data Dao : ĠM us lim Data Dao ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠINSTANCE : ĠM us lim Data Database ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext ): ĠM us lim Data Database Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġinstance Ġ= ĠINSTANCE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠRoom . database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Context , ĠM us lim Data Database :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mus lim _ db . db " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. createFrom Asset (" database / mus lim _ db _ v 1 . 0 . 0 . db ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ= Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ