package Ġpw . dot dash . town ship . plugin . role Ċ Ċ import Ġorg . spongepowered . api . data . Data Container Ċ import Ġorg . spongepowered . api . data . Data View Ċ import Ġorg . spongepowered . api . data . Queries Ċ import Ġorg . spongepowered . api . data . persistence . Abstract Data Builder Ċ import Ġorg . spongepowered . api . util . Tri state Ċ import Ġpw . dot dash . town ship . api . claim . Claim Ċ import Ġpw . dot dash . town ship . api . permission . Claim Permission Ċ import Ġpw . dot dash . town ship . api . permission . Permission Ċ import Ġpw . dot dash . town ship . api . permission . Town Permission Ċ import Ġpw . dot dash . town ship . api . permission . Town Permissions Ċ import Ġpw . dot dash . town ship . api . town . Town Role Ċ import Ġpw . dot dash . town ship . api . town . Town Role Service Ċ import Ġpw . dot dash . town ship . api . town . Town Ċ import Ġpw . dot dash . town ship . api . town . Town Service Ċ import Ġpw . dot dash . town ship . plugin . storage . Data Queries Ċ import Ġpw . dot dash . town ship . plugin . util . get UUID Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . HashSet Ċ Ċ data Ġclass ĠT own Role Impl ( ĊĠĠĠ Ġprivate Ġval Ġunique Id : ĠUUID , ĊĠĠĠ Ġprivate Ġvar Ġpriority : ĠInt , ĊĠĠĠ Ġprivate Ġvar Ġname : ĠString , ĊĠĠĠ Ġprivate Ġval Ġtown Id : ĠUUID Ċ ) Ġ: ĠT own Role Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpermissions Ġ= ĠHashSet < Permission >() ĊĊĠĠĠ Ġinternal Ġfun Ġload Permissions ( permissions : ĠIterable < Permission >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . permissions . clear () ĊĠĠĠĠĠĠĠ Ġthis . permissions Ġ+= Ġpermissions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget UniqueId (): ĠUUID Ġ= Ġthis . unique Id ĊĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ= Ġthis . name ĊĊĠĠĠ Ġoverride Ġfun ĠsetName ( name : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . name Ġ== Ġname ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( Town Role Service . getInstance (). get Role ( this . town , Ġname ). isPresent ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġpost Ġevent ĊĊĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Priority (): ĠInt Ġ= Ġthis . priority ĊĊĠĠĠ Ġoverride Ġfun Ġset Priority ( priority : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . priority Ġ== Ġpriority ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġpost Ġevent ĊĊĠĠĠĠĠĠĠ Ġthis . priority Ġ= Ġpriority ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Town Id (): ĠUUID Ġ= Ġthis . town Id ĊĊĠĠĠ Ġoverride Ġfun Ġget Town (): ĠT own Ġ= ĊĠĠĠĠĠĠĠ ĠT own Service . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Town ( this . town Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orElse Throw Ġ{ ĠIllegalStateException (" Town Ġ$ town Id Ġis Ġnot Ġloaded ") Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Permissions (): ĠCollection < Permission > Ġ= ĊĠĠĠĠĠĠĠ Ġthis . permissions . toSet () ĊĊĠĠĠ Ġoverride Ġfun Ġhas Permission ( permission : ĠPermission ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ ĠRole Type . TO WN . isValid ( permission ) Ġ&& Ġpermission Ġin Ġthis . permissions ĊĊĠĠĠ Ġoverride Ġfun Ġadd Permission ( permission : ĠPermission ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Role Type . TO WN . isValid ( permission )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( permission Ġin Ġthis . permissions ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġpost Ġevent ĊĊĠĠĠĠĠĠĠ Ġthis . permissions Ġ+= Ġpermission ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Permission ( permission : ĠPermission ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Role Type . TO WN . isValid ( permission )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( permission Ġ! in Ġthis . permissions ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġpost Ġevent ĊĊĠĠĠĠĠĠĠ Ġthis . permissions Ġ-= Ġpermission ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Permission Value ( permission : ĠPermission , Ġclaim : ĠClaim ): ĠTri state Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( permission ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠT own Permission Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTri state . from Boolean ( permission Ġin Ġthis . permissions Ġ|| ĠT own Permissions . TO WN _ DE PUT Y Ġin Ġthis . permissions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠClaim Permission Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġfor ĠDE PUT Y Ġpermission Ġfirst . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Town Permissions . TO WN _ DE PUT Y Ġin Ġthis . permissions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTri state . TRUE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen Ġcheck Ġfor Ġclaim Ġoverrides . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoverride : ĠTri state Ġ= Ġclaim . get Permission Override ( this , Ġpermission ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( override Ġ!= ĠTri state . UNDEFINED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġoverride ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen Ġcheck Ġif Ġthis Ġrole Ġhas Ġthe Ġpermission . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTri state . from Boolean ( permission Ġin Ġthis . permissions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTri state . UNDEFINED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetContent Version (): ĠInt Ġ= Ġ 1 ĊĊĠĠĠ Ġoverride Ġfun Ġto Container (): ĠData Container Ġ= ĊĠĠĠĠĠĠĠ ĠData Container . createNew () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( Queries . CONTENT _ VERSION , Ġthis . content Version ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( Data Queries . UNIQUE _ ID , Ġthis . unique Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( Data Queries . NAME , Ġthis . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( Data Queries . PRIORITY , Ġthis . priority ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( Data Queries . TO WN _ ID , Ġthis . town Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( Data Queries . PERMISSION S , Ġthis . permissions ) ĊĊĠĠĠ Ġobject ĠData Builder Ġ: ĠAbstract Data Builder < Town Role >( Town Role :: class . java , Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild Content ( container : ĠData View ): ĠOptional < Town Role > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunique Id : ĠUUID Ġ= Ġcontainer . get UUID ( Data Queries . UNIQUE _ ID ). get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname : ĠString Ġ= Ġcontainer . getString ( Data Queries . NAME ). get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpriority : ĠInt Ġ= Ġcontainer . getInt ( Data Queries . PRIORITY ). get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtown UniqueId : ĠUUID Ġ= Ġcontainer . get UUID ( Data Queries . TO WN _ ID ). get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpermissions : ĠList < Permission > Ġ= Ġcontainer . getC atalog TypeList ( Data Queries . PERMISSION S , ĠPermission :: class . java ). get () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrole Ġ= ĠT own Role Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunique Id Ġ= Ġunique Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpriority Ġ= Ġpriority , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtown Id Ġ= Ġtown UniqueId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrole . load Permissions ( permissions ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOptional . of ( role ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠBuilder Ġ: ĠT own Role . Builder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġname : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġpriority : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġtown UniqueId : ĠUUID ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġpermissions : ĠSet < Permission >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġname ( name : ĠString ): ĠT own Role . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpriority ( priority : ĠInt ): ĠT own Role . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . priority Ġ= Ġpriority ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtown ( town : ĠT own ): ĠT own Role . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . town UniqueId Ġ= Ġtown . unique Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpermissions ( permissions : ĠIterable < Permission >): ĠT own Role . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . permissions Ġ= Ġpermissions . toSet () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpermissions ( var arg Ġpermissions : ĠPermission ): ĠT own Role . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . permissions Ġ= Ġpermissions . toSet () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfrom ( value : ĠT own Role ): ĠT own Role . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġvalue . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . priority Ġ= Ġvalue . priority ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . town UniqueId Ġ= Ġvalue . town . unique Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . permissions Ġ= Ġvalue . permissions . toSet () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġreset (): ĠT own Role . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . priority Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . town UniqueId Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . permissions Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild (): ĠT own Role Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrole Ġ= ĠT own Role Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunique Id Ġ= ĠUUID . randomUUID (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠcheckNotNull ( this . name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpriority Ġ= Ġthis . priority , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtown Id Ġ= ĠcheckNotNull ( this . town UniqueId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . permissions ?. let ( role :: load Permissions ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrole ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }