/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "). Ċ Ġ* ĠYou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠA Ġcopy Ġof Ġthe ĠLicense Ġis Ġlocated Ġat Ċ Ġ* Ċ Ġ* Ġ Ġhttp :// aws . amazon . com / apache 2 . 0 Ċ Ġ* Ċ Ġ* Ġor Ġin Ġthe Ġ" license " Ġfile Ġaccompanying Ġthis Ġfile . ĠThis Ġfile Ġ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 . amplify framework . geo . location . configuration Ċ Ċ import Ġcom . amplify framework . geo . models . Map Style Ċ import Ġorg . json . JSONObject Ċ Ċ /** Ċ Ġ* ĠConfiguration Ġoptions Ġfor Ġspecifying Ġavailable Ġmap Ġresources . Ċ Ġ*/ Ċ data Ġclass ĠMaps Configuration Ġinternal Ġconstructor ( ĊĠĠĠ Ġval Ġitems : ĠCollection < Map Style >, ĊĠĠĠ Ġval Ġdefault : ĠMap Style Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġa Ġbuilder Ġobject Ġfor Ġmaps Ġconfiguration . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġfresh Ġconfiguration Ġbuilder Ġinstance . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġbuilder (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBuilder () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġa Ġbuilder Ġobject Ġpopulated Ġfrom ĠJSON . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġpopulated Ġbuilder Ġinstance . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġfrom Json ( config Json : ĠJSONObject ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBuilder ( config Json ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuilder Ġclass Ġfor Ġconstructing Ġ[ Maps Configuration ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠBuilder Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġconfig Json : ĠJSONObject ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġitems : ĠCollection < Map Style > Ġ= Ġempty Set () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdefault : ĠMap Style ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Json ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Items Ġ= Ġget JSONObject ( Config . ITEMS . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Items . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaps Ġ= ĠHashSet < Map Style >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( map Name Ġin Ġit . keys ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstyle Ġ= Ġit . getJSONObject ( map Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getString ( Config . STYLE . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmaps . add ( Map Style ( map Name , Ġstyle )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġmaps ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Map Ġ= Ġopt String ( Config . DEFAULT . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! default Map . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Ġ= Ġitems . first OrNull Ġ{ Ġit . map Name Ġ== Ġdefault Map Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġitems ( items : ĠCollection < Map Style >) Ġ= Ġapply Ġ{ Ġthis . items Ġ= Ġitems Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġdefault ( default : ĠMap Style ) Ġ= Ġapply Ġ{ Ġthis . default Ġ= Ġdefault Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġbuild () Ġ= ĠMaps Configuration ( items , Ġdefault Ġ?: Ġitems . first ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġenum Ġclass ĠConfig ( val Ġkey : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠContains Ġa Ġcollection Ġof Ġmaps Ġand Ġtheir Ġcorresponding Ġstyle . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠITE MS (" items "), ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠContains Ġname Ġof Ġthe Ġdefault Ġmap . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠDEFAULT (" default "), ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠContains Ġstyle Ġname Ġfor Ġa Ġgiven Ġmap . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠSTYLE (" style ") ĊĠĠĠ Ġ} Ċ }