1 package eu
.etaxonomy
.taxeditor
.security
;
3 import java
.util
.EnumSet
;
6 import org
.eclipse
.core
.expressions
.PropertyTester
;
7 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
9 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
10 import eu
.etaxonomy
.cdm
.model
.permission
.CRUD
;
11 import eu
.etaxonomy
.cdm
.persistence
.hibernate
.permission
.CdmAuthority
;
12 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
13 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
16 * Checks if the currently authenticated user for {@link CdmAuthority} assignments.
21 public class PermissionPropertyTester
extends PropertyTester
{
23 private static final String HAS_PERMISSIONS
= "hasPermissions";
25 private static final String CREATE
= CRUD
.CREATE
.toString();
26 private static final String READ
= CRUD
.READ
.toString();
27 private static final String UPDATE
= CRUD
.UPDATE
.toString();
28 private static final String DELETE
= CRUD
.DELETE
.toString();
31 public boolean test(Object receiver
, String property
, Object
[] args
,
32 Object expectedValue
) {
34 if(property
.equals(HAS_PERMISSIONS
)){
35 return checkHasPermission(receiver
, args
);
41 private boolean checkHasPermission(Object receiver
, Object
[] args
) {
42 EnumSet
<CRUD
> crudSet
= crudSetFromArgs(args
);
45 List
<Object
> selectedElements
= ((IStructuredSelection
) receiver
).toList();
46 for(Object selectedElement
: selectedElements
){
47 if(selectedElement
instanceof CdmBase
&& ! CdmStore
.currentAuthentiationHasPermission(StoreUtil
.getCdmEntity(selectedElement
), crudSet
)){
55 private EnumSet
<CRUD
> crudSetFromArgs(Object
[] args
) {
56 EnumSet
<CRUD
> crudSet
= EnumSet
.noneOf(CRUD
.class);
57 for(int i
= 0; i
< args
.length
; i
++){
59 crudSet
.add(CRUD
.valueOf(args
[i
].toString()));
60 } catch (Exception e
){
61 System
.err
.println("could not add " + args
[i
]);