package Ġcom . j du ong . j ds ocial . data . room čĊč Ċ import Ġandroid . content . Context č Ċ import Ġandroidx . room . Database č Ċ import Ġandroidx . room . Room č Ċ import Ġandroidx . room . Room Database č Ċ import Ġcom . j du ong . j ds ocial . data . model . Album č Ċ import Ġcom . j du ong . j ds ocial . data . model . Comments č Ċ import Ġcom . j du ong . j ds ocial . data . model . Post č Ċ import Ġcom . j du ong . j ds ocial . data . model . User čĊč Ċ @ Database ( entities Ġ= array Of ( User :: class , ĠPost :: class , ĠComments :: class , ĠAlbum :: Ġclass ), Ġversion Ġ= Ġ 1 ) č Ċ abstract Ġclass ĠJ D database Ġ: ĠRoom Database () Ġ Ġ{ čĊčĊĠĠĠ Ġabstract Ġfun Ġuser Dao () Ġ: ĠUser Dao čĊĠĠĠ Ġabstract Ġfun Ġpost Dao () Ġ: ĠPost Dao čĊĠĠĠ Ġabstract Ġfun Ġcomments Dao () Ġ: ĠComments Dao čĊĠĠĠ Ġabstract Ġfun Ġalbum Dao () Ġ: ĠAlbum Dao čĊčĊĠĠĠ Ġcompanion Ġobject { čĊĠĠĠĠĠĠĠ Ġ@ Volatile Ġprivate Ġvar ĠINSTANCE Ġ: ĠJ D database ? Ġ= Ġnull čĊčĊĠĠĠĠĠĠĠ Ġfun Ġget Database ( context Ġ: ĠContext ): ĠJ D database Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Instance Ġ= ĠINSTANCE čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp Instance Ġ!= Ġnull ){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtemp Instance čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this ){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠRoom . database Builder ( context , ĠJ D database :: class . java , Ġ" jd _ database ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ= Ġinstance čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ }