package Ġbr . edu . if b . android Ċ Ċ import Ġandroid . content . Content Provider Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . content . Uri Matcher Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . database . SQLException Ċ import Ġandroid . net . Uri Ċ import Ġandroid . util . Log Ċ import Ġbr . edu . if b . android . dao . Cur sos Helper ĊĊ Ċ class ĠC urs os Provider Ġ: ĠContent Provider () Ġ{ ĊĊĠĠĠ Ġvar Ġcurs os Helper : ĠC urs os Helper ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġcontext Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* Def ini Ã§Ã£o Ġda ĠAuthor ity , Ġo Ġpac ote Ġon de ĠestÃ¡ Ġo Ġprovider */ Ċ // ĠĠĠĠĠĠĠ Ġconst Ġval ĠAUTH ORITY Ġ= Ġ" br . com . topic os 1 . cursos " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAUTH ORITY Ġ= Ġ" br . edu . if b . android " ĊĊĠĠĠĠĠĠĠ Ġ/* Def ini Ã§Ã£o Ġdo Ġprefix o Ġda Ġauthority */ ĊĠĠĠĠĠĠĠ Ġval ĠCONTENT _ URI Ġ= ĠUri . parse (" content :// $ AUTH ORITY ") ĊĊĠĠĠĠĠĠĠ Ġ/* Def ini Ã§Ã£o Ġdo Ġdo Ġc amin ho Ġpara Ġconsulta Ġpelo Ġid */ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠID _ PATH Ġ= Ġ" id /* " ĊĊĠĠĠĠĠĠĠ Ġ/* Def ini Ã§Ã£o Ġdo Ġtipo Ġde Ġconsulta , Ġn este Ġcaso ĠÃ© Ġlist ar Ġtodas */ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCUR S OS Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġ/* Def ini Ã§Ã£o Ġdo Ġtipo Ġde Ġconsulta , Ġn este Ġcaso Ġconsult ar Ġpelo Ġid */ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBY _ ID Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġ/* Ident ificador Ġdo Ġtipo Ġde Ġuri Ġa Ġser Ġutiliz ada */ ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠUri Matcher ( Uri Matcher . NO _ MATCH ) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Uri Ġpara Ġbus car Ġtodas */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher . add URI ( AUTH ORITY , Ġnull , ĠCUR S OS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Uri Ġpara Ġconsulta Ġpelo Ġid */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher . add URI ( AUTH ORITY , ĠID _ PATH , ĠBY _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Uri Ġpara Ġargument o Ġinv Ã¡l ido , Ġn esse Ġcaso , ĠnÃ£o Ġexec uta Ġa Ã§Ã£o Ġalg uma */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher . add URI ( AUTH ORITY , Ġ"# ", ĠCUR S OS ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġinit Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠonCreate () Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( uri : ĠUri , Ġselection : ĠString ?, Ġselection Args : ĠArray < String >? ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġcurs os Helper !!. writable Database ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġmatcher . match ( uri ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( match Ġ!= ĠCUR S OS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . delete ( Cur sos Helper . NO ME _ TAB EL A , Ġselection , Ġselection Args ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetType ( uri : ĠUri ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġmatcher . match ( uri ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( match Ġ== ĠCUR S OS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" vnd . android . cursor . dir / vnd . topic os 1 . cursos " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" vnd . android . cursor . item / vnd . topic os 1 . curso " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinsert ( uri : ĠUri , Ġvalues : ĠContent Values ?): ĠUri ? Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ("> > cursos Helper ", Ġcurs os Helper . toString ()) ĊĠĠĠĠĠĠĠ ĠLog . i ("> > writable Database ", Ġcurs os Helper ?. writable Database . toString ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġcurs os Helper ?. writable Database ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġmatcher . match ( uri ) ĊĠĠĠĠĠĠĠ Ġvar Ġnew Id : ĠLong Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġif Ġ( match Ġ!= ĠCUR S OS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġjava . lang . Unsupported OperationException (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( values Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Id Ġ= Ġdb !!. insert ( Cur sos Helper . NO ME _ TAB EL A , Ġnull , Ġvalues ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ("> >> Ġnew Id ", Ġnew Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSQLException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ("> > ĠEr ro Ġao Ġinser ir : Ġ", Ġe . stack Trace . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠUri . with App ended Path ( uri , Ġnew Id . toString ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Val ores ĠsÃ£o Ġob rig atÃ³ rios !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġcurs os Helper Ġ= ĠgetContext ()?. let Ġ{ ĠC urs os Helper ( it ) Ġ} ĊĠĠĠĠĠĠĠ ĠLog . i ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" >> ĠOn Create ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurs os Helper . toString () Ġ+ Ġ" Ġ/ Ġ" Ġ+ Ġcurs os Helper ?. writable Database . toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcurs os Helper Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġquery ( ĊĠĠĠĠĠĠĠ Ġuri : ĠUri , Ġprojection : ĠArray < String > ?, Ġselection : ĠString ?, ĊĠĠĠĠĠĠĠ Ġselection Args : ĠArray < String > ?, Ġsort Order : ĠString ? ĊĠĠĠ Ġ): ĠCursor ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġcurs os Helper !!. writable Database ĊĠĠĠĠĠĠĠ Ġvar Ġorder : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠCursor ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( sort Order Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġsort Order ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġmatcher . match ( uri ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( match ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCUR S OS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb !!. query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC urs os Helper . NO ME _ TAB EL A , Ġprojection , Ġselection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Args , Ġnull , Ġnull , Ġorder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBY _ ID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb !!. query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC urs os Helper . NO ME _ TAB EL A , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprojection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC urs os Helper . ID Ġ+ Ġ"= ?", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( uri . last Path Segment ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠUnsupportedOperationException (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Error : Ġ", Ġe . message . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( ĊĠĠĠĠĠĠĠ Ġuri : ĠUri , Ġvalues : ĠContent Values ?, Ġselection : ĠString ?, ĊĠĠĠĠĠĠĠ Ġselection Args : ĠArray < String >? ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġcurs os Helper !!. writable Database ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġmatcher . match ( uri ) ĊĠĠĠĠĠĠĠ Ġvar Ġrows Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( match Ġ!= ĠCUR S OS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġjava . lang . Unsupported OperationException (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( values Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrows Ġ= Ġdb . update ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC urs os Helper . NO ME _ TAB EL A , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Args ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġrows ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ