package Ġcom . example . intel ig ent nal od ow ka _ mobile app Ċ Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . sqlite . SQLite Database Ċ import Ġandroid . database . sqlite . SQLite Open Helper Ċ import Ġcom . example . intel ig ent nal od ow ka _ mobile app . Shopping List . Shopping Product ĊĊ Ċ const Ġ Ġval ĠDATABASE _ NAME Ġ= Ġ" F ridge . db " Ċ Ċ // TAB EL A ĠPRO DU KT Ãĵ W ĠU Å » Y TK OWN IK A ĠW ĠLO D Ãĵ W CE Ċ Ċ const Ġval ĠPRODUCT S _ TABLE _ NAME Ġ= Ġ" Products " Ċ const Ġval ĠID _ PRODUCT Ġ= Ġ" ID _ Product " Ċ const Ġval ĠNAME _ PRODUCT Ġ= Ġ" Name _ Product " Ċ const Ġval ĠEX PI RATION _ DATE Ġ= Ġ" Expiration _ date " Ċ const Ġval ĠQU ANT ITY Ġ= Ġ" Quantity _ Product " Ċ const Ġval ĠTYPE Ġ= Ġ" Type _ Product " Ċ const Ġval ĠP UR CH ASE _ DATE Ġ= Ġ" Purchase _ date " Ċ const Ġval ĠE AN _ PRODUCT _ FROM _ DATABASE Ġ= Ġ" ID _ Product _ from _ Database " Ċ const Ġval ĠAFTER _ EXPI RATION _ DATE Ġ= Ġ" After _ Expiration _ Date " Ċ const Ġval ĠIS _ SELECTED Ġ= Ġ" Is _ Selected " ĊĊĊ Ċ // BA ZA ĠPRO DU K TO W Ġ- ĠTAB EL A ĠW STEP NA Ċ const Ġval ĠPRODUCT S _ DATABASE _ TABLE _ NAME Ġ= Ġ" Products _ Database " Ċ const Ġval ĠID _ PRODUCT _ DATABASE Ġ= Ġ" ID _ Product _ Database " Ċ const Ġval ĠE AN _ QR _ CODE Ġ= Ġ" Code " Ċ const Ġval ĠNAME _ PRODUCT _ DATABASE Ġ= Ġ" Name _ Product _ Database " Ċ Ċ // ĠTAB EL A ĠDOT Y CZ AC A Ġl IST Y ĠZ AK U PO W Ċ const Ġval ĠSH OP PING _ LIST _ TABLE _ NAME Ġ= Ġ" Shopping _ List " Ċ const Ġval ĠID _ SH OP PING _ ITEM Ġ= Ġ" ID _ Shopping _ Item " Ċ const Ġval ĠNAME _ SH OP PING _ ITEM Ġ= Ġ" Name " Ċ const Ġval ĠHO W _ MU CH Ġ= Ġ" How _ M uch " Ċ const Ġval ĠTYPE _ SH OP PING _ ITEM Ġ= Ġ" Type _ Shopping _ Item " Ċ const Ġval ĠIF _ BU Y Ġ= Ġ" If _ Buy " ĊĊĊ Ċ // TAB EL A ĠPRO DU K TY Ċ const Ġval ĠSQL _ CREATE _ TABLE _ PRODUCT S Ġ= Ġ(" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġ" Ġ Ġ+ ĠPRODUCT S _ TABLE _ NAME Ġ+" Ġ(" Ġ+ ĊĠĠĠĠĠĠĠ ĠID _ PRODUCT Ġ+ Ġ" ĠTEXT ĠPRIMARY ĠKEY ," Ġ+ ĊĠĠĠĠĠĠĠ ĠNAME _ PRODUCT Ġ+ Ġ" ĠTEXT ĠNOT ĠNULL ," Ġ+ ĊĠĠĠĠĠĠĠ ĠEX PI RATION _ DATE Ġ+ Ġ" ĠTEXT ," Ġ+ ĊĠĠĠĠĠĠĠ ĠQU ANT ITY Ġ+ Ġ" ĠTEXT ," Ġ+ ĊĠĠĠĠĠĠĠ ĠE AN _ PRODUCT _ FROM _ DATABASE Ġ+ Ġ" ĠTEXT ," Ġ+ ĊĠĠĠĠĠĠĠ ĠTYPE Ġ+ Ġ" ĠTEXT ," Ġ+ ĊĠĠĠĠĠĠĠ ĠAFTER _ EXPI RATION _ DATE Ġ+ Ġ" ĠTEXT ," Ġ+ ĊĠĠĠĠĠĠĠ ĠP UR CH ASE _ DATE Ġ+ Ġ" ĠTEXT ," Ġ+ ĊĠĠĠĠĠĠĠ ĠIS _ SELECTED Ġ+ Ġ" ĠTEXT ," Ġ+ ĊĠĠĠĠĠĠĠ Ġ" FOREIGN ĠKEY (" Ġ+ ĠE AN _ PRODUCT _ FROM _ DATABASE Ġ+ Ġ") ĠREFERENCES Ġ" Ġ+ ĠPRODUCT S _ DATABASE _ TABLE _ NAME Ġ+ Ġ"(" Ġ+ ĠID _ PRODUCT _ DATABASE Ġ+ ")) " Ġ) ĊĊĊ Ċ // BA ZA ĠPRO DU K TO W Ċ const Ġval ĠSQL _ CREATE _ TABLE _ PRODUCT S _ DATABASE Ġ= Ġ(" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġ" Ġ Ġ+ ĠPRODUCT S _ DATABASE _ TABLE _ NAME Ġ+" Ġ(" Ġ+ ĊĠĠĠĠĠĠĠ ĠID _ PRODUCT _ DATABASE Ġ+ Ġ" ĠINTEGER ĠPRIMARY ĠKEY ĠAUTO INCREMENT ," Ġ+ ĊĠĠĠĠĠĠĠ ĠE AN _ QR _ CODE Ġ+ Ġ" ĠTEXT ĠNOT ĠNULL ," Ġ+ ĊĠĠĠĠĠĠĠ ĠNAME _ PRODUCT _ DATABASE Ġ+ Ġ" ĠTEXT ĠNOT ĠNULL )") ĊĊ Ċ // ĠTAB EL A ĠDOT Y CZ AC A ĠLIST Y ĠZ AK U PO W Ċ const Ġval ĠSQL _ CREATE _ TABLE _ SH OP PING _ LIST Ġ= Ġ(" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġ" Ġ Ġ+ ĠSH OP PING _ LIST _ TABLE _ NAME Ġ+" Ġ(" Ġ+ ĊĠĠĠĠĠĠĠ ĠID _ SH OP PING _ ITEM Ġ+ Ġ" ĠTEXT ĠPRIMARY ĠKEY ," Ġ+ ĊĠĠĠĠĠĠĠ ĠNAME _ SH OP PING _ ITEM Ġ+ Ġ" ĠTEXT ĠNOT ĠNULL ," Ġ+ ĊĠĠĠĠĠĠĠ ĠTYPE _ SH OP PING _ ITEM Ġ+ Ġ" ĠTEXT ," Ġ+ ĊĠĠĠĠĠĠĠ ĠHO W _ MU CH Ġ+ Ġ" ĠTEXT ĠNOT ĠNULL ," Ġ+ ĊĠĠĠĠĠĠĠ ĠIF _ BU Y Ġ+ Ġ" ĠINT )") ĊĊĊĊ Ċ // TAB AL A ĠPRO DU K TY Ċ const Ġval ĠSQL _ DELETE _ TABLE _ PRODUCT S = Ġ" DROP ĠTABLE ĠIF ĠEXISTS Ġ$ PRODUCT S _ TABLE _ NAME " ĊĊ Ċ // BA ZA ĠPRO DU K TO W Ċ const Ġval ĠSQL _ DELETE _ TABLE _ PRODUCT S _ DATABASE Ġ= Ġ" DROP ĠTABLE ĠIF ĠEXISTS Ġ$ PRODUCT S _ DATABASE _ TABLE _ NAME " Ċ Ċ // TAB EL A ĠDOT Y CZ AC A ĠLIST Y ĠZ AK U PO W Ċ const Ġval ĠSQL _ DELETE _ TABLE _ SH OP PING _ LIST Ġ= Ġ" DROP ĠTABLE ĠIF ĠEXISTS Ġ$ SH OP PING _ LIST _ TABLE _ NAME " ĊĊ Ċ class ĠData Base Handler ( context : ĠContext ): ĠSQLite Open Helper ( context , ĊĠĠĠ ĠDATABASE _ NAME , Ġnull , Ġ 1 ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( db : ĠSQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdb . exec SQL ( SQL _ CREATE _ TABLE _ PRODUCT S ) ĊĠĠĠĠĠĠĠ Ġdb . exec SQL ( SQL _ CREATE _ TABLE _ PRODUCT S _ DATABASE ) ĊĠĠĠĠĠĠĠ Ġdb . exec SQL ( SQL _ CREATE _ TABLE _ SH OP PING _ LIST ) ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Upgrade ( db : ĠSQLite Database , Ġold Version : ĠInt , Ġnew Version : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdb . exec SQL ( SQL _ DELETE _ TABLE _ PRODUCT S ) ĊĠĠĠĠĠĠĠ Ġdb . exec SQL ( SQL _ DELETE _ TABLE _ PRODUCT S _ DATABASE ) ĊĠĠĠĠĠĠĠ Ġdb . exec SQL ( SQL _ DELETE _ TABLE _ SH OP PING _ LIST ) ĊĠĠĠĠĠĠĠ ĠonCreate ( db ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinsert Data ( data : ĠString ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġthis . writable Database ĊĠĠĠĠĠĠĠ Ġvar Ġcv Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠ Ġcv . put ( ID _ PRODUCT , Ġdata ) ĊĠĠĠĠĠĠĠ Ġcv . put ( NAME _ PRODUCT , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Product ( product Ġ: ĠProduct ): Boolean ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb = this . writable Database ĊĠĠĠĠĠĠĠ Ġval Ġcv Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠ Ġcv . put ( ID _ PRODUCT , Ġ Ġproduct . id ) ĊĠĠĠĠĠĠĠ Ġcv . put ( NAME _ PRODUCT , Ġproduct . name Product ) ĊĠĠĠĠĠĠĠ Ġcv . put ( EXPI RATION _ DATE , Ġproduct . expiration Date ) ĊĠĠĠĠĠĠĠ Ġcv . put ( PUR CH ASE _ DATE , Ġproduct . purchase Date ) ĊĠĠĠĠĠĠĠ Ġcv . put ( QU ANT ITY , Ġproduct . quantity ) ĊĠĠĠĠĠĠĠ Ġcv . put ( TYPE , Ġproduct . type ) ĊĠĠĠĠĠĠĠ Ġcv . put ( E AN _ PRODUCT _ FROM _ DATABASE , Ġproduct . e an Code ) ĊĠĠĠĠĠĠĠ Ġcv . put ( AFTER _ EXPI RATION _ DATE , product . after Expiration Date ) ĊĠĠĠĠĠĠĠ Ġcv . put ( IS _ SELECTED , product . isSelected ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult = Ġdb . insert ( PRODUCT S _ TABLE _ NAME , Ġnull , Ġcv ) ĊĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġreturn Ġ! result . equals (- 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Database Product ( product Ġ: ĠDatabase Product ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb = this . writable Database ĊĠĠĠĠĠĠĠ Ġval Ġcv Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠ Ġcv . put ( NAME _ PRODUCT _ DATABASE , Ġproduct . name Product ) ĊĠĠĠĠĠĠĠ Ġ// cv . put ( ID _ PRODUCT _ DATABASE , Ġ Ġproduct . id ) ĊĠĠĠĠĠĠĠ Ġcv . put ( E AN _ QR _ CODE , Ġproduct . e an Code ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult = Ġdb . insert ( PRODUCT S _ DATABASE _ TABLE _ NAME , Ġnull , Ġcv ) ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġfun ĠgetAll Database Products (): ĠArrayList < Database Product > ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġall Products List = ĠArrayList < Database Product >() ĊĠĠĠĠĠĠĠ Ġval Ġdb = Ġreadable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġcursor = db . raw Query (" SELECT Ġ* ĠFROM Ġ$ PRODUCT S _ DATABASE _ TABLE _ NAME ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif ( cursor != Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( cursor . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid = Ġcursor . getString ( cursor . getColumnIndex ( ID _ PRODUCT _ DATABASE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname = cursor . getString ( cursor . getColumnIndex ( NAME _ PRODUCT _ DATABASE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe an Ġ= Ġcursor . getString ( cursor . getColumnIndex ( E AN _ QR _ CODE )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproduct Ġ= ĠDatabase Product ( id , Ġname , Ġe an ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Products List . add ( product ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} while Ġ( cursor . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġreturn Ġall Products List ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġget Database Product ( e an Code Ġ: ĠString ): ĠDatabase Product ? ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb = Ġreadable Database ĊĠĠĠĠĠĠĠ Ġval Ġcursor = db . raw Query (" SELECT Ġ* ĠFROM Ġ$ PRODUCT S _ DATABASE _ TABLE _ NAME ĠWHERE Ġ$ E AN _ QR _ CODE ='$ e an Code '", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif ( cursor != Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( cursor . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid = Ġcursor . getString ( cursor . getColumnIndex ( ID _ PRODUCT _ DATABASE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname = cursor . getString ( cursor . getColumnIndex ( NAME _ PRODUCT _ DATABASE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe an Ġ= Ġcursor . getString ( cursor . getColumnIndex ( E AN _ QR _ CODE )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDatabase Product ( id , Ġname , Ġe an ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Products (): ĠArrayList < Product > ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġall Products List = ĠArrayList < Product >() ĊĠĠĠĠĠĠĠ Ġval Ġdb = Ġreadable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġcursor = db . raw Query (" SELECT Ġ* ĠFROM Ġ$ PRODUCT S _ TABLE _ NAME ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif ( cursor != Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( cursor . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid = Ġcursor . getString ( cursor . getColumnIndex ( ID _ PRODUCT )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname = cursor . getString ( cursor . getColumnIndex ( NAME _ PRODUCT )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġcursor . getString ( cursor . getColumnIndex ( EXPI RATION _ DATE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpurchase Date Ġ= Ġcursor . getString ( cursor . getColumnIndex ( PUR CH ASE _ DATE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproduct Type = cursor . getString ( cursor . getColumnIndex ( TYPE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquantity Ġ= cursor . getString ( cursor . getColumnIndex ( QU ANT ITY )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe an Code Database Ġ= Ġcursor . getString ( cursor . getColumnIndex ( E AN _ PRODUCT _ FROM _ DATABASE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġafter Expiration Date Ġ= Ġcursor . getString ( cursor . getColumnIndex ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAFTER _ EXPI RATION _ DATE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Selected Ġ= Ġcursor . getString ( cursor . getColumnIndex ( IS _ SELECTED )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproduct Ġ= ĠProduct ( id , Ġname , Ġdate , Ġpurchase Date , Ġquantity , Ġproduct Type , Ġe an Code Database , after Expiration Date , isSelected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Products List . add ( product ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} while Ġ( cursor . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġreturn Ġall Products List ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġremove Product ( id : ĠString ): ĠBoolean ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb = this . writable Database ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . delete ( PRODUCT S _ TABLE _ NAME , Ġ"$ ID _ PRODUCT = ?", ĠarrayOf ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Quantity Of Products ( id : String , Ġquantity : ĠString ): Boolean { ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġthis . writable Database ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcv Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv . put ( QU ANT ITY , Ġquantity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . update ( PRODUCT S _ TABLE _ NAME , Ġcv , Ġ" ID _ PRODUCT Ġ= ?", ĠarrayOf ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate After Expiration Date ( id : String , bool : String ): Boolean { ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġthis . writable Database ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcv Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv . put ( AFTER _ EXPI RATION _ DATE , Ġbool ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . update ( PRODUCT S _ TABLE _ NAME , Ġcv , Ġ" ID _ PRODUCT Ġ= ?", ĠarrayOf ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Expiration Date ( id : String , Ġdate : ĠString ): Boolean { ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġthis . writable Database ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcv Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv . put ( EXPI RATION _ DATE , Ġdate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . update ( PRODUCT S _ TABLE _ NAME , Ġcv , Ġ" ID _ PRODUCT Ġ= ?", ĠarrayOf ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Is Selected ( id : String , Ġselected : ĠString ): Boolean { ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġthis . writable Database ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcv Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv . put ( IS _ SELECTED , Ġselected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . update ( PRODUCT S _ TABLE _ NAME , Ġcv , Ġ" ID _ PRODUCT Ġ= ?", ĠarrayOf ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġfind Product ( id : String ) Ġ: ĠProduct ? { ĊĠĠĠĠĠĠĠ Ġval Ġdb = Ġreadable Database ĊĠĠĠĠĠĠĠ Ġval Ġcursor = db . raw Query (" SELECT Ġ* ĠFROM Ġ$ PRODUCT S _ TABLE _ NAME ĠWHERE Ġ$ ID _ PRODUCT ='$ id '", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif ( cursor != Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( cursor . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid = Ġcursor . getString ( cursor . getColumnIndex ( ID _ PRODUCT )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname = cursor . getString ( cursor . getColumnIndex ( NAME _ PRODUCT )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Expiration Ġ= Ġcursor . getString ( cursor . getColumnIndex ( EXPI RATION _ DATE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Purchase Ġ= Ġcursor . getString ( cursor . getColumnIndex ( PUR CH ASE _ DATE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquantity Ġ= Ġcursor . getString ( cursor . getColumnIndex ( QU ANT ITY )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproduct Type = cursor . getString ( cursor . getColumnIndex ( TYPE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe an Code Database Ġ= Ġcursor . getString ( cursor . getColumnIndex ( E AN _ PRODUCT _ FROM _ DATABASE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġafter Expiration Date Ġ= Ġcursor . getString ( cursor . getColumnIndex ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAFTER _ EXPI RATION _ DATE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Selected Ġ= Ġcursor . getString ( cursor . getColumnIndex ( IS _ SELECTED )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠProduct ( id , Ġname , Ġdate Expiration , Ġdate Purchase , Ġquantity , Ġproduct Type , Ġe an Code Database , Ġafter Expiration Date , Ġis Selected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġin scre ase Quantity Of Products ( id : String , Ġcount : ĠString ): Boolean { ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġthis . writable Database ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcv Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv . put ( QU ANT ITY , Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . update ( PRODUCT S _ TABLE _ NAME , Ġcv , Ġ" ID _ PRODUCT Ġ= ?", ĠarrayOf ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Shopping Product ( shopping Product Ġ: ĠShop ping Product ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb = this . writable Database ĊĠĠĠĠĠĠĠ Ġval Ġcv Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠ Ġcv . put ( ID _ SH OP PING _ ITEM , Ġ Ġshopping Product . id ) ĊĠĠĠĠĠĠĠ Ġcv . put ( NAME _ SH OP PING _ ITEM , Ġshopping Product . name Shopping Product ) ĊĠĠĠĠĠĠĠ Ġcv . put ( HOW _ MU CH , Ġshopping Product . how M uch ) ĊĠĠĠĠĠĠĠ Ġcv . put ( TYPE _ SH OP PING _ ITEM , Ġshopping Product . type ) ĊĠĠĠĠĠĠĠ Ġcv . put ( IF _ BU Y , Ġshopping Product . if Buy ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult = Ġdb . insert ( SH OP PING _ LIST _ TABLE _ NAME , Ġnull , Ġcv ) ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Shopping List () Ġ: ArrayList < Shopping Product >{ ĊĊĠĠĠĠĠĠĠ Ġval Ġshopping List = ĠArrayList < Shopping Product >() ĊĠĠĠĠĠĠĠ Ġval Ġdb = Ġreadable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġcursor = db . raw Query (" SELECT Ġ* ĠFROM Ġ$ SH OP PING _ LIST _ TABLE _ NAME ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif ( cursor != Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( cursor . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid = Ġcursor . getString ( cursor . getColumnIndex ( ID _ SH OP PING _ ITEM )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname = cursor . getString ( cursor . getColumnIndex ( NAME _ SH OP PING _ ITEM )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhow M uch Ġ= Ġcursor . getString ( cursor . getColumnIndex ( HOW _ MU CH )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype = Ġcursor . getString ( cursor . getColumnIndex ( TYPE _ SH OP PING _ ITEM )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġif Buy Ġ= Ġ Ġcursor . getString ( cursor . getColumnIndex ( IF _ BU Y )). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshopping Product Ġ= ĠShop ping Product ( id , Ġname , Ġhow M uch , Ġtype , Ġ Ġif Buy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshopping List . add ( shopping Product ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} while Ġ( cursor . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġreturn Ġshopping List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Is Checked ( id : String ): Boolean { ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġthis . writable Database ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcv Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv . put ( IF _ BU Y , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . update ( SH OP PING _ LIST _ TABLE _ NAME , Ġcv , Ġ" ID _ SH OP PING _ ITEM Ġ= ?", ĠarrayOf ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate IsNot Checked ( id : String ): Boolean { ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġthis . writable Database ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcv Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv . put ( IF _ BU Y , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . update ( SH OP PING _ LIST _ TABLE _ NAME , Ġcv , Ġ" ID _ SH OP PING _ ITEM Ġ= ?", ĠarrayOf ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Database Products Names (): ĠArrayList < String > ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresults List = ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġval Ġdb = Ġreadable Database ĊĊĠĠĠĠĠĠĠ Ġval Ġcursor = db . raw Query (" SELECT Ġ* ĠFROM Ġ$ PRODUCT S _ DATABASE _ TABLE _ NAME ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif ( cursor != Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( cursor . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname = cursor . getString ( cursor . getColumnIndex ( NAME _ PRODUCT _ DATABASE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults List . add ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} while Ġ( cursor . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġreturn Ġresults List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Shopping Product ( id : ĠString ): ĠBoolean ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb = this . writable Database ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . delete ( SH OP PING _ LIST _ TABLE _ NAME , Ġ"$ ID _ SH OP PING _ ITEM = ?", ĠarrayOf ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊ Ċ } ĊĊ