package Ġcom . z aim ing . android . gallery . datab se . database Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Database Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . Room Database Ċ import Ġandroidx . room . Type Converters Ċ import Ġcom . z aim ing . android . gallery . datab se . converters . Converters Ċ import Ġcom . z aim ing . android . gallery . datab se . dao . Photo Dao Ċ import Ġcom . z aim ing . android . gallery . datab se . entity . Media MetaData Ċ Ċ /** Ċ Ġ* Ġ@ author Ġz aim ing Ċ Ġ*/ Ċ @ Database ( ĊĠĠĠ Ġentities Ġ= Ġ[ Media MetaData :: class ], Ġversion Ġ= Ġ 1 , Ġexport Schema Ġ= Ġfalse Ċ ) Ċ @ Type Converters ( Converters :: class ) Ċ abstract Ġclass ĠPhoto Database Ġ: ĠRoom Database () Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġphoto Dao (): ĠPhoto Dao ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠINSTANCE : ĠPhoto Database ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Database ( context : ĠContext ): ĠPhoto Database Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Instance Ġ= ĠINSTANCE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp Instance Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtemp Instance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠRoom . database Builder ( context . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPhoto Database :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" photo _ database ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ= Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }