package Ġorg . ds np . activity content . builder Ċ Ċ import Ġorg . ds np . activity content . exception . ValidationException Ċ import Ġorg . ds np . activity content . model . Activity Content Location Ċ import Ġorg . ds np . activity content . model . Concrete Activity Content Location Ċ Ċ /** Ċ Ġ* ĠBuilder Ġfor Ġcreating Ġ[ Activity Content Location ] Ġinstances . Ċ Ġ* ĠSee Ġ[ DS NP ĠSpec ]( https :// spec . ds np . org / Activity Content / Associated / Attachments # location ) Ġfor Ġdetails . Ċ Ġ* Ċ Ġ* Ġ@ property Ġname ĠThe Ġname Ġof Ġthe Ġlocation Ċ Ġ*/ Ċ class ĠLocation Builder ( ĊĠĠĠ Ġprivate Ġval Ġname : ĠString Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġaccuracy : ĠFloat ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġalt itude : ĠFloat ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlatitude : ĠFloat ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlongitude : ĠFloat ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġradius : ĠFloat ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġunits : ĠActivity Content Location . Unit ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġadditional Fields Ġ= Ġmutable Map Of < String , ĠAny >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġaccuracy Ġof Ġthe Ġcoordinates Ġas Ġa Ġpercentage . Ġ( e . g . Ġ" 9 4 . 0 " Ġmeans Ġ" 9 4 . 0 % Ġaccurate "). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġaccuracy ĠThe Ġaccuracy Ġof Ġthe Ġcoordinates Ġas Ġa Ġpercentage . Ġ( e . g . Ġ" 9 4 . 0 " Ġmeans Ġ" 9 4 . 0 % Ġaccurate "). ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ[ Location Builder ] Ġobject Ġto Ġbe Ġused Ġfor Ġchaining Ġmethod Ġcalls . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwith Accuracy ( accuracy : ĠFloat ): ĠLocation Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . accuracy Ġ= Ġaccuracy ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġalt itude Ġof Ġthe Ġlocation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġalt itude ĠThe Ġalt itude Ġof Ġthe Ġlocation . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ[ Location Builder ] Ġobject Ġto Ġbe Ġused Ġfor Ġchaining Ġmethod Ġcalls . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwith Alt itude ( altitude : ĠFloat ): ĠLocation Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . altitude Ġ= Ġalt itude ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġlatitude Ġof Ġthe Ġlocation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlatitude ĠThe Ġlatitude Ġof Ġthe Ġlocation . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ[ Location Builder ] Ġobject Ġto Ġbe Ġused Ġfor Ġchaining Ġmethod Ġcalls . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwith Latitude ( latitude : ĠFloat ): ĠLocation Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . latitude Ġ= Ġlatitude ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġlongitude Ġof Ġthe Ġlocation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlongitude ĠThe Ġlongitude Ġof Ġthe Ġlocation . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ[ Location Builder ] Ġobject Ġto Ġbe Ġused Ġfor Ġchaining Ġmethod Ġcalls . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwith Longitude ( longitude : ĠFloat ): ĠLocation Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . longitude Ġ= Ġlongitude ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġradius Ġof Ġthe Ġlocation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġradius ĠThe Ġradius Ġof Ġthe Ġlocation . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ[ Location Builder ] Ġobject Ġto Ġbe Ġused Ġfor Ġchaining Ġmethod Ġcalls . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwith Radius ( radius : ĠFloat ): ĠLocation Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . radius Ġ= Ġradius ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġunits Ġfor Ġ[ radius ] Ġand Ġ[ altitude ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġunits ĠThe Ġunits Ġfor Ġ[ radius ] Ġand Ġ[ altitude ]. ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ[ Location Builder ] Ġobject Ġto Ġbe Ġused Ġfor Ġchaining Ġmethod Ġcalls . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwith Units ( units : ĠActivity Content Location . Unit ): ĠLocation Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . units Ġ= Ġunits ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġan Ġadditional Ġfield Ġthat Ġwill Ġbe Ġadded Ġto Ġthe Ġ[ Activity Content Location ] Ġobject Ġwhen Ġit Ġis Ġconverted Ġto ĠJSON . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠThe Ġname Ġof Ġthe Ġfield Ġthat Ġwill Ġbe Ġused Ġwhen Ġconverting Ġit Ġto ĠJSON . ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠThe Ġvalue Ġof Ġthe Ġfield Ġthat Ġwill Ġbe Ġused Ġwhen Ġconverting Ġit Ġto ĠJSON . ĠValues Ġcan Ġbe Ġof Ġtype Ġ[ String ], Ġ[ Int ], Ġ[ Double ], Ġ[ Boolean ], Ġ[ List ], Ġor Ġa Ġcustom Ġtype . ĠIf Ġit 's Ġa Ġcustom Ġtype , Ġmake Ġsure ĠGson Ġcan Ġconvert Ġit Ġto ĠJSON . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ[ Location Builder ] Ġobject Ġto Ġbe Ġused Ġfor Ġchaining Ġmethod Ġcalls . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Additional Field ( name : ĠString , Ġvalue : ĠAny ): ĠLocation Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . additional Fields [ name ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġadditional Ġfields Ġthat Ġwill Ġbe Ġadded Ġto Ġthe Ġ[ Activity Content Location ] Ġobject Ġwhen Ġit Ġis Ġconverted Ġto ĠJSON . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġadditional Fields ĠA Ġmap Ġthat Ġmaps Ġfield Ġnames Ġto Ġfield Ġvalues Ġfor Ġadditional Ġfields . ĠThose Ġadditional Ġfields Ġwill Ġbe Ġused Ġwhen Ġconverting Ġthe Ġ[ Activity Content Location ] Ġobject Ġto ĠJSON . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ[ Location Builder ] Ġobject Ġto Ġbe Ġused Ġfor Ġchaining Ġmethod Ġcalls . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Additional Fields ( additional Fields : ĠMap < String , ĠAny >): ĠLocation Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġadditional Fields . forEach Ġ{ Ġ( field , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . additional Fields [ field ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠValid ates Ġand Ġbuilds Ġthe Ġ[ Activity Content Location ] Ġinstance Ġusing Ġthe Ġconfigured Ġvalues . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġconfigured Ġ[ Activity Content Location ] Ġinstance . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( ValidationException :: class ) ĊĠĠĠ Ġfun Ġbuild (): ĠActivity Content Location Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠConcrete Activity Content Location ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccuracy , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalt itude , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatitude , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlongitude , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunits , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Fields Ġ= Ġadditional Fields ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġlocation . validate () ĊĠĠĠĠĠĠĠ Ġreturn Ġlocation ĊĠĠĠ Ġ} Ċ }