Evaluate "show id in vocabulary" preference in term editor
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / security / PermissionPropertyTester.java
1 package eu.etaxonomy.taxeditor.security;
2
3 import java.util.EnumSet;
4 import java.util.List;
5
6 import org.eclipse.core.expressions.PropertyTester;
7 import org.eclipse.jface.viewers.IStructuredSelection;
8
9 import eu.etaxonomy.cdm.model.common.CdmBase;
10 import eu.etaxonomy.cdm.persistence.hibernate.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;
14
15 /**
16 * Checks if the currently authenticated user for {@link CdmAuthority} assignments.
17 *
18 * @author andreas
19 *
20 */
21 public class PermissionPropertyTester extends PropertyTester {
22
23 private static final String HAS_PERMISSIONS = "hasPermissions";
24
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();
29
30 @Override
31 public boolean test(Object receiver, String property, Object[] args,
32 Object expectedValue) {
33
34 if(property.equals(HAS_PERMISSIONS)){
35 return checkHasPermission(receiver, args);
36 }
37
38 return false;
39 }
40
41 private boolean checkHasPermission(Object receiver, Object[] args) {
42 EnumSet<CRUD> crudSet = crudSetFromArgs(args);
43
44
45 List<Object> selectedElements = ((IStructuredSelection) receiver).toList();
46 for(Object selectedElement : selectedElements){
47 if(selectedElement instanceof CdmBase && ! CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(selectedElement), crudSet)){
48 return false;
49 }
50 }
51
52 return true;
53 }
54
55 private EnumSet<CRUD> crudSetFromArgs(Object[] args) {
56 EnumSet<CRUD> crudSet = EnumSet.noneOf(CRUD.class);
57 for(int i = 0; i < args.length; i++){
58 try {
59 crudSet.add(CRUD.valueOf(args[i].toString()));
60 } catch (Exception e){
61 System.err.println("could not add " + args[i]);
62 }
63 }
64 return crudSet;
65 }
66
67 }