package Ġnl . am ster dam . open mon ument end ag . mon ument s . source . db Ċ Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . provider . Base Columns Ċ import Ġnl . am ster dam . open mon ument end ag . data . Mon ument Ċ import Ġnl . am ster dam . open mon ument end ag . data . Mon ument Location Ċ import Ġnl . am ster dam . open mon ument end ag . data . Mon ument Opening Time Ċ import Ġnl . am ster dam . open mon ument end ag . data . Mon ument Photo Ċ import Ġnl . am ster dam . open mon ument end ag . source . DataSource Ċ import Ġnl . am ster dam . open mon ument end ag . source . DataSource Search Query Ċ Ċ class ĠMon ument Db DataSource ( val Ġdb Helper : ĠMon ument Db Open Helper ) Ġ: ĠDataSource < Mon ument , ĠMon ument > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll (): ĠList < Mon ument > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb Helper . readable Database . raw Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġ" Ġ+ ĠDb DataSource Contract . Mon ument . COLUMNS _ ALL . map { Ġ"${ Db DataSource Contract . Mon ument . TABLE _ NAME }.${ it } "} . join ToString (",") Ġ+ Ġ", Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Db DataSource Contract . Saved Mon ument . TABLE _ NAME }.${ Db DataSource Contract . Saved Mon ument . COLUMN _ MON UMENT _ ID } ĠAS Ġsaved Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FROM Ġ${ Db DataSource Contract . Mon ument . TABLE _ NAME } Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" LEFT ĠJOIN Ġ${ Db DataSource Contract . Saved Mon ument . TABLE _ NAME } ĠON Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Db DataSource Contract . Mon ument . TABLE _ NAME }.${ Db DataSource Contract . Mon ument . COLUMN _ ID } Ġ= Ġ${ Db DataSource Contract . Saved Mon ument . TABLE _ NAME }.${ Db DataSource Contract . Saved Mon ument . COLUMN _ MON UMENT _ ID } Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcursor . iterator Ġ{ Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMon ument ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getInt ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ID )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ TITLE )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ADDRESS )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ TIMES )). split ("| "). map Ġ{ ĠMon ument Opening Time ( it . split (", ")[ 0 ], Ġit . split (", ")[ 1 ], Ġit . split (", ")[ 2 ]) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ENTRY )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getInt ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ACC ES SI BLE )) Ġ== Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getInt ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ REFRESH MENTS )) Ġ== Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ YEAR )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ARCH ITE CT )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ DESCRIPTION )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ FACT )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ S IGHT S )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ACTIV ITIES )). split ("| "). filter Ġ{ Ġit . isNotBlank () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ EVENT )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ LINK )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ PH OT OS )). split ("| "). map Ġ{ ĠMon ument Photo ( it . split (", ")[ 0 ], Ġit . split (", ")[ 1 ]) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMon ument Location ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getDouble ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ LOCATION _ LAT IT UDE )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getDouble ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ LOCATION _ LONG IT UDE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getInt ( c . getColumnIndex (" saved ")) Ġ!= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getLong ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ FETCH ED _ TIMESTAMP )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. also Ġ{ Ġcursor . close () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget One ( id : ĠInt ): ĠMon ument Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb Helper . readable Database . raw Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġ" Ġ+ ĠDb DataSource Contract . Mon ument . COLUMNS _ ALL . map { Ġ"${ Db DataSource Contract . Mon ument . TABLE _ NAME }.${ it } "} . join ToString (",") Ġ+ Ġ", Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Db DataSource Contract . Saved Mon ument . TABLE _ NAME }.${ Db DataSource Contract . Saved Mon ument . COLUMN _ MON UMENT _ ID } ĠAS Ġsaved Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FROM Ġ${ Db DataSource Contract . Mon ument . TABLE _ NAME } Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" LEFT ĠJOIN Ġ${ Db DataSource Contract . Saved Mon ument . TABLE _ NAME } ĠON Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Db DataSource Contract . Mon ument . TABLE _ NAME }.${ Db DataSource Contract . Mon ument . COLUMN _ ID } Ġ= Ġ${ Db DataSource Contract . Saved Mon ument . TABLE _ NAME }.${ Db DataSource Contract . Saved Mon ument . COLUMN _ MON UMENT _ ID } Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" WHERE Ġ${ Db DataSource Contract . Mon ument . TABLE _ NAME }.${ Db DataSource Contract . Mon ument . COLUMN _ ID } Ġ= Ġ?", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( id . toString ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( cursor . count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMon ument . EMPTY ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . moveTo First () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMon ument ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getInt ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ID )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ TITLE )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ADDRESS )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ TIMES )). split ("| "). map Ġ{ ĠMon ument Opening Time ( it . split (", ")[ 0 ], Ġit . split (", ")[ 1 ], Ġit . split (", ")[ 2 ]) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ENTRY )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getInt ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ACC ES SI BLE )) Ġ== Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getInt ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ REFRESH MENTS )) Ġ== Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ YEAR )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ARCH ITE CT )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ DESCRIPTION )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ FACT )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ S IGHT S )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ACTIV ITIES )). split ("| "). filter { Ġit . isNotBlank () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ EVENT )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ LINK )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ PH OT OS )). split ("| "). map Ġ{ ĠMon ument Photo ( it . split (", ")[ 0 ], Ġit . split (", ")[ 1 ]) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMon ument Location ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getDouble ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ LOCATION _ LAT IT UDE )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getDouble ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ LOCATION _ LONG IT UDE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getInt ( cursor . getColumnIndex (" saved ")) Ġ!= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getLong ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ FETCH ED _ TIMESTAMP )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. also Ġ{ Ġcursor . close () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinsert One ( item : ĠMon ument ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdb Helper . writable Database . replace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDb DataSource Contract . Mon ument . TABLE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContent Values (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Base Columns ._ ID , Ġitem . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ TITLE , Ġitem . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ ADDRESS , Ġitem . address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ TIMES , Ġitem . times . map Ġ{ array Of ( it . date , Ġit . open , Ġit . close ). join ToString (",") }. join ToString ("| ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ ENTRY , Ġitem . entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ ACC ES SI BLE , Ġitem . accessible ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ REFRESH MENTS , Ġitem . refresh ments ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ YEAR , Ġitem . year ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ ARCH ITE CT , Ġitem . architect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ DESCRIPTION , Ġitem . description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ FACT , Ġitem . fact ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ S IGHT S , Ġitem . s ights ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ ACTIV ITIES , Ġitem . activity Infos . join ToString ("| ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ EVENT , Ġitem . event ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ LINK , Ġitem . link ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ PH OT OS , Ġitem . photos . map { ĠarrayOf ( it . main , Ġit . thumb ). join ToString (",") }. join ToString ("| ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ LOCATION _ LAT IT UDE , Ġitem . location . latitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ LOCATION _ LONG IT UDE , Ġitem . location . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ FETCH ED _ TIMESTAMP , Ġitem . f etched Timestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult Ġ!= Ġ- 1 L ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠWe Ġuse Ġthe Ġreplace Ġmethod Ġhere Ġto Ġallow Ġfor Ġupdates ĊĠĠĠ Ġ// Ġfrom Ġthe Ġserver Ġwithout Ġremoving Ġthe Ġdata Ġfirst . ĊĠĠĠ Ġ// ĠThis Ġrelies Ġon ĠIDs Ġprovided Ġfrom Ġthe Ġserver Ġto Ġbe Ġstable . ĊĠĠĠ Ġoverride Ġfun Ġinsert Many ( items : ĠList < Mon ument >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= Ġdb Helper . writable Database ĊĊĠĠĠĠĠĠĠ Ġdb . beginTransaction () ĊĊĠĠĠĠĠĠĠ Ġitems . forEach Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . replace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDb DataSource Contract . Mon ument . TABLE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContent Values (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Base Columns ._ ID , Ġitem . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ TITLE , Ġitem . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ ADDRESS , Ġitem . address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ TIMES , Ġitem . times . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( it . date , Ġit . open , Ġit . close ). join ToString (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join ToString ("| ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ ENTRY , Ġitem . entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ ACC ES SI BLE , Ġitem . accessible ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ REFRESH MENTS , Ġitem . refresh ments ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ YEAR , Ġitem . year ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ ARCH ITE CT , Ġitem . architect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ DESCRIPTION , Ġitem . description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ FACT , Ġitem . fact ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ S IGHT S , Ġitem . s ights ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ ACTIV ITIES , Ġitem . activity Infos . join ToString ("| ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ EVENT , Ġitem . event ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ LINK , Ġitem . link ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ PH OT OS , Ġitem . photos . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( it . main , Ġit . thumb ). join ToString (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join ToString ("| ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ LOCATION _ LAT IT UDE , Ġitem . location . latitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ LOCATION _ LONG IT UDE , Ġitem . location . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Db DataSource Contract . Mon ument . COLUMN _ FETCH ED _ TIMESTAMP , Ġitem . f etched Timestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdb . set Transaction Successful () ĊĠĠĠĠĠĠĠ Ġdb . end Transaction () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsearch Query ( search Query : ĠDataSource Search Query ): ĠList < Mon ument > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfuzzy String Ġ= Ġ"% " Ġ+ Ġsearch Query . search String . replace (" Ġ", Ġ"% ") Ġ+ Ġ"% " ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb Helper . readable Database . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDb DataSource Contract . Mon ument . TABLE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDb DataSource Contract . Mon ument . COLUMNS _ ALL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDb DataSource Contract . Mon ument . COLUMN _ TITLE Ġ+ Ġ" Ġlike Ġ? ĠOR Ġ" Ġ+ ĠDb DataSource Contract . Mon ument . COLUMN _ ADDRESS Ġ+ Ġ" Ġlike Ġ?", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( fuzzy String , Ġfuzzy String ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDb DataSource Contract . Mon ument . COLUMN _ ID Ġ+ Ġ" Ġasc " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( cursor . count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . iterator Ġ{ c Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMon ument ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getInt ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ID )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ TITLE )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ADDRESS )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ TIMES )). split ("| "). map Ġ{ ĠMon ument Opening Time ( it . split (", ")[ 0 ], Ġit . split (", ")[ 1 ], Ġit . split (", ")[ 2 ]) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ENTRY )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getInt ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ACC ES SI BLE )) Ġ== Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getInt ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ REFRESH MENTS )) Ġ== Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ YEAR )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ARCH ITE CT )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ DESCRIPTION )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ FACT )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ S IGHT S )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ ACTIV ITIES )). split ("| "). filter Ġ{ Ġit . isNotBlank () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ EVENT )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ LINK )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( cursor . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ PH OT OS )). split ("| "). map Ġ{ ĠMon ument Photo ( it . split (", ")[ 0 ], Ġit . split (", ")[ 1 ]) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMon ument Location ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getDouble ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ LOCATION _ LAT IT UDE )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getDouble ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ LOCATION _ LONG IT UDE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getLong ( c . getColumnIndex ( Db DataSource Contract . Mon ument . COLUMN _ FETCH ED _ TIMESTAMP )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ Ġcursor . close () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠCursor . iterator ( caller : Ġ( cursor : ĠCursor ) Ġ-> ĠT ): ĠList < T > Ġ{ ĊĠĠĠ Ġif Ġ( count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠArrayList < T >( count ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġmove To First () ĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( caller . invoke ( this @ iterator )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove To Next () ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ(! is After Last ) ĊĠĠĠ Ġ} Ċ }