/** Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 1 9 ĠT ob ia ĠDe ĠKon in ck Ċ Ġ* Ċ Ġ* ĠĠ Ġ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 Ġbe . led fan . geojson dsl Ċ Ċ import Ġcom . be ust . kl ax on .* Ċ import Ġjava . util .* Ċ Ċ class ĠFeature Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġgeometry : ĠGeometry ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġgeometry Collection : ĠGeometry Collection ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġproperties Ġ= ĠHashMap < String , ĠAny >() ĊĠĠĠ Ġprivate Ġvar Ġid : ĠAny ? Ġ= Ġnull Ġ// ĠInt Ġor ĠString ĊĊĠĠĠ Ġfun ĠtoJson (): ĠJsonObject Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjson Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs : ĠMutable List < Pair < String , ĠAny ? >> Ġ= Ġmutable ListOf (" type " Ġto Ġ" Feature ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġid ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . add (" id " Ġto Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( geometry Collection Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . add (" geometry " Ġto Ġgeometry Collection ?. toJson ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . add (" geometry " Ġto Ġgeometry ?. toJson ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . add (" properties " Ġto Ġobj ( properties . map Ġ{ ĠPair ( it . key , Ġit . value ) Ġ})) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj ( args ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Geometry ( geometry Factory : ĠGeometry Factory . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( geometry Ġ!= Ġnull Ġ|| Ġgeometry Collection Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Geometry (" Feature Ġalready Ġcontains Ġa Ġgeometry Ġor Ġgeometry collection ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġgeometry Ġ= ĠGeometry Factory (). apply ( geometry Factory ). geometry ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Geometry Collection ( geometry Collection Factory : ĠGeometry Collection Factory . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( geometry Ġ!= Ġnull Ġ|| Ġgeometry Collection Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Geometry (" Feature Ġalready Ġcontains Ġa Ġgeometry Ġor Ġgeometry collection ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġgeometry Collection Ġ= ĠGeometry Collection Factory (). apply ( geometry Collection Factory ). geometry Collection ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġthe Kl ax on Json Ġ= Ġobject Ġ: ĠK l ax on Json Ġ{} ĊĊĠĠĠ Ġfun Ġ< T > Ġwith Property ( key : ĠString , Ġjson : ĠK l ax on Json . () Ġ-> ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( properties . containsKey ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (""" Feature Ġalready Ġhas Ġa Ġproperty Ġwith Ġkey Ġ"$ key """ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġproperties [ key ] Ġ= Ġthe Kl ax on Json . run Ġ{ Ġjson () Ġ} Ġas ĠJson Base ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Property ( key : ĠString , Ġvalue : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( properties . containsKey ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (""" Feature Ġalready Ġhas Ġa Ġproperty Ġwith Ġkey Ġ"$ key """ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġproperties [ key ] Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Id ( id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . id Ġ= Ġid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Id ( id : ĠNumber ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . id Ġ= Ġid ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ fun Ġfeature ( feature : ĠFeature . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠFeature Ġ{ ĊĠĠĠ Ġwith ( Feature ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . apply ( feature ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} Ċ } Ċ