package Ġcom . github . j nu ut inen . functional . data Ċ Ċ import Ġcom . github . j nu ut inen . functional . data . db . dao . Task Dao Ċ import Ġcom . github . j nu ut inen . functional . data . db . dao . TaskList Dao Ċ import Ġcom . github . j nu ut inen . functional . data . db . entity . Task Ċ import Ġcom . github . j nu ut inen . functional . data . db . entity . TaskList Ċ import Ġcom . github . j nu ut inen . functional . util . run On Io Thread Ċ Ċ class ĠTask Repository Ġprivate Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġm Task Dao : ĠTask Dao , ĊĠĠĠ Ġprivate Ġval Ġm TaskList Dao : ĠTask List Dao Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġcopy TaskList ( list Id : ĠInt , Ġnew List Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Io Thread Ġ{ Ġm TaskList Dao . create Copy ( list Id , Ġnew List Name ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetList sWith Tasks () Ġ= Ġm TaskList Dao . getAll List sWith Tasks () ĊĊĠĠĠ Ġfun Ġdelete TaskList ( list Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Io Thread Ġ{ Ġm TaskList Dao . delete ( list Id ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinsert Task ( task : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Io Thread Ġ{ Ġm Task Dao . insert ( task ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinsert TaskList ( task List : ĠTask List ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Io Thread Ġ{ Ġm TaskList Dao . insert ( task List ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Task Delete ( positions ToUpdate : ĠList < Task >, Ġdeleted Task : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Io Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Task Dao . update All ( positions ToUpdate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Task Dao . delete ( deleted Task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Task Delete Undo ( positions ToUpdate : ĠList < Task >, Ġinserted Task : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Io Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Task Dao . update All ( positions ToUpdate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Task Dao . insert ( inserted Task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate TaskList ( list Id : ĠInt , Ġupdated Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Io Thread Ġ{ Ġm TaskList Dao . update ( list Id , Ġupdated Name ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Tasks ( tasks : ĠList < Task >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Io Thread Ġ{ Ġm Task Dao . update All ( tasks ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġby Ġlazy Ġ{ ĠTask Repository :: class . java . simple Name Ġ} ĊĠĠĠĠĠĠĠ Ġ@ Volatile Ġprivate Ġvar Ġm Instance : ĠTask Repository ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( task Dao : ĠTask Dao , Ġtask List Dao : ĠTask List Dao ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Instance Ġ?: Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Instance Ġ?: ĠTask Repository ( task Dao , Ġtask List Dao ). also Ġ{ Ġm Instance Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ