package Ġcom . s ake book . android . library . zip ang u Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġorg . json . JSONArray Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġs ak em otos h iny a Ġon Ġ 1 6 / 0 2 / 2 0 . Ċ Ġ*/ Ċ Ċ object ĠZip ang u Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Zip ang u " ĊĠĠĠ Ġprivate Ġvar Ġmutable Pref ect ures : ĠMutable List < Pref ecture > Ġ= Ġarray ListOf () ĊĠĠĠ Ġprivate Ġval Ġpref ect ures : ĠList < Pref ecture > Ġby Ġlazy Ġ{ Ġmutable Pref ect ures Ġ} ĊĠĠĠ Ġprivate Ġvar Ġdummy Pref ecture : ĠPref ecture Ġ= ĠPref ecture ( 0 , Ġ" çľ Į å¤ĸ ", Ġ" çľ Į å¤ĸ ", ĠSegment . None ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitialize Ġwith Ġcustom Ġdummy Ġpref ecture . ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ@ param Ġdefault Pref ecture Ġdefault Ġpref ecture ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġ@ Jvm Static Ġfun Ġbeginning ( context : ĠContext , Ġdefault Pref ecture : ĠPref ecture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdummy Pref ecture Ġ= Ġdefault Pref ecture ĊĠĠĠĠĠĠĠ Ġbeginning ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitialize . ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġ@ Jvm Static Ġfun Ġbeginning ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mutable Pref ect ures . size Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Already Ġbeginning ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpref ect ures Json Str Ġ= ĠResource Access . getResource ( context , Ġ" pref ect ures . json ") ĊĠĠĠĠĠĠĠ Ġval Ġjson Array Ġ= ĠJSONArray ( pref ect ures Json Str ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. json Array . length () Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġjson Array . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Pref ect ures . add ( Pref ecture ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġobj . getInt (" code "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġobj . getString (" name "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarea Ġ= Ġobj . getString (" area "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsegment Ġ= Ġwhen Ġ( obj . opt String (" segment ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSegment . North . name Ġ-> ĠSegment . North ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSegment . East . name Ġ-> ĠSegment . East ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSegment . West . name Ġ-> ĠSegment . West ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSegment . Ok in awa . name Ġ-> ĠSegment . Ok in awa ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠThrowable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet ĠPref ecture Ġwith Ġcode ĊĠĠĠĠ Ġ* Ġ@ param Ġcode ĊĠĠĠĠ Ġ* Ġ@ return ĠPref ecture ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġ@ Jvm Static Ġfun Ġcode ( code : ĠInt ): ĠPref ecture Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpref ect ures . filter Ġ{ Ġit . code Ġ== Ġcode Ġ}. first OrNull () ?: Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" code Ġrange Ġis Ġ 1 Ġto Ġ 4 7 . Ġcurrent Ġ$ code ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdummy Pref ecture ĊĠĠĠĠĠĠĠ Ġ} () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet ĠPref ecture Ġwith Ġname ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĊĠĠĠĠ Ġ* Ġ@ return ĠPref ecture ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġ@ Jvm Static Ġfun Ġname ( name : ĠString ): ĠPref ecture Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpref ect ures . filter Ġ{ Ġit . name Ġ== Ġname Ġ}. first OrNull () ?: Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ"$ name Ġis Ġnot Ġexist .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdummy Pref ecture ĊĠĠĠĠĠĠĠ Ġ} () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet ĠPref ect ures Ġwith ĠSegment ĊĠĠĠĠ Ġ* Ġ@ param Ġsegment ĊĠĠĠĠ Ġ* Ġ@ return ĠList < Pref ecture > ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġ@ Jvm Static Ġfun Ġsegment ( segment : ĠSegment ): ĠList < Pref ecture > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpref ect ures . filter Ġ{ Ġit . segment Ġ== Ġsegment Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet ĠPref ect ures Ġwith ĠArea ĊĠĠĠĠ Ġ* Ġ@ param Ġarea ĊĠĠĠĠ Ġ* Ġ@ return ĠList < Pref ecture > ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġ@ Jvm Static Ġfun Ġarea ( area : ĠArea ): ĠList < Pref ecture > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpref ect ures . filter Ġ{ Ġit . area Ġ== Ġarea . name Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġall ĠPref ect ures ĊĠĠĠĠ Ġ* Ġ@ return ĠList < Pref ecture > ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġ@ Jvm Static Ġfun Ġall (): ĠList < Pref ecture > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpref ect ures ĊĠĠĠ Ġ} Ċ Ċ }