package Ġcom . l hy z . android . tod olist . data . source . local Ċ Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . content . Context Ċ import Ġcom . l hy z . android . tod olist . data . Task Ċ import Ġcom . l hy z . android . tod olist . data . source . Tasks DataSource Ċ import Ġcom . l hy z . android . tod olist . data . source . local . Tasks Persistence Contract . Task Entry Ċ import Ġjava . util .* ĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊ Ċ /** Ċ Ġ* Ġhello , android Ċ Ġ* Ġ@ author Ġl hy z Ġon Ġ 2 0 1 7 / 2 / 5 Ċ Ġ*/ Ċ class ĠTasks Local DataSource Ġprivate Ġconstructor ( context : ĠContext ) Ġ: ĠTasks DataSource Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext ): ĠTasks Local DataSource Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTasks Local DataSource ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġm Db Helper : ĠTasks Db Helper Ġ= ĠTasks Db Helper ( context ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Tasks ( callback : ĠTasks DataSource . Load Tasks Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtasks Ġ= ĠArrayList < Task >() ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġm Db Helper . writable Database ĊĠĠĠĠĠĠĠ Ġval Ġprojection Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Entry . COLUMN _ NAME _ ENTRY _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Entry . COLUMN _ NAME _ TITLE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Entry . COLUMN _ NAME _ DESCRIPTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Entry . COLUMN _ NAME _ COMPLETED ) ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġdb . query ( Task Entry . TABLE _ NAME , Ġprojection , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( c Ġ!= Ġnull Ġ&& Ġc . count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( c . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemId Ġ= Ġc . getString ( c . getColumnIndex OrThrow ( Task Entry . COLUMN _ NAME _ ENTRY _ ID )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġc . getString ( c . getColumnIndex OrThrow ( Task Entry . COLUMN _ NAME _ TITLE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġc . getString ( c . getColumnIndex OrThrow ( Task Entry . COLUMN _ NAME _ DESCRIPTION )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcompleted Ġ= Ġc . getInt ( c . getColumnIndex OrThrow ( Task Entry . COLUMN _ NAME _ COMPLETED )) Ġ=== Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠTask ( title , Ġdescription , ĠitemId , Ġcompleted ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtasks . add ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġc ?. close () ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( tasks . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Data Not Available () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Tasks Loaded ( tasks ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Task ( taskId : ĠString , Ġcallback : ĠTasks DataSource . Get Task Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġm Db Helper . readable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġprojection Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Entry . COLUMN _ NAME _ ENTRY _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Entry . COLUMN _ NAME _ TITLE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Entry . COLUMN _ NAME _ DESCRIPTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Entry . COLUMN _ NAME _ COMPLETED ) ĊĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= ĠTask Entry . COLUMN _ NAME _ ENTRY _ ID Ġ+ Ġ" ĠLIKE Ġ? " ĊĠĠĠĠĠĠĠ Ġval Ġselection Args Ġ= ĠarrayOf ( taskId ) ĊĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġdb . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Entry . TABLE _ NAME , Ġprojection , Ġselection , Ġselection Args , Ġnull , Ġnull , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġtask : ĠTask ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( c Ġ!= Ġnull Ġ&& Ġc . count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . moveTo First () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemId Ġ= Ġc . getString ( c . getColumnIndex OrThrow ( Task Entry . COLUMN _ NAME _ ENTRY _ ID )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġc . getString ( c . getColumnIndex OrThrow ( Task Entry . COLUMN _ NAME _ TITLE )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġc . getString ( c . getColumnIndex OrThrow ( Task Entry . COLUMN _ NAME _ DESCRIPTION )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcompleted Ġ= Ġc . getInt ( c . getColumnIndex OrThrow ( Task Entry . COLUMN _ NAME _ COMPLETED )) Ġ=== Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Ġ= ĠTask ( title , Ġdescription , ĠitemId , Ġcompleted ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġc ?. close () ĊĊĠĠĠĠĠĠĠ Ġdb . close () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( task Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Task Loaded ( task ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Data Not Available () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave Task ( task : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġm Db Helper . writable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠ Ġvalues . put ( Task Entry . COLUMN _ NAME _ ENTRY _ ID , Ġtask . id ) ĊĠĠĠĠĠĠĠ Ġvalues . put ( Task Entry . COLUMN _ NAME _ TITLE , Ġtask . title ) ĊĠĠĠĠĠĠĠ Ġvalues . put ( Task Entry . COLUMN _ NAME _ DESCRIPTION , Ġtask . description ) ĊĠĠĠĠĠĠĠ Ġvalues . put ( Task Entry . COLUMN _ NAME _ COMPLETED , Ġtask . completed ) ĊĊĠĠĠĠĠĠĠ Ġdb . insert ( Task Entry . TABLE _ NAME , Ġnull , Ġvalues ) ĊĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcomplete Task ( task : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġm Db Helper . writable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠ Ġvalues . put ( Task Entry . COLUMN _ NAME _ COMPLETED , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= ĠTask Entry . COLUMN _ NAME _ ENTRY _ ID Ġ+ Ġ" ĠLIKE Ġ? " ĊĠĠĠĠĠĠĠ Ġval Ġselection Args Ġ= ĠarrayOf ( task . id ) ĊĊĠĠĠĠĠĠĠ Ġdb . update ( Task Entry . TABLE _ NAME , Ġvalues , Ġselection , Ġselection Args ) ĊĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcomplete Task ( taskId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġactivate Task ( task : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġm Db Helper . writable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠ Ġvalues . put ( Task Entry . COLUMN _ NAME _ COMPLETED , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= ĠTask Entry . COLUMN _ NAME _ ENTRY _ ID Ġ+ Ġ" ĠLIKE Ġ? " ĊĠĠĠĠĠĠĠ Ġval Ġselection Args Ġ= ĠarrayOf ( task . id ) ĊĊĠĠĠĠĠĠĠ Ġdb . update ( Task Entry . TABLE _ NAME , Ġvalues , Ġselection , Ġselection Args ) ĊĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġactivate Task ( taskId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Completed Tasks () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġm Db Helper . writable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= ĠTask Entry . COLUMN _ NAME _ COMPLETED Ġ+ Ġ" ĠLIKE Ġ? " ĊĠĠĠĠĠĠĠ Ġval Ġselection Args Ġ= ĠarrayOf (" 1 ") ĊĊĠĠĠĠĠĠĠ Ġdb . delete ( Task Entry . TABLE _ NAME , Ġselection , Ġselection Args ) ĊĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrefresh Tasks () Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete All Tasks () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġm Db Helper . writable Database ĊĊĠĠĠĠĠĠĠ Ġdb . delete ( Task Entry . TABLE _ NAME , Ġnull , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Task ( taskId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġm Db Helper . writable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= ĠTask Entry . COLUMN _ NAME _ ENTRY _ ID Ġ+ Ġ" ĠLIKE Ġ? " ĊĠĠĠĠĠĠĠ Ġval Ġselection Args Ġ= ĠarrayOf ( taskId ) ĊĊĠĠĠĠĠĠĠ Ġdb . delete ( Task Entry . TABLE _ NAME , Ġselection , Ġselection Args ) ĊĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠ Ġ} Ċ }