package Ġcom . example . android . pe ts . data Ċ Ċ import Ġandroid . content . Content Provider Ċ import Ġandroid . content . Content U ris Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . net . Uri Ċ import Ġandroid . util . Log Ċ import Ġcom . example . android . pe ts . data . Pet Contract . Pet Entry ĊĊ Ċ /** Ċ Ġ* Ġ[ Content Provider ] Ġfor ĠP ets Ġapp . Ċ Ġ*/ Ċ class ĠPet Provider Ġ: ĠContent Provider () Ġ{ ĊĠĠĠ Ġ/** ĠDatabase Ġhelper Ġobject Ġto Ġaccess Ġthe Ġp ets Ġdatabase Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Db Helper : ĠPet Db Helper ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitialize Ġthe Ġprovider Ġand Ġthe Ġdatabase Ġhelper Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġthe Ġvariable Ġis Ġa Ġglobal Ġvariable , Ġso Ġit Ġcan Ġbe Ġreferenced Ġfrom Ġother ĊĠĠĠĠĠĠĠ Ġ// ĠContent Provider Ġmethods . ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġ' let ' Ġthe Ġ' it ' Ġis Ġthe Ġobject Ġit Ġis Ġcalled Ġupon Ġ( here Ġthe Ġcontext ). ĊĠĠĠĠĠĠĠ Ġ// Ġ' let ' Ġreturns Ġthe Ġresult Ġof Ġthe Ġblock Ġ( here Ġthe Ġresult Ġof ĠPet Db Helper ). ĊĠĠĠĠĠĠĠ Ġm Db Helper Ġ= Ġcontext ?. let Ġ{ ĠPet Db Helper ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPerform Ġthe Ġquery Ġfor Ġthe Ġgiven ĠURI . ĠUse Ġthe Ġgiven Ġprojection , Ġselection , Ġselection Ġarguments , Ġand Ġsort Ġorder . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġquery ( ĊĠĠĠĠĠĠĠ Ġuri : ĠUri , Ġprojection : ĠArray < String > ?, Ġselection : ĠString ?, Ġselection Args : ĠArray < String > ?, ĊĠĠĠĠĠĠĠ Ġsort Order : ĠString ? ĊĠĠĠ Ġ): ĠCursor ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġreadable Ġdatabase ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= Ġm Db Helper !!. readable Database ĊĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġcursor Ġwill Ġhold Ġthe Ġresult Ġof Ġthe Ġquery ĊĠĠĠĠĠĠĠ Ġvar Ġcursor : ĠCursor ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ// ĠFigure Ġout Ġif Ġthe ĠURI Ġmatcher Ġcan Ġmatch Ġthe ĠURI Ġto Ġa Ġspecific Ġcode ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġs Uri Matcher . match ( uri ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( match ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP ETS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġthe ĠP ETS Ġcode , Ġquery Ġthe Ġp ets Ġtable Ġdirectly Ġwith Ġthe Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprojection , Ġselection , Ġselection Ġarguments , Ġand Ġsort Ġorder . ĠThe Ġcursor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcould Ġcontain Ġmultiple Ġrows Ġof Ġthe Ġp ets Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġdatabase . query ( Pet Entry . TABLE _ NAME , Ġprojection , Ġselection , Ġselection Args , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġnull , Ġsort Order ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP ET _ ID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġthe ĠP ET _ ID Ġcode , Ġextract Ġout Ġthe ĠID Ġfrom Ġthe ĠURI . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġan Ġexample ĠURI Ġsuch Ġas Ġ" content :// com . example . android . pe ts / pe ts / 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġselection Ġwill Ġbe Ġ"_ id = ?" Ġand Ġthe Ġselection Ġargument Ġwill Ġbe Ġa ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠString Ġarray Ġcontaining Ġthe Ġactual ĠID Ġof Ġ 3 Ġin Ġthis Ġcase . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġevery Ġ" ?" Ġin Ġthe Ġselection , Ġwe Ġneed Ġto Ġhave Ġan Ġelement Ġin Ġthe Ġselection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġarguments Ġthat Ġwill Ġfill Ġin Ġthe Ġ"? ". ĠSince Ġwe Ġhave Ġ 1 Ġquestion Ġmark Ġin Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġselection , Ġwe Ġhave Ġ 1 ĠString Ġin Ġthe Ġselection Ġarguments ' ĠString Ġarray . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Id Ġ= ĠPet Entry ._ ID Ġ+ Ġ"= ?" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Args Id Ġ= ĠarrayOf ( Content U ris . parse Id ( uri ). toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġwill Ġperform Ġa Ġquery Ġon Ġthe Ġp ets Ġtable Ġwhere Ġthe Ġ_ id Ġequals Ġ 3 Ġto Ġreturn Ġa ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCursor Ġcontaining Ġthat Ġrow Ġof Ġthe Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġdatabase . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPet Entry . TABLE _ NAME , Ġprojection , Ġselection Id , Ġselection Args Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġnull , Ġsort Order ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Cannot Ġquery Ġunknown ĠURI Ġ$ uri ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcursor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInsert Ġnew Ġdata Ġinto Ġthe Ġprovider Ġwith Ġthe Ġgiven ĠContent Values . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġinsert ( uri : ĠUri , Ġcontent Values : ĠContent Values ?): ĠUri ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġs Uri Matcher . match ( uri ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( match ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP ETS Ġ-> Ġinsert Pet ( uri , Ġcontent Values !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow Ġjava . lang . IllegalArgumentException (" Insertion Ġis Ġnot Ġsupported Ġfor Ġ$ uri ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInsert Ġa Ġpet Ġinto Ġthe Ġdatabase Ġwith Ġthe Ġgiven Ġcontent Ġvalues . ĠReturn Ġthe Ġnew Ġcontent ĠURI ĊĠĠĠĠ Ġ* Ġfor Ġthat Ġspecific Ġrow Ġin Ġthe Ġdatabase . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinsert Pet ( uri : ĠUri , Ġvalues : ĠContent Values ): ĠUri ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthat Ġthe Ġname Ġis Ġnot Ġnull . ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġvalues . get AsString ( Pet Entry . COLUMN _ PET _ NAME ) ĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġjava . lang . IllegalArgumentException (" Pet Ġrequires Ġa Ġname ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthat Ġgender Ġis Ġvalid . ĊĠĠĠĠĠĠĠ Ġval Ġgender Ġ= Ġvalues . getAs Integer ( Pet Entry . COLUMN _ PET _ G ENDER ) ĊĠĠĠĠĠĠĠ Ġif Ġ( gender Ġ== Ġnull Ġ|| Ġ! Pet Entry . isValid Gender ( gender )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġjava . lang . IllegalArgumentException (" Pet Ġrequires Ġvalid Ġgender ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġweight Ġis Ġprovided , Ġcheck Ġthat Ġit 's Ġgreater Ġthan Ġor Ġequal Ġto Ġ 0 Ġk g . ĊĠĠĠĠĠĠĠ Ġval Ġweight Ġ= Ġvalues . getAs Integer ( Pet Entry . COLUMN _ PET _ WEIGHT ) ĊĠĠĠĠĠĠĠ Ġif Ġ( weight Ġ!= Ġnull Ġ&& Ġweight Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġjava . lang . IllegalArgumentException (" Pet Ġrequires Ġvalid Ġweight ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠNo Ġneed Ġto Ġcheck Ġthe Ġb reed , Ġany Ġvalue Ġis Ġvalid Ġ( including Ġnull ). ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġwrite able Ġdatabase . ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= Ġm Db Helper ?. writable Database ĊĊĠĠĠĠĠĠĠ Ġ// ĠInsert Ġthe Ġnew Ġpet Ġwith Ġthe Ġgiven Ġvalues . ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġdatabase ?. insert ( Pet Entry . TABLE _ NAME , Ġnull , Ġvalues ) Ġ?: Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe ĠID Ġis Ġ- 1 , Ġthen Ġthe Ġinsertion Ġfailed . ĠLog Ġan Ġerror Ġand Ġreturn Ġnull . ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== Ġ- 1 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( LOG _ TAG , Ġ" Failed Ġto Ġinsert Ġrow Ġfor Ġ${ uri . toString () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠOnce Ġwe Ġknow Ġthe ĠID Ġof Ġthe Ġnew Ġrow Ġin Ġthe Ġtable , ĊĠĠĠĠĠĠĠ Ġ// Ġreturn Ġthe Ġnew ĠURI Ġwith Ġthe ĠID Ġappended Ġto Ġthe Ġend Ġof Ġit . ĊĠĠĠĠĠĠĠ Ġreturn ĠContent U ris . with App ended Id ( uri , Ġid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdates Ġthe Ġdata Ġat Ġthe Ġgiven Ġselection Ġand Ġselection Ġarguments , Ġwith Ġthe Ġnew ĠContent Values . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġupdate ( ĊĠĠĠĠĠĠĠ Ġuri : ĠUri , ĊĠĠĠĠĠĠĠ Ġcontent Values : ĠContent Values ?, ĊĠĠĠĠĠĠĠ Ġselection : ĠString ?, ĊĠĠĠĠĠĠĠ Ġselection Args : ĠArray < String >? ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġs Uri Matcher . match ( uri ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( match ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP ETS Ġ-> Ġreturn Ġupdate Pet ( uri , Ġcontent Values , Ġselection , Ġselection Args ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP ET _ ID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġthe ĠP ET _ ID Ġcode , Ġextract Ġout Ġthe ĠID Ġfrom Ġthe ĠURI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġso Ġwe Ġknow Ġwhich Ġrow Ġto Ġupdate . ĠSelection Ġwill Ġbe Ġ"_ id = ?" Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġselection Ġarguments Ġwill Ġbe Ġa ĠString Ġarray Ġcontaining Ġthe Ġactual ĠID . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġ"${ Pet Entry ._ ID }= ?" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Args Ġ= ĠarrayOf ( Content U ris . parse Id ( uri ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġupdate Pet ( uri , Ġcontent Values , Ġselection , Ġselection Args ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow Ġjava . lang . IllegalArgumentException (" Update Ġis Ġnot Ġsupported Ġfor Ġ$ uri .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdate Ġp ets Ġin Ġthe Ġdatabase Ġwith Ġthe Ġgiven Ġcontent Ġvalues . ĠApply Ġthe Ġchanges Ġto Ġthe Ġrows ĊĠĠĠĠ Ġ* Ġspecified Ġin Ġthe Ġselection Ġand Ġselection Ġarguments Ġ( which Ġcould Ġbe Ġ 0 Ġor Ġ 1 Ġor Ġmore Ġp ets ). ĊĠĠĠĠ Ġ* ĠReturn Ġthe Ġnumber Ġor Ġrows Ġthat Ġwere Ġsuccessfully Ġupdated . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġupdate Pet ( ĊĠĠĠĠĠĠĠ Ġuri : ĠUri , Ġvalues : ĠContent Values ?, Ġselection : ĠString ?, ĊĠĠĠĠĠĠĠ Ġselection Args : ĠArray < String >? ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe ĠPet Entry . COLUMN _ PET _ NAME Ġkey Ġis Ġpresent , ĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġthat Ġthe Ġname Ġvalue Ġis Ġnot Ġnull . ĊĠĠĠĠĠĠĠ Ġif Ġ( values ?. containsKey ( Pet Entry . COLUMN _ PET _ NAME ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġvalues . get AsString ( Pet Entry . COLUMN _ PET _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġjava . lang . IllegalArgumentException (" Pet Ġrequires Ġa Ġname ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe ĠPet Entry . COLUMN _ PET _ G ENDER Ġkey Ġis Ġpresent , ĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġthat Ġthe Ġgender Ġvalue Ġis Ġvalid . ĊĠĠĠĠĠĠĠ Ġif Ġ( values ?. containsKey ( Pet Entry . COLUMN _ PET _ G ENDER ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgender Ġ= Ġvalues . getAs Integer ( Pet Entry . COLUMN _ PET _ G ENDER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( gender Ġ== Ġnull Ġ|| Ġ! Pet Entry . isValid Gender ( gender )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġjava . lang . IllegalArgumentException (" Pet Ġrequires Ġvalid Ġgender ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe ĠPet Entry . COLUMN _ PET _ WEIGHT Ġkey Ġis Ġpresent , ĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġthat Ġthe Ġweight Ġvalue Ġis Ġvalid . ĊĠĠĠĠĠĠĠ Ġif Ġ( values ?. containsKey ( Pet Entry . COLUMN _ PET _ WEIGHT ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthat Ġthe Ġweight Ġis Ġgreater Ġthan Ġor Ġequal Ġto Ġ 0 Ġk g ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweight Ġ= Ġvalues . getAs Integer ( Pet Entry . COLUMN _ PET _ WEIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( weight Ġ!= Ġnull Ġ&& Ġweight Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġjava . lang . IllegalArgumentException (" Pet Ġrequires Ġvalid Ġweight ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠNo Ġneed Ġto Ġcheck Ġthe Ġb reed , Ġany Ġvalue Ġis Ġvalid Ġ( including Ġnull ). ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthere Ġare Ġno Ġvalues Ġto Ġupdate , Ġthen Ġdon 't Ġtry Ġto Ġupdate Ġthe Ġdatabase . ĊĠĠĠĠĠĠĠ Ġif Ġ( values ?. size () Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠOtherwise , Ġget Ġwrite able Ġdatabase Ġto Ġupdate Ġthe Ġdata . ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= Ġm Db Helper ?. writable Database ĊĊĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġthe Ġselected Ġp ets Ġin Ġthe Ġp ets Ġdatabase Ġtable Ġwith Ġthe Ġgiven ĠContent Values Ġand ĊĠĠĠĠĠĠĠ Ġ// Ġreturn Ġthe Ġnumber Ġof Ġrows Ġthat Ġwere Ġaffected . ĊĠĠĠĠĠĠĠ Ġreturn Ġdatabase ?. update ( Pet Entry . TABLE _ NAME , Ġvalues , Ġselection , Ġselection Args ) Ġ?: Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDelete Ġthe Ġdata Ġat Ġthe Ġgiven Ġselection Ġand Ġselection Ġarguments . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdelete ( uri : ĠUri , Ġselection : ĠString ?, Ġselection Args : ĠArray < String >? ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġwrite able Ġdatabase ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= Ġm Db Helper !!. writable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġs Uri Matcher . match ( uri ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( match ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP ETS Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDelete Ġall Ġrows Ġthat Ġmatch Ġthe Ġselection Ġand Ġselection Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . delete ( Pet Entry . TABLE _ NAME , Ġselection , Ġselection Args ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP ET _ ID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDelete Ġa Ġsingle Ġrow Ġgiven Ġby Ġthe ĠID Ġin Ġthe ĠURI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Ġ= ĠPet Entry ._ ID Ġ+ Ġ"= ?" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Args Ġ= ĠarrayOf ( Content U ris . parse Id ( uri ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . delete ( Pet Entry . TABLE _ NAME , Ġselection , Ġselection Args ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow Ġjava . lang . IllegalArgumentException (" Deletion Ġis Ġnot Ġsupported Ġfor Ġ$ uri ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe ĠMIME Ġtype Ġof Ġdata Ġfor Ġthe Ġcontent ĠURI . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠgetType ( uri : ĠUri ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġs Uri Matcher . match ( uri ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( match ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP ETS Ġ-> ĠPet Entry . MIME _ LIST _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP ET _ ID Ġ-> ĠPet Entry . MIME _ ITEM _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow Ġjava . lang . IllegalStateException (" Unknown ĠURI Ġ$ uri Ġwith Ġmatch Ġ$ match ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĠTag Ġfor Ġthe Ġlog Ġmessages Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠLOG _ TAG Ġ= ĠPet Provider :: class . java . simple Name ĊĠĠĠ Ġ} Ċ }