package Ġuk . gov . just ice . digital . h mp ps . create and vary alic ence api . repository Ċ Ċ import Ġau . com . console . jp as pec ification dsl . and Ċ import Ġau . com . console . jp as pec ification dsl .` in ` Ċ import Ġorg . springframework . data . domain . Sort Ċ import Ġorg . springframework . data . jpa . domain . Specification Ċ import Ġuk . gov . just ice . digital . h mp ps . create and vary alic ence api . entity . Lic ence Ċ import Ġuk . gov . just ice . digital . h mp ps . create and vary alic ence api . util . Lic ence Status Ċ import Ġjavax . validation . ValidationException Ċ Ċ data Ġclass ĠLicence Query Object ( ĊĠ Ġval Ġpr ison Codes : ĠList < String >? Ġ= Ġnull , ĊĠ Ġval Ġstatus Codes : ĠList < Lic ence Status >? Ġ= Ġnull , ĊĠ Ġval Ġstaff Ids : ĠList < Int >? Ġ= Ġnull , ĊĠ Ġval Ġnom s Ids : ĠList < String >? Ġ= Ġnull , ĊĠ Ġval ĠsortBy : ĠString ? Ġ= Ġnull , ĊĠ Ġval Ġsort Order : ĠString ? Ġ= Ġnull Ċ ) Ċ Ċ fun ĠLicence Query Object . to Specification (): ĠSpecification < Lic ence > Ġ= Ġand ( ĊĠ Ġhas StatusCode In ( status Codes ), ĊĠ Ġhas Pr ison Code In ( pr ison Codes ), ĊĠ Ġhas Nom sId In ( nom s Ids ), ĊĠ Ġhas Staff Id In ( staff Ids ) Ċ ) Ċ Ċ fun ĠLicence Query Object . get Sort (): ĠSort Ġ{ ĊĠ Ġif Ġ( sortBy Ġ== Ġnull ) Ġ{ ĊĠĠĠ Ġreturn ĠSort . un sorted () ĊĠ Ġ} ĊĊĠ Ġif Ġ( sort Order Ġ== Ġnull ) Ġ{ ĊĠĠĠ Ġreturn ĠSort . by ( Sort . Direction . ASC , ĠsortBy ) ĊĠ Ġ} ĊĊĠ Ġtry Ġ{ ĊĠĠĠ Ġreturn ĠSort . by ( Sort . Direction . fromString ( sort Order ), ĠsortBy ) ĊĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠ Ġthrow ĠValidation Exception ( e . message ) ĊĠ Ġ} Ċ } Ċ Ċ fun Ġhas Pr ison Code In ( pr ison Codes : ĠList < String >? ): ĠSpecification < Lic ence >? Ġ= Ġpr ison Codes ?. let Ġ{ ĊĠ ĠLicence :: pr ison Code .` in `( pr ison Codes ) Ċ } Ċ Ċ fun Ġhas StatusCode In ( status Codes : ĠList < Lic ence Status >? ): ĠSpecification < Lic ence >? Ġ= Ġstatus Codes ?. let Ġ{ ĊĠ ĠLicence :: statusCode .` in `( status Codes ) Ċ } Ċ Ċ fun Ġhas Nom sId In ( nom s Ids : ĠList < String >? ): ĠSpecification < Lic ence >? Ġ= Ġnom s Ids ?. let Ġ{ ĊĠ ĠLicence :: nom sId .` in `( nom s Ids ) Ċ } Ċ Ċ fun Ġhas Staff Id In ( staff Ids : ĠList < Int >? ): ĠSpecification < Lic ence >? Ġ= Ġstaff Ids ?. let Ġ{ ĊĠ ĠLicence :: com Staff Id .` in `( staff Ids ) Ċ } Ċ