/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 Ġbr . com . od il ton jun ior . android dev challenge . data Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ Ċ class ĠStore ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġprivate Ġval ĠmContext Ġ= Ġcontext ĊĠĠĠ Ġprivate Ġvar Ġm Pet List Ġ= Ġmutable ListOf < Pet >() ĊĠĠĠ Ġprivate Ġval Ġm JsonValue Ġ= Ġget JsonValue () ĊĠĠĠ Ġprivate Ġval Ġm Description List Ġ= Ġget Array (" descriptions ") ĊĠĠĠ Ġprivate Ġval Ġm Short Description List Ġ= Ġget Array (" short Descriptions ") ĊĠĠĠ Ġprivate Ġval Ġm Bre edList Ġ= Ġget Array (" bre eds ") ĊĠĠĠ Ġprivate Ġval Ġm Name List Ġ= Ġget Array (" names ") ĊĠĠĠ Ġprivate Ġvar Ġm ImageList Ġ= ĠgetImage List () ĊĊĠĠĠ Ġprivate Ġfun Ġget Array ( name : ĠString ): ĠArray < Any > Ġ= ĊĠĠĠĠĠĠĠ Ġm JsonValue . get JSONArray ( name ). as Array () ĊĊĠĠĠ Ġprivate Ġfun Ġget JsonValue (): ĠJSONObject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠinputStream : ĠInputStream Ġ= ĠmContext . assets . open (" values . json ") ĊĠĠĠĠĠĠĠ Ġval Ġsize : ĠInt Ġ= ĠinputStream . available () ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( size ) ĊĠĠĠĠĠĠĠ ĠinputStream . read ( buffer ) ĊĠĠĠĠĠĠĠ ĠinputStream . close () ĊĠĠĠĠĠĠĠ Ġval Ġmy Json Ġ= ĠString ( buffer ) ĊĠĠĠĠĠĠĠ Ġreturn ĠJSONObject ( my Json ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetImage List (): ĠMutable List < Bitmap > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimage List Ġ= ĠmContext . assets . list (" photos ") ĊĠĠĠĠĠĠĠ Ġvar ĠinputStream : ĠInputStream ĊĠĠĠĠĠĠĠ Ġval Ġbitmap List Ġ= Ġempty List < Bitmap >(). to Mutable List () ĊĠĠĠĠĠĠĠ Ġimage List ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream Ġ= ĠmContext . assets . open (" photos /$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap Factory . decode Stream ( inputStream ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap List . add ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbitmap List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠJSONArray . as Array (): ĠArray < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠArray ( this . length ()) Ġ{ Ġthis [ it ] Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Pet List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPet ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" pet $ i ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġm Name List . random () Ġas ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpet Type Ġ= ĠPet Type . Dog , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsex Ġ= ĠS ex . values (). random (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb reed Ġ= Ġm Bre edList . random () Ġas ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshort Description Ġ= Ġm Short Description List . random () Ġas ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġm Description List . random () Ġas ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= Ġm ImageList . random () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Pet List (): ĠList < Pet > Ġ= Ġm Pet List . toList () ĊĊĠĠĠ Ġfun Ġget Pet ( pet Id : ĠString ) Ġ= Ġm Pet List . find Ġ{ Ġit . id Ġ== Ġpet Id Ġ} Ċ } Ċ