package Ġcom . d ass her . form ulario . data . db Ċ Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . database . sqlite . SQLite Database Ċ import Ġcom . d ass her . form ulario . ui . view model . User Ċ Ċ class ĠDao User Ġ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġvar Ġuser : ĠUser ĊĠĠĠ Ġvar Ġlist : Ġjava . util . ArrayList < User > ĊĠĠĠ Ġvar Ġsqlite : ĠSQLite Database ĊĠĠĠ Ġvar Ġdb : ĠString Ġ= Ġ" D BU sers " ĊĠĠĠ Ġvar Ġtable : ĠString Ġ= Ġ" create Ġtable Ġif Ġnot Ġexists Ġusers ( id Ġinteger Ġprimary Ġkey Ġauto increment , Ġname Ġtext , Ġs urname Ġtext , Ġuser Ġtext , Ġpassword Ġtext )" ĊĊĠĠĠ Ġfun Ġinsert User ( users : ĠUser ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( search ( users . user ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcv Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv . put (" name ", Ġusers . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv . put (" surname ", Ġusers . surname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv . put (" user ", Ġusers . user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcv . put (" password ", Ġusers . password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsqlite . insert (" users ", Ġnull , Ġcv ) Ġ> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsearch ( user : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġlist Ġ= Ġselect Users () ĊĠĠĠĠĠĠĠ Ġfor Ġ( us Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( us . user Ġ== Ġuser ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġx ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġselect Users (): Ġjava . util . ArrayList < User > Ġ{ ĊĠĠĠĠĠĠĠ Ġlist . clear () ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġjava . util . ArrayList < User >() ĊĠĠĠĠĠĠĠ Ġval Ġcr : Cursor Ġ= Ġsqlite . raw Query (" select Ġ* Ġfrom Ġusers ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( cr Ġ!= Ġnull Ġ&& Ġcr . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġu Ġ= ĠUser () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġu . id Ġ= Ġcr . getInt ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġu . name Ġ= Ġcr . getString ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġu . surname Ġ= Ġcr . getString ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġu . user Ġ= Ġcr . getString ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġu . password Ġ= Ġcr . getString ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( u ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( cr . moveTo Next ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlogin ( u : ĠString , Ġp : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġa Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġcr : Cursor Ġ= Ġsqlite . raw Query (" select Ġ* Ġfrom Ġusers ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( cr Ġ!= Ġnull Ġ&& Ġcr . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cr . getString ( 3 ) Ġ== Ġu Ġ&& Ġcr . getString ( 4 ) Ġ== Ġp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( cr . moveTo Next ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġa ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetUser ( u : ĠString , Ġp : ĠString ): ĠUser ? Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Ġ= Ġselect Users () ĊĠĠĠĠĠĠĠ Ġfor Ġ( us Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( us . user Ġ== Ġu Ġ&& Ġus . password Ġ== Ġp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġus ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetUser ById ( id : ĠInt ): ĠUser ? Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Ġ= Ġselect Users () ĊĠĠĠĠĠĠĠ Ġfor Ġ( us Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( us . id Ġ== Ġid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġus ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsqlite Ġ= Ġcontext . open OrCreate Database ( db , ĠContext . MODE _ PRIVATE , Ġnull ) ĊĠĠĠĠĠĠĠ Ġsqlite . exec SQL ( table ) ĊĠĠĠĠĠĠĠ Ġuser Ġ= ĠUser () ĊĠĠĠĠĠĠĠ Ġlist Ġ= Ġjava . util . ArrayList < User >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate User ( user : ĠUser ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcv Ġ= ĠContent Values () ĊĠĠĠĠĠĠĠ Ġcv . put (" name ", Ġuser . name ) ĊĠĠĠĠĠĠĠ Ġcv . put (" surname ", Ġuser . surname ) ĊĠĠĠĠĠĠĠ Ġcv . put (" user ", Ġuser . user ) ĊĠĠĠĠĠĠĠ Ġcv . put (" password ", Ġuser . password ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsqlite . update (" users ", Ġcv , Ġ" id =" Ġ+ Ġuser . id , Ġnull ) Ġ> Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete User ( id : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsqlite . delete (" users ", Ġ" id =$ id ", Ġnull ) Ġ> Ġ 0 ĊĠĠĠ Ġ} Ċ }