package Ġcom . example . my task . repository Ċ Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Base Columns Ċ import Ġandroid . view . content capture . Data Share Write Adapter Ċ import Ġcom . example . my task . R Ċ import Ġcom . example . my task . datasource . Data Base Definitions Ċ import Ġcom . example . my task . datasource . Data Base Helper Ċ import Ġcom . example . my task . model . Task Ċ Ċ class ĠTask Repository ( context : ĠContext ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdb Helper Ġ= ĠData Base Helper ( context ) ĊĊĠĠĠ Ġfun Ġsave ( task : ĠTask ): ĠInt Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġdb Helper . writable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠ Ġvalues . put ( Data Base Definitions . Task . Columns . TITLE , Ġtask . title ) ĊĠĠĠĠĠĠĠ Ġvalues . put ( Data Base Definitions . Task . Columns . DESCRIPTION , Ġtask . description ) ĊĠĠĠĠĠĠĠ Ġvalues . put ( Data Base Definitions . Task . Columns . PRIORITY _ FIRST , Ġtask . priority _ f ist ) ĊĠĠĠĠĠĠĠ Ġvalues . put ( Data Base Definitions . Task . Columns . PRIORITY _ L ATER , Ġtask . priority _ later ) ĊĠĠĠĠĠĠĠ Ġvalues . put ( Data Base Definitions . Task . Columns . PRIORITY _ DE LEG ATE , Ġtask . priority _ delegate ) ĊĠĠĠĠĠĠĠ Ġvalues . put ( Data Base Definitions . Task . Columns . PRIORITY _ E LI MIN ATE , Ġtask . priority _ elim inate ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Row Id Ġ= Ġdb . insert ( Data Base Definitions . Task . TABLE _ NAME , Ġnull , Ġvalues ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnew Row Id . toInt () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġdelete ( id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġdb Helper . writable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġprojection Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . TITLE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . DESCRIPTION , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . PRIORITY _ FIRST , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . PRIORITY _ L ATER , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . PRIORITY _ DE LEG ATE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . PRIORITY _ E LI MIN ATE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġ"${ Data Base Definitions . Task . Columns . ID } Ġ= Ġ? " ĊĠĠĠĠĠĠĠ Ġval Ġselection Args Ġ= ĠarrayOf ( id . toString ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġdeleted Rows Ġ= Ġdb . delete ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . TABLE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection Args ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdeleted Rows ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate ( task : ĠTask ): ĠInt Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġdb Helper . writable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġ"${ Data Base Definitions . Task . Columns . ID } ĠLIKE Ġ? " ĊĠĠĠĠĠĠĠ Ġval Ġselection Args Ġ= ĠarrayOf ( task . id . toString ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠ Ġvalues . put ( Data Base Definitions . Task . Columns . TITLE , Ġtask . title ) ĊĠĠĠĠĠĠĠ Ġvalues . put ( Data Base Definitions . Task . Columns . DESCRIPTION , Ġtask . description ) ĊĠĠĠĠĠĠĠ Ġvalues . put ( Data Base Definitions . Task . Columns . PRIORITY _ FIRST , Ġtask . priority _ f ist ) ĊĠĠĠĠĠĠĠ Ġvalues . put ( Data Base Definitions . Task . Columns . PRIORITY _ L ATER , Ġtask . priority _ later ) ĊĠĠĠĠĠĠĠ Ġvalues . put ( Data Base Definitions . Task . Columns . PRIORITY _ DE LEG ATE , Ġtask . priority _ delegate ) ĊĠĠĠĠĠĠĠ Ġvalues . put ( Data Base Definitions . Task . Columns . PRIORITY _ E LI MIN ATE , Ġtask . priority _ elim inate ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġdb . update ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . TABLE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection Args ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Task ( id : ĠInt ): ĠTask Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġdb Helper . readable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġprojection Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . TITLE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . DESCRIPTION , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . PRIORITY _ FIRST , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . PRIORITY _ L ATER , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . PRIORITY _ DE LEG ATE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . PRIORITY _ E LI MIN ATE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġ"${ Data Base Definitions . Task . Columns . ID } Ġ= Ġ? " ĊĠĠĠĠĠĠĠ Ġval Ġselection Args Ġ= ĠarrayOf ( id . toString ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . TABLE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprojection , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection Args , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval ĠitemId Ġ= ĠTask () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . moveTo Next () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemId . id Ġ= Ġcursor . getInt ( cursor . getColumnIndex ( Data Base Definitions . Task . Columns . ID )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemId . title Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Data Base Definitions . Task . Columns . TITLE )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemId . description Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Data Base Definitions . Task . Columns . DESCRIPTION )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemId . priority _ f ist Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getInt ( cursor . getColumnIndex ( Data Base Definitions . Task . Columns . PRIORITY _ FIRST )) Ġ== Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemId . priority _ later Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getInt ( cursor . getColumnIndex ( Data Base Definitions . Task . Columns . PRIORITY _ L ATER )) Ġ== Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemId . priority _ delegate Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getInt ( cursor . getColumnIndex ( Data Base Definitions . Task . Columns . PRIORITY _ DE LEG ATE )) Ġ== Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemId . priority _ elim inate Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getInt ( cursor . getColumnIndex ( Data Base Definitions . Task . Columns . PRIORITY _ E LI MIN ATE )) Ġ== Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠitemId ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Tasks (): ĠArrayList < Task > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġdb Helper . readable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġprojection Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . TITLE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . Columns . DESCRIPTION ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsort Order Ġ= Ġ"${ Data Base Definitions . Task . Columns . ID } ĠDESC " ĊĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Definitions . Task . TABLE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprojection , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Order ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġitem Ids Ġ= ĠArrayList < Task >() ĊĊĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( cursor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠTask ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġcursor . getInt ( getColumnIndex ( Data Base Definitions . Task . Columns . ID )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġcursor . getString ( getColumnIndex ( Data Base Definitions . Task . Columns . TITLE )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġcursor . getString ( getColumnIndex ( Data Base Definitions . Task . Columns . DESCRIPTION )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ids . add ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġitem Ids ĊĠĠĠ Ġ} Ċ Ċ } Ċ