/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 Ġal vin 0 3 1 9 Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġme . al vin 0 3 1 9 . ne is api . school Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġme . al vin 0 3 1 9 . ne is api . request . Request Ċ import Ġme . al vin 0 3 1 9 . ne is api . types . School District List Ċ import Ġme . al vin 0 3 1 9 . ne is api . types . School Type Ċ import Ġme . al vin 0 3 1 9 . ne is api . util . search . Data Body Ċ Ċ object ĠSchool Search Ġ{ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġval Ġresult : ĠMutable Map < School District List , ĠMutable Map < String , ĠMutable List < School Se ar ched >>> Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġsearch ( name : ĠString , Ġedu : ĠSchool District List , Ġrefresh : ĠBoolean Ġ= Ġfalse ): ĠList < School Se ar ched > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( result . get Or Put ( edu ) Ġ{ Ġmutable Map Of () Ġ}. containsKey ( name ) Ġ&& Ġ! refresh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult [ edu ]?. get ( name ) !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfetch Data ( name , Ġedu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsearch Results ( name : ĠString , Ġcode : ĠSchool District List ): ĠMutable List < School Se ar ched > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠRequest . create Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" spr _ cc m _ cm 0 1 _ 1 0 0 . ws ", Ġcode , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" k ra Org Nm " Ġto Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( response . status Line . statusCode Ġ!= Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġresponse . entity . content . read All Bytes (). decode ToString () ĊĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= ĠObjectMapper () ĊĊĠĠĠĠĠĠĠ Ġval Ġsearch Result Ġ= Ġmapper . readValue ( body , ĠData Body :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsearched List : ĠMutable List < School Se ar ched > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( search Result . result ?. status Ġ!= Ġ" success ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsearched List ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsearch Result . result SV O ?. org D VO List ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearched List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSchool Se ar ched ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . org Code Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSchool Type . from Int ( it . sch ul Cr se Sc Code ?. uppercase () Ġ?: Ġ" 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . k ra Org Nm Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . zip Ad res Ġ?: Ġ" ì£¼ ìĨĮ ë¥¼ Ġì° ¾ ìĿĦ ĠìĪĺ ĠìĹĨ ìĬµëĭĪëĭ¤ ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsearched List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Data ( name : ĠString , Ġedu : ĠSchool District List ): ĠList < School Se ar ched > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomplete : ĠMutable List < School Se ar ched > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( edu Ġ== ĠSchool District List . ALL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchool District List . values (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= ĠSchool District List . ALL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Results ( name , Ġit ). forEach Ġ{ Ġres Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomplete . add ( res ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomplete ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . get Or Put ( edu ) Ġ{ Ġmutable Map Of () Ġ} [ name ] Ġ= Ġsearch Results ( name , Ġedu ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ edu ]?. get ( name ) !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ