package Ġorg . ost el co . diameter . util Ċ Ċ import Ġorg . j diameter . api . Av p Ċ import Ġorg . mob ic ents . diameter . dictionary . Av p Dictionary Ċ import Ġorg . mob ic ents . diameter . dictionary . Av p Representation Ċ import Ġorg . ost el co . diameter . getLogger Ċ import Ġorg . ost el co . diameter . util . Av p Type . ADDRESS Ċ import Ġorg . ost el co . diameter . util . Av p Type . IDENTITY Ċ import Ġorg . ost el co . diameter . util . Av p Type . OCT ET _ STRING Ċ import Ġorg . ost el co . diameter . util . Av p Type . UTF 8 STRING Ċ Ċ object ĠA vp Type Dictionary Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġby Ġget Logger () ĊĊĠĠĠ Ġprivate Ġval Ġav p Rep Map : ĠMutable Map < Int , ĠA vp Type ?> Ġ= ĠHashMap () ĊĠĠĠ Ġprivate Ġval Ġav p TypeMap : ĠMutable Map < String , ĠA vp Type ?> Ġ= ĠHashMap () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA vp Dictionary . INSTANCE . parse Dictionary ( dictionary Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA vp Rep . values (). forEach Ġ{ Ġav p Rep Map [ it . av p Code ] Ġ= Ġit . av p Type Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA vp Type . values (). forEach Ġ{ Ġav p TypeMap [ it . label ] Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Failed Ġto Ġinit ĠA vp Type Dictionary ", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdictionary Path (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġconfig Path : ĠString ? Ġ= ĠSystem . getenv (" CONFIG _ FOLDER ") ĊĠĠĠĠĠĠĠ Ġif Ġ( config Path Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Path Ġ= Ġ" config " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġconfig Path Ġ+ Ġ"/ dictionary . xml " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetType ( av p : ĠA vp ): ĠA vp Type ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġav p Type : ĠA vp Type ? Ġ= Ġav p Rep Map [ av p . code ] ĊĊĠĠĠĠĠĠĠ Ġif Ġ( av p Type Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġneed Ġto Ġknow Ġthe Ġdata Ġtype Ġof Ġthe Ġgiven ĠAV P Ġso Ġthat Ġwe Ġcall Ġright Ġmethod Ġto Ġfetch Ġthe Ġvalue . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMetadata Ġabout ĠAV P Ġis Ġlookup Ġinto Ġa Ġdictionary . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġav p Rep : ĠA vp Representation ? Ġ= ĠA vp Dictionary . INSTANCE . get Av p ( av p . code , Ġav p . vendor Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġlookup Ġreturns Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( av p Rep Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġav p Rep Ġ= ĠA vp Dictionary . INSTANCE . get Av p ( av p . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( av p Rep Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" AV P Ġ${ av p . code } Ġmissing Ġin Ġdictionary ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . trace (" Type ( str ): Ġ${ av p Rep . type }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġav p Type Ġ= Ġav p TypeMap [ av p Rep . type ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġav p Type ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠA vp Type ( val Ġlabel : ĠString ) Ġ{ ĊĠĠĠ ĠADDRESS (" Address "), ĊĠĠĠ ĠIDENTITY (" Identity "), ĊĠĠĠ ĠURI (" URI "), ĊĠĠĠ ĠFLOAT 3 2 (" Float 3 2 "), ĊĠĠĠ ĠFLOAT 6 4 (" Float 6 4 "), ĊĠĠĠ ĠGRO U PED (" Group ed "), ĊĠĠĠ ĠINTEGER 3 2 (" Integer 3 2 "), ĊĠĠĠ ĠINTEGER 6 4 (" Integer 6 4 "), ĊĠĠĠ ĠO CT ET _ STRING (" Oct et String "), ĊĠĠĠ ĠRAW (" Raw "), ĊĠĠĠ ĠRAW _ DATA (" RawData "), ĊĠĠĠ ĠTIME (" Time "), ĊĠĠĠ ĠUNSIGNED 3 2 (" Unsigned 3 2 "), ĊĠĠĠ ĠUNSIGNED 6 4 (" Unsigned 6 4 "), ĊĠĠĠ ĠUTF 8 STRING (" UTF 8 String "), ĊĊĠĠĠ ĠAPP _ ID (" AppId "), ĊĠĠĠ ĠV ENDOR _ ID (" Vendor Id ") Ċ } Ċ Ċ enum Ġclass ĠA vp Rep ( val Ġav p Code : ĠInt , Ġval Ġav p Type : ĠA vp Type ) Ġ{ ĊĠĠĠ ĠG GS N _ ADDRESS ( Av p . GG SN _ ADDRESS , ĠADDRESS ), ĊĠĠĠ ĠP DP _ ADDRESS ( Av p . P DP _ ADDRESS , ĠADDRESS ), ĊĠĠĠ ĠR AT _ TYPE ( Av p . TG PP _ RAT _ TYPE , ĠO CT ET _ STRING ), ĊĠĠĠ ĠSE LECTION _ MODE ( Av p . TG PP _ SELECTION _ MODE , ĠUTF 8 STRING ), ĊĠĠĠ ĠS GS N _ ADDRESS ( Av p . SG SN _ ADDRESS , ĠADDRESS ), ĊĠĠĠ ĠUSER _ LOCATION ( Av p . G PP _ USER _ LOCATION _ INFO , ĠO CT ET _ STRING ), ĊĠĠĠ ĠOR IGIN _ HOST ( Av p . ORIGIN _ HOST , ĠIDENTITY ), ĊĠĠĠ ĠOR IGIN _ REAL M ( Av p . ORIGIN _ REAL M , ĠIDENTITY ) Ċ }