/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠGoogle ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . tang ji . qa . battery log . database Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Database Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . Room Database Ċ import Ġandroidx . sqlite . db . Support SQLite Database Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* ĠThis Ġis Ġthe Ġbackend . ĠThe Ġdatabase . ĠThis Ġused Ġto Ġbe Ġdone Ġby Ġthe ĠOpen Helper . Ċ Ġ* ĠThe Ġfact Ġthat Ġthis Ġhas Ġvery Ġfew Ġcomments Ġemp has izes Ġits Ġcool ness . Ċ Ġ*/ Ċ @ Database ( entities Ġ= Ġ[ Battery Info :: class ], Ġversion Ġ= Ġ 1 ) Ċ abstract Ġclass ĠB attery Info Database Ġ: ĠRoom Database () Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġbattery Info Dao (): ĠB attery Info Dao ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠINSTANCE : ĠB attery Info Database ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Database ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope : ĠCor outine Scope ĊĠĠĠĠĠĠĠ Ġ): ĠB attery Info Database Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġthe ĠINSTANCE Ġis Ġnot Ġnull , Ġthen Ġreturn Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġit Ġis , Ġthen Ġcreate Ġthe Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠINSTANCE Ġ?: Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠRoom . database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB attery Info Database :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" battery _ info _ database " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠW ip es Ġand Ġre builds Ġinstead Ġof Ġmigr ating Ġif Ġno ĠMigration Ġobject . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMigration Ġis Ġnot Ġpart Ġof Ġthis Ġc odel ab . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fallback To Dest ruct ive Migration () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Callback ( Word Database Callback ( scope )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ= Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġreturn Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġclass ĠWord Database Callback ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġscope : ĠCor outine Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠRoom Database . Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠOverride Ġthe ĠonCreate Ġmethod Ġto Ġpopulate Ġthe Ġdatabase . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ( db : ĠSupport SQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( db ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġyou Ġwant Ġto Ġkeep Ġthe Ġdata Ġthrough Ġapp Ġrestart s , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcomment Ġout Ġthe Ġfollowing Ġline . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE ?. let Ġ{ Ġdatabase Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Database ( database . battery Info Dao ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPopulate Ġthe Ġdatabase Ġin Ġa Ġnew Ġcoroutine . ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġyou Ġwant Ġto Ġstart Ġwith Ġmore Ġwords , Ġjust Ġadd Ġthem . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġpopulate Database ( battery Info Dao : ĠB attery Info Dao ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġapp Ġwith Ġa Ġclean Ġdatabase Ġevery Ġtime . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNot Ġneeded Ġif Ġyou Ġonly Ġpopulate Ġon Ġcreation . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbattery Info Dao . delete All () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// var Ġbattery Info Ġ= ĠB attery Info ( 0 , 0 , 0 , false , 0 , 0 , 0 , 0 , 0 , 0 ," ", ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// battery Info Dao . insert ( battery Info ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ