Project

General

Profile

Download (1.9 KB) Statistics
| Branch: | Tag: | Revision:
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
}
(2-2/3)