package Ġio . fabric 8 . launcher . creator . core . catalog Ċ Ċ import Ġio . fabric 8 . launcher . creator . core . Enumeration Ċ import Ġio . fabric 8 . launcher . creator . core . Enums Ċ import Ġio . fabric 8 . launcher . creator . core . Properties Ċ import Ġio . fabric 8 . launcher . creator . core . data . object From Path Ċ import Ġio . fabric 8 . launcher . creator . core . data . yaml Io Ċ import Ġio . fabric 8 . launcher . creator . core . ensure List Ċ import Ġjava . nio . file . Paths Ċ Ċ private Ġval Ġenums : ĠEnums Ġby Ġlazy Ġ{ ĊĠĠĠ Ġval Ġprops Ġ= Ġyaml Io . object From Path ( Paths . get (" META - INF / catalog / enums . yaml ")) Ġas ĠProperties ĊĠĠĠ Ġprops . keys . forEach Ġ{ Ġkey Ġ-> ĊĠĠĠĠĠĠĠ Ġprops [ key ] Ġ= Ġensure List ( key , Ġprops [ key ], ĠEnumeration :: Data ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprops Ġas ĠEnums Ċ } Ċ Ċ fun Ġlist Enums (): ĠEnums Ġ= Ġenums Ċ Ċ fun Ġenum ById ( enum Id : ĠString ): ĠList < Enumeration > Ġ{ ĊĠĠĠ Ġreturn Ġlist Enums ()[ enum Id ] Ġ?: ĠlistOf (); Ċ } Ċ Ċ fun Ġenum Item ( enum Id : ĠString , ĠitemId : ĠString ): ĠEnumeration ? Ġ{ ĊĠĠĠ Ġreturn Ġenum ById ( enum Id ). find Ġ{ Ġe Ġ-> Ġe . id Ġ== ĠitemId Ġ} Ċ } Ċ Ċ fun Ġenum NN ( enum Id : ĠString ): ĠList < Enumeration > Ġ{ ĊĠĠĠ Ġreturn Ġlist Enums (). getValue ( enum Id ) Ċ } Ċ Ċ fun Ġenum Item NN ( enum Id : ĠString , ĠitemId : ĠString ): ĠEnumeration Ġ{ ĊĠĠĠ Ġval Ġitem Ġ= Ġenum NN ( enum Id ). find Ġ{ Ġe Ġ-> Ġe . id Ġ== ĠitemId Ġ} ĊĠĠĠ Ġif Ġ( item Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException (" Item Ġ${ itemId } Ġnot Ġfound Ġin Ġenumeration Ġ${ enum Id }") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġitem Ċ } Ċ