package Ġau . gov . d xa . controller Ċ Ċ import Ġau . gov . d xa . definition . Definition Ċ import Ġau . gov . d xa . definition . Definition Service Ċ import Ġau . gov . d xa . dictionary . Dictionary Service Ċ import Ġau . gov . d xa . relationship . Relationship Service Ċ import Ġau . gov . d xa . relationship . Result Ċ import Ġau . gov . d xa . search . Search DTO Ċ import Ġau . gov . d xa . syn onym . Syn onym Service Ċ import Ġau . gov . d xa . syntax . Syntax Service Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . stereotype . Controller Ċ import Ġorg . springframework . web . bind . annotation . Model Attribute Ċ import Ġorg . springframework . web . bind . annotation . PathVariable Ċ import Ġorg . springframework . web . bind . annotation . RequestMapping Ċ import Ġorg . springframework . web . bind . annotation . RequestParam Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjava . net . URL ĊĊ Ċ @ Controller Ċ class ĠController Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdefinition Service : ĠDefinition Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdictionary Service : ĠDictionary Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsyn onym Service : ĠSyn onym Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsyntax Service : ĠSyntax Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrelationship Service : ĠRelationship Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġval Ġrequest : ĠHttpServletRequest ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ RequestMapping ("/") ĊĠĠĠ Ġfun Ġsearch Submit (@ Model Attribute Ġsearch : ĠSearch DTO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel : ĠMutable Map < String , ĠAny >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RequestParam ( defaultValue Ġ= Ġ" 2 0 ") Ġsize : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RequestParam ( defaultValue Ġ= Ġ" 0 ") Ġpage : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RequestParam ( defaultValue Ġ= Ġ" false ") Ġraw : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch String Ġ= Ġsearch . getQuery () Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= Ġget Filter Model ( search ) ĊĠĠĠĠĠĠĠ Ġmodel [" search "] Ġ= Ġ ĠSearch DTO () ĊĠĠĠĠĠĠĠ Ġmodel [" domains "] Ġ= Ġdefinition Service . get Domains () ĊĠĠĠĠĠĠĠ Ġmodel [" filter "] Ġ= Ġfilter ĊĠĠĠĠĠĠĠ Ġif ( search String Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" show Results "] Ġ= Ġ" true " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" queryString "] Ġ= Ġsearch String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġdefinition Service . search ( search String , Ġsearch . get Domain Search Query (), page , Ġsize , Ġraw , Ġsearch . get Ignore Syn onym ( false )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Result Ġ= ĠPage Result ( results . results , ĠURL Helper (). get URL ( request ), Ġresults . how Many Results ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Results Page ( page Result , Ġmodel , Ġsearch String , filter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( results . used Syn onyms Ġ!= Ġnull ) Ġmodel [" used Syn onyms "] Ġ= Ġresults . used Syn onyms ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ" search " ĊĠĠĠ Ġ} ĊĊĊĊĊ ĊĊĠĠĠ Ġ@ RequestMapping ("/ help ") ĊĠĠĠ Ġfun Ġhelp (): String Ġ= Ġ" help " ĊĊĠĠĠ Ġ@ RequestMapping ("/ browse ") ĊĠĠĠ Ġinternal Ġfun Ġdefinitions (@ Model Attribute Ġsearch : ĠSearch DTO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel : ĠMutable Map < String , ĠAny >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RequestParam ( defaultValue Ġ= Ġ" 2 0 ") Ġsize : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RequestParam ( defaultValue Ġ= Ġ" 0 ") Ġpage : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch String Ġ= Ġsearch . getQuery () Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= Ġget Filter Model ( search ) ĊĠĠĠĠĠĠĠ Ġmodel [" search "] Ġ= ĠSearch DTO () ĊĠĠĠĠĠĠĠ Ġmodel [" filter "] Ġ= Ġfilter ĊĠĠĠĠĠĠĠ Ġif ( search String Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" action "] Ġ= Ġ Ġ"/ browse " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" show Results "] Ġ= Ġ" true " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" queryString "] Ġ= Ġsearch String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġdefinition Service . search ( search String , Ġsearch . get Domain Search Query (), page , Ġsize , Ġfalse , Ġsearch . get Ignore Syn onym ( false )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Result Ġ= ĠPage Result ( results . results , ĠURL Helper (). get URL ( request ), Ġresults . how Many Results ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Results Page ( page Result , Ġmodel , Ġsearch String , Ġfilter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( results . used Syn onyms Ġ!= Ġnull ) Ġmodel [" used Syn onyms "] Ġ= Ġresults . used Syn onyms ĊĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Result Ġ= ĠPage Result ( definition Service . get Definitions ( page , Ġsize ), ĠURL Helper (). get URL ( request ), Ġdefinition Service . how Many Definitions ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Results Page ( page Result , Ġmodel , filter = filter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ" browse " ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ RequestMapping ("/ browse /{ domain }") ĊĠĠĠ Ġinternal Ġfun Ġdefinitions For Domain ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Model Attribute Ġsearch : ĠSearch DTO , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel : ĠMutable Map < String , ĠAny >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RequestParam ( defaultValue Ġ= Ġ" 2 0 ") Ġsize : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RequestParam ( defaultValue Ġ= Ġ" 0 ") Ġpage : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ PathVariable Ġdomain : String ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch String Ġ= Ġsearch . getQuery () Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġdomain Name Ġ= Ġdefinition Service . get Domain By Ac ronym ( domain )?. name Ġ?: Ġ" No Ġdomain Ġcalled Ġ'$ domain ' Ġ" ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= Ġget Filter Model ( search ) ĊĠĠĠĠĠĠĠ Ġif ( domain Name Ġ!= Ġ"") Ġmodel [" domain Name "] Ġ= Ġdomain Name ĊĠĠĠĠĠĠĠ Ġmodel [" search "] Ġ= ĠSearch DTO () ĊĠĠĠĠĠĠĠ Ġmodel [" filter "] Ġ= Ġfilter ĊĠĠĠĠĠĠĠ Ġif ( search String Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" action "] Ġ= Ġ"/ browse /$ domain " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" show Results "] Ġ= Ġ Ġ" true " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" queryString "] Ġ= Ġsearch String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġdefinition Service . search ( search String , Ġdomain , page , Ġsize , false , search . get Ignore Syn onym ( false )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Result Ġ= ĠPage Result ( results . results , ĠURL Helper (). get URL ( request ), Ġresults . how Many Results ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Results Page ( page Result , Ġmodel , Ġsearch String , Ġfilter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( results . used Syn onyms Ġ!= Ġnull ) Ġmodel [" used Syn onyms "] Ġ= Ġresults . used Syn onyms ĊĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Result Ġ= ĠPage Result ( definition Service . get Definitions For Domain ( page , Ġsize , Ġdomain ), ĠURL Helper (). get URL ( request ), Ġdefinition Service . how Many Definitions In Domain ( domain )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Results Page ( page Result , Ġmodel , Ġfilter = filter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ" browse " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate Results Page ( page Result : ĠPage Result < Definition >, Ġmodel : ĠMutable Map < String , ĠAny >, ĠqueryString Ġ: ĠString Ġ= Ġ"", Ġfilter : ĠFilters ? Ġ= Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefinitions Ġ= Ġpage Result . content ĊĠĠĠĠĠĠĠ Ġif Ġ(! page Result . is First Page ()) Ġmodel [" prev Page "] Ġ= Ġ Ġpage Result . the Prev Page ( false ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! page Result . is Last Page ()) Ġmodel [" next Page "] Ġ= Ġpage Result . the Next Page ( false ) ĊĠĠĠĠĠĠĠ Ġmodel [" pageNumber "] Ġ= Ġpage Result . pageNumber ĊĠĠĠĠĠĠĠ Ġmodel [" page URL "] Ġ= Ġ Ġpage Result . uri ĊĠĠĠĠĠĠĠ Ġmodel [" last Page Number "] Ġ= Ġpage Result . getTotal Pages () ĊĠĠĠĠĠĠĠ Ġmodel [" total Results "] Ġ= Ġpage Result . numberOf Elements ĊĠĠĠĠĠĠĠ Ġmodel [" spell Check "] Ġ= Ġif Ġ( page Result . numberOf Elements Ġ== Ġ 0 ) Ġdictionary Service . get Dictionary Correction ( queryString , Ġfilter ) Ġelse Ġ"" ĊĊĠĠĠĠĠĠĠ Ġval Ġpages To The Left Ġ= Ġpage Result . pages To The Left () ĊĠĠĠĠĠĠĠ Ġif Ġ( pages To The Left . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" left Page "] Ġ= Ġpages To The Left [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" left Page Number "] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( pages To The Left . size Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" left Page "] Ġ= Ġpages To The Left [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" left Page Number "] Ġ= Ġpage Result . pageNumber Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" first Page "] Ġ= Ġpage Result . the First Page () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpages To The Right Ġ= Ġpage Result . pages To The Right () ĊĠĠĠĠĠĠĠ Ġif Ġ( pages To The Right . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" right Page "] Ġ= Ġpages To The Right [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" right Page Number "] Ġ= Ġpage Result . getTotal Pages () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( pages To The Right . size Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" right Page "] Ġ= Ġpages To The Right [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" right Page Number "] Ġ= Ġpage Result . pageNumber Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" last Page "] Ġ= Ġpage Result . the Last Page () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġval ĠmaxLength Ġ= Ġ 2 0 0 ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠView Definition ( val Ġname : ĠString , Ġval Ġdomain : ĠString , Ġval Ġdefinition : ĠString , Ġval Ġidentifier : ĠString , Ġval Ġstatus : ĠString , Ġval Ġtype : String ) ĊĊĠĠĠĠĠĠĠ Ġval Ġview Def ns Ġ= Ġmutable ListOf < View Definition >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( definition Ġin Ġdefinitions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġlocal Href Ġ= Ġdefinition . identifier . replace (" http :// api . gov . au ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Href Ġ= Ġdefinition . identifier . split ("/ "). take Last ( 2 ). join ToString ("/") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġshort Def Ġ= Ġdefinition . definition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( short Def . length Ġ> ĠmaxLength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshort Def Ġ= Ġshort Def . substring ( 0 , ĠmaxLength ) Ġ+ Ġ" Ġ..." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Def ns . add ( View Definition ( definition . name , Ġdefinition . domain , Ġshort Def , Ġlocal Href , Ġdefinition . status , Ġdefinition . type )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmodel [" definitions "] Ġ= Ġview Def ns ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Filter Model ( search : ĠSearch DTO ): Filters Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġignore Syn Ġ= Ġsearch . get Ignore Syn onym ( false ) ĊĠĠĠĠĠĠĠ Ġval Ġfilter Dom Ġ= Ġsearch . get Domain List ( false ) Ġ?: ĠlistOf () ĊĠĠĠĠĠĠĠ Ġval Ġdomains Ġ= Ġdefinition Service . get Domains () ĊĠĠĠĠĠĠĠ Ġval Ġl Ġ: ĠMutable List < au . gov . d xa . definition . Domain > Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠ Ġdomains . forEach { if Ġ( filter Dom . contains ( it . ac ronym )){ Ġl . add ( it ) Ġ}} ĊĠĠĠĠĠĠĠ Ġreturn ĠFilters ( l , ignore Syn ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ RequestMapping ("/ definition /{ domain }/{ id }") ĊĠĠĠ Ġinternal Ġfun Ġdetail ( model : ĠMutable Map < String , ĠAny >, Ġ@ PathVariable Ġdomain : String , Ġ@ PathVariable Ġid : String ) Ġ: ĠString { ĊĊĠĠĠĠĠĠĠ Ġval Ġidentifier Ġ= Ġ""" http :// api . gov . au / definition /$ domain /$ id """ ĊĠĠĠĠĠĠĠ Ġval Ġdefinition Ġ= Ġdefinition Service . get Definition ( identifier ) ĊĊĠĠĠĠĠĠĠ Ġmodel [" name "] Ġ= Ġdefinition . name ĊĠĠĠĠĠĠĠ Ġmodel [" domain "] Ġ= Ġdefinition . domain ĊĠĠĠĠĠĠĠ Ġmodel [" status "] Ġ= Ġdefinition . status ĊĠĠĠĠĠĠĠ Ġmodel [" definition "] Ġ= Ġdefinition . definition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("\ n "," < br /> ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("\ t "," & nbsp ;& nbsp ;& nbsp ;& nbsp ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" Ġ Ġ", Ġ"& nbsp ;& nbsp ; ") ĊĊĠĠĠĠĠĠĠ Ġmodel [" guid ance "] Ġ= Ġdefinition . guid ance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("\ n "," < br /> ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("\ t "," & nbsp ;& nbsp ;& nbsp ;& nbsp ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" Ġ Ġ", Ġ"& nbsp ;& nbsp ; ") ĊĊĠĠĠĠĠĠĠ Ġmodel [" identifier "] Ġ= Ġdefinition . identifier ĊĠĠĠĠĠĠĠ Ġmodel [" href "] Ġ= Ġdefinition . identifier . replace (" http :// api . gov . au "," ") ĊĠĠĠĠĠĠĠ Ġmodel [" usage "] Ġ= Ġdefinition . usage ĊĠĠĠĠĠĠĠ Ġmodel [" api "] Ġ= Ġdefinition . identifier . replace (" http :// api . gov . au / definitions / "," http :// api . gov . au / definitions / api /") ĊĠĠĠĠĠĠĠ Ġif ( definition . type Ġ!= Ġ"") Ġmodel [" type "] Ġ= Ġdefinition . type ĊĠĠĠĠĠĠĠ Ġif ( definition . source URL Ġ!= Ġ"") Ġmodel [" source "] Ġ= Ġdefinition . source URL ĊĠĠĠĠĠĠĠ Ġmodel [" type Values "] Ġ= Ġdefinition . values ĊĠĠĠĠĠĠĠ Ġmodel [" type Fac ets "] Ġ= Ġdefinition . fac ets ĊĊĠĠĠĠĠĠĠ Ġval Ġrelations Ġ= Ġrelationship Service . get Relations ( definition . identifier ) ĊĠĠĠĠĠĠĠ Ġif ( relations . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" relation Ship ImageUrl "] Ġ= Ġmodel [" api "]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// model [" relation Ship ImageUrl "] Ġ= ĠURL Helper (). convert URL ( request , model [" api "]. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrelations With Definitions Ġ= Ġadd Definition To Relationship Results ( relations ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" relationships "] Ġ= Ġrelations With Definitions ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsyntax es Ġ= Ġsyntax Service . get Syntax ( identifier ) ĊĠĠĠĠĠĠĠ Ġif ( syntax es Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel [" syntax es "] Ġ= Ġsyntax es . syntax es ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ" detail " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Definition To Relationship Results ( relations : ĠMap < String , ĠList < Result >> ): ĠMutable Map < String , ĠMutable List < Result With Definition >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrelations With Definitions Ġ= Ġmutable Map Of < String , ĠMutable List < Result With Definition >>() ĊĠĠĠĠĠĠĠ Ġfor Ġ( relation Name Ġin Ġrelations . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefinitions Ġ= Ġmutable ListOf < Result With Definition >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( result Ġin Ġrelations [ relation Name ] !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefinition Ġ= Ġdefinition Service . get Definition ( result . to ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew URL Ġ= ĠURL Helper (). convert URL ( request , Ġresult . to ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew URL Ġ= Ġ"/ definition " Ġ+ ĠRegex (" .* definition "). replace ( new URL ," ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Result Ġ= ĠResult ( result . meta , Ġresult . direction , Ġnew URL , Ġdefinition . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefinitions . add ( Result With Definition ( new Result , Ġdefinition )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelations With Definitions [ relation Name ] Ġ= Ġdefinitions ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġrelations With Definitions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ RequestMapping ("/ syn onyms ") ĊĠĠĠ Ġinternal Ġfun Ġsyn onyms ( model : ĠMutable Map < String , ĠAny > Ġ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġmodel [" syn onyms "] Ġ= Ġsyn onym Service . orig Syn onyms ĊĠĠĠĠĠĠĠ Ġreturn Ġ" syn onyms " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠResult With Definition ( var Ġresult : ĠResult , Ġval Ġdefinition : ĠDefinition ) Ċ Ċ } Ċ class ĠFilters ( val ĠDom ains : Mutable List < au . gov . d xa . definition . Domain >, Ġval ĠIgnore Syn onym : ĠBoolean ){ Ċ Ċ } Ċ