package Ġbe . hu y ck . hu is energ ie logger . ViewModel ĊĊ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Environment Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġbe . hu y ck . hu is energ ie logger . mode llen . Regist rat ie Ge gevens Ċ import Ġcom . google . firebase . Timestamp Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . firestore . Document Snapshot Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġcom . google . firebase . firestore . Query Ċ import Ġjava . io . File Ċ import Ġjava . io . FileWriter Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Zone Offset Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠData ViewModel Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġval ĠTAG JE Ġ= Ġ" hu is energ ie logger . view model " ĊĠĠĠ Ġvar Ġbackup Op D it To est el Ġ= Ġfalse ĊĠĠĠ Ġvar ĠTe Up dat en Regist rat ie Ge gevens Ġ= Ġ 0 ĊĠĠĠ Ġlateinit Ġvar Ġbest and Ġ: ĠFile ĊĠĠĠ Ġprivate Ġvar Ġauth Ġ: ĠFirebase Auth ĊĠĠĠ Ġlateinit Ġvar Ġlast Visible Ġ: ĠDocument Snapshot ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" init Ġdoor lopen ") ĊĠĠĠĠĠĠĠ Ġauth Ġ= ĠFirebase Auth . getInstance () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġli jst Ġ= ĠArrayList < Regist rat ie Ge gevens >() ĊĊĠĠĠ Ġval Ġli jst Regist rat ie Ge gevens : ĠMutable LiveData < List < Regist rat ie Ge gevens >> Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMutable LiveData < List < Regist rat ie Ge gevens >>() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Data ( regist rat ie Ge gevens : ĠRegist rat ie Ge gevens ){ ĊĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" Data Ġing even Ġin Ġview model !") ĊĊĠĠĠĠĠĠĠ Ġli jst Regist rat ie Ge gevens . post Value ( lij st ) ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" ge bruik er Ġing e log d , Ġ... ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Ġ= ĠFirebase Fire store . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb _ user uid Ġ= Ġuser . uid . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ref Ġ= Ġdb . collection (" users "). document ( db _ user uid ). collection (" meet ge gevens ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġregist rat ie Ge gevens . firebase id Ġ= Ġdoc Ref . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġli jst . add ( 0 , regist rat ie Ge gevens ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Data Ġ= Ġhash Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" datum " Ġto ĠTimestamp ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregist rat ie Ge gevens . regist rat ied atum . to Epoch Second ( Zone Offset . UTC ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" meter wa ar de EL " Ġto Ġregist rat ie Ge gevens . meter wa ar de _ el , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" meter wa ar de GA " Ġto Ġregist rat ie Ge gevens . meter wa ar de _ ga , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" meter wa ar de WA " Ġto Ġregist rat ie Ge gevens . meter wa ar de _ wa , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" meter wa ar de PV " Ġto Ġregist rat ie Ge gevens . meter wa ar de _ pv ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdoc Ref . set ( doc Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" Document Snapshot Ġsuccessfully Ġwritten !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe Ġ-> ĠLog . w ( TAG JE , Ġ" Error Ġwriting Ġdocument ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" Ge en Ġgebruik er Ġing e log d , Ġni ets Ġge sch re ven !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( backup Op D it To est el ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSave Data Loc ally ( best and , regist rat ie Ge gevens ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" Data Ġlocal Ġop ge sl agen !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Data ( regist rat ie Ge gevens : ĠRegist rat ie Ge gevens ){ ĊĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" Data Ġup dat en Ġin Ġview model !") ĊĠĠĠĠĠĠĠ Ġli jst . remove ( regist rat ie Ge gevens ) ĊĠĠĠĠĠĠĠ Ġli jst Regist rat ie Ge gevens . post Value ( lij st ) ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" ge bruik er Ġing e log d , Ġ... ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Ġ= ĠFirebase Fire store . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb _ user uid Ġ= Ġuser . uid . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ref Ġ= Ġdb . collection (" users "). document ( db _ user uid ). collection (" meet ge gevens ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( regist rat ie Ge gevens . firebase id ). delete () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġ}// Log . d ( TAG JE , Ġ" Document Snapshot Ġsuccessfully Ġdeleted !") Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġ} Ġ// e Ġ-> ĠLog . w ( TAG JE , Ġ" Error Ġdeleting Ġdocument ", Ġe ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" Ge en Ġgebruik er Ġing e log d , Ġni ets Ġge sch re ven !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Data ( regist rat ie Ge gevens : ĠRegist rat ie Ge gevens ){ ĊĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" Data Ġup dat en Ġin Ġview model !") ĊĠĠĠĠĠĠĠ Ġli jst [ Te Up dat en Regist rat ie Ge gevens ] Ġ= Ġregist rat ie Ge gevens ĊĠĠĠĠĠĠĠ Ġli jst Regist rat ie Ge gevens . post Value ( lij st ) ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" ge bruik er Ġing e log d , Ġ... ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Ġ= ĠFirebase Fire store . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb _ user uid Ġ= Ġuser . uid . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdates data Ġ= Ġhash Map Of < String , ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" datum " Ġto ĠTimestamp ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregist rat ie Ge gevens . regist rat ied atum . to Epoch Second ( Zone Offset . UTC ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" meter wa ar de EL " Ġto Ġregist rat ie Ge gevens . meter wa ar de _ el , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" meter wa ar de GA " Ġto Ġregist rat ie Ge gevens . meter wa ar de _ ga , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" meter wa ar de WA " Ġto Ġregist rat ie Ge gevens . meter wa ar de _ wa , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" meter wa ar de PV " Ġto Ġregist rat ie Ge gevens . meter wa ar de _ pv ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ref Ġ= Ġdb . collection (" users "). document ( db _ user uid ). collection (" meet ge gevens ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( regist rat ie Ge gevens . firebase id ). update ( updates data ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġ}// Log . d ( TAG JE , Ġ" Document Snapshot Ġsuccessfully Ġupdate t !") Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġ}// e Ġ-> ĠLog . w ( TAG JE , Ġ" Error Ġupdating Ġdocument ", Ġe ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" Ge en Ġgebruik er Ġing e log d , Ġni ets Ġge sch re ven !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( backup Op D it To est el ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSave Data Loc ally ( best and , regist rat ie Ge gevens ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" Data Ġlocal Ġop ge sl agen !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Te Up dat en Regist rat ie Ge gevens (): ĠRegist rat ie Ge gevens Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġli jst [ Te Up dat en Regist rat ie Ge gevens ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Li jst Regist rat ie Ge gevens (): ĠLive Data < List < Regist rat ie Ge gevens >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġli jst Regist rat ie Ge gevens ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġlogin Ġstuff ĊĠĠĠ Ġfun Ġis There A User LoggedIn (): ĠBoolean { ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload next data () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" vol gende Ġset Ġdata Ġwordt Ġge lad en !") ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull Ġ&& Ġlast Visible Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Ġ= ĠFirebase Fire store . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb _ user uid Ġ= Ġuser . uid . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ref Ġ= Ġdb . collection (" users "). document ( db _ user uid ). collection (" meet ge gevens ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdoc Ref ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy (" datum ", ĠQuery . Direction . DESC ENDING ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start After ( last Visible ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. limit ( 3 1 ). get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . size ()> 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Visible Ġ= Ġresult . documents [ result . size () Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( document Ġin Ġresult ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ"${ document . id } Ġ=> Ġ${ document . data }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdat Ġ= Ġdocument . get (" datum ") Ġas ĠTimestamp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġel Ġ= Ġdocument . get (" meter wa ar de EL ") Ġas ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġga Ġ= Ġdocument . get (" meter wa ar de GA ") Ġas ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwa Ġ= Ġdocument . get (" meter wa ar de WA ") Ġas ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpv Ġ= Ġdocument . get (" meter wa ar de PV ") Ġas ĠDouble ĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreg ge g Ġ= ĠRegist rat ie Ge gevens ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDateTime . of Epoch Second ( dat . seconds , Ġ 0 , ĠZone Offset . UTC ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġga , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwa , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpv , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" reg ge gevens Ġ: Ġ${ reg ge g }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġli jst . add ( reg ge g ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġli jst Regist rat ie Ge gevens . post Value ( lij st ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ /* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġexception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" Error Ġgetting Ġdocuments : Ġ", Ġexception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload data ( Al les download en Ġ: ĠBoolean ){ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Ġ= ĠFirebase Fire store . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb _ user uid Ġ= Ġuser . uid . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġli jst . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ref Ġ= Ġdb . collection (" users "). document ( db _ user uid ). collection (" meet ge gevens ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Al les download en ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc Ref . orderBy (" datum ", ĠQuery . Direction . DESC ENDING ). get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . size ()> 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Visible Ġ= Ġresult . documents [ result . size () Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( document Ġin Ġresult ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ"${ document . id } Ġ=> Ġ${ document . data }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdat Ġ= Ġdocument . get (" datum ") Ġas ĠTimestamp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġel Ġ= Ġdocument . get (" meter wa ar de EL ") Ġas ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġga Ġ= Ġdocument . get (" meter wa ar de GA ") Ġas ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwa Ġ= Ġdocument . get (" meter wa ar de WA ") Ġas ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpv Ġ= Ġdocument . get (" meter wa ar de PV ") Ġas ĠDouble ĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreg ge g Ġ= ĠRegist rat ie Ge gevens ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDateTime . of Epoch Second ( dat . seconds , Ġ 0 , ĠZone Offset . UTC ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġga , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwa , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpv , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" reg ge gevens Ġ: Ġ${ reg ge g }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġli jst . add ( reg ge g ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġli jst Regist rat ie Ge gevens . post Value ( lij st ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ /* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġexception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" Error Ġgetting Ġdocuments : Ġ", Ġexception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc Ref . orderBy (" datum ", ĠQuery . Direction . DESC ENDING ). limit ( 1 0 ). get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . size ()> 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Visible Ġ= Ġresult . documents [ result . size () Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( document Ġin Ġresult ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ"${ document . id } Ġ=> Ġ${ document . data }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdat Ġ= Ġdocument . get (" datum ") Ġas ĠTimestamp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġel Ġ= Ġdocument . get (" meter wa ar de EL ") Ġas ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġga Ġ= Ġdocument . get (" meter wa ar de GA ") Ġas ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwa Ġ= Ġdocument . get (" meter wa ar de WA ") Ġas ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpv Ġ= Ġdocument . get (" meter wa ar de PV ") Ġas ĠDouble ĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreg ge g Ġ= ĠRegist rat ie Ge gevens ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDateTime . of Epoch Second ( dat . seconds , Ġ 0 , ĠZone Offset . UTC ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġga , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwa , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpv , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" reg ge gevens Ġ: Ġ${ reg ge g }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġli jst . add ( reg ge g ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġli jst Regist rat ie Ge gevens . post Value ( lij st ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ /* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġexception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG JE , Ġ" Error Ġgetting Ġdocuments : Ġ", Ġexception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear data (){ ĊĠĠĠĠĠĠĠ Ġli jst . clear () ĊĠĠĠĠĠĠĠ Ġli jst Regist rat ie Ge gevens . post Value ( lij st ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġexport ĊĠĠĠ Ġfun Ġexport ToFile ( file Ġ: ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// load data ( true ) ĊĠĠĠĠĠĠĠ Ġ// Ġproble em Ġmet Ġdelay ... Ġvolgende Ġcode Ġmoet Ġeven Ġw acht en ĊĠĠĠĠĠĠĠ Ġvar Ġfile Writer : ĠFile Writer ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbest and Ġ= Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġaan v ull en Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( best and . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaan v ull en Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i ( TAG JE , Ġ" ge gevens Ġaan v ull en Ġin Ġbest a and Ġbest and ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i ( TAG JE , Ġ" nie uw Ġbest and Ġmaken ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer Ġ= ĠFile Writer ( best and , Ġaan v ull en ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog . i ( TAG JE , Ġbest and . absolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog . i ( TAG JE , Ġbest and . length (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( best and . length () Ġ< Ġ 5 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠCSV _ HEADER Ġ= Ġ" Me et moment , Ele k tric ite it , Gas , Water , PV " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ( CSV _ HEADER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i ( TAG JE , Ġ" header Ġtoe ge vo eg d ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġli jst iterator Ġ= Ġli jst . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġli jst iterator . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformatted Ġ= Ġit . regist rat ied atum . format ( DateTime Formatter . ISO _ DATE _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ( formatted ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append (',') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ( it . meter wa ar de _ el . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append (',') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ( it . meter wa ar de _ ga . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append (',') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ( it . meter wa ar de _ wa . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append (',') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ( it . meter wa ar de _ pv . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i ( TAG JE , Ġ" ge gevens Ġa ange v uld ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . e ( TAG JE , Ġ" Writing ĠCSV Ġerror ") ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer !!. flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . e ( TAG JE , Ġ" file Ġclosing Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġsch ri jf Ġ 1 Ġwaar de ĊĠĠĠ Ġfun ĠSave Data Loc ally ( file Ġ: ĠFile , Ġregist rat ie Ge gevens : Regist rat ie Ge gevens Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfile Writer : ĠFile Writer ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbest and Ġ= Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġaan v ull en Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( best and . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaan v ull en Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i ( TAG JE , Ġ" ge gevens Ġaan v ull en Ġin Ġbest a and Ġbest and ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i ( TAG JE , Ġ" nie uw Ġbest and Ġmaken ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer Ġ= ĠFile Writer ( best and , Ġaan v ull en ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i ( TAG JE , Ġbest and . absolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog . i ( TAG JE , Ġbest and . length (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( best and . length () Ġ< Ġ 5 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠCSV _ HEADER Ġ= Ġ" Me et moment , Ele k tric ite it , Gas , Water , PV " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ( CSV _ HEADER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i ( TAG JE , Ġ" header Ġtoe ge vo eg d ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġli jst iterator Ġ= Ġli jst . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// lij st iterator . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformatted Ġ= Ġregist rat ie Ge gevens . regist rat ied atum . format ( DateTime Formatter . ISO _ DATE _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ( formatted ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append (',') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ( regist rat ie Ge gevens . meter wa ar de _ el . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append (',') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ( regist rat ie Ge gevens . meter wa ar de _ ga . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append (',') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ( regist rat ie Ge gevens . meter wa ar de _ wa . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append (',') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ( regist rat ie Ge gevens . meter wa ar de _ pv . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i ( TAG JE , Ġ" ge gevens Ġa ange v uld ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ//} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . e ( TAG JE , Ġ" Writing ĠCSV Ġerror ") ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer !!. flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Writer . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . e ( TAG JE , Ġ" file Ġclosing Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠImport Data FromFile ( file : ĠFile ){ ĊĊĠĠĠĠĠĠĠ Ġvar Ġline : ĠString ? ĊĠĠĠĠĠĠĠ Ġ// var Ġfile Reader : ĠBufferedReader ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġvar Ġfile Reader Ġ= Ġfile . buffered Reader () ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠRead ĠCSV Ġheader ĊĠĠĠĠĠĠĠ Ġfile Reader . readLine () ĊĊĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġfile Ġline Ġby Ġline Ġstarting Ġfrom Ġthe Ġsecond Ġline ĊĠĠĠĠĠĠĠ Ġline Ġ= Ġfile Reader . readLine () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( line Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtokens Ġ= Ġline . split (",") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformatter Ġ= ĠDateTime Formatter . of Pattern (" dd / MM / yyyy ĠHH : mm ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tokens . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreg data Ġ= ĠRegist rat ie Ge gevens ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDateTime . parse ( tokens [ 0 ], Ġformatter ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtokens [ 1 ]. run Ġ{ Ġto Double () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtokens [ 2 ]. run Ġ{ Ġto Double () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtokens [ 3 ]. run Ġ{ Ġto Double () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtokens [ 4 ]. run Ġ{ Ġto Double () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Data ( reg data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġfile Reader . readLine () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} Ċ } ĊĊ