Project

General

Profile

Download (1.77 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2009 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.cdm.persistence.permission;
10

    
11
import java.util.EnumSet;
12
import java.util.StringTokenizer;
13

    
14
import eu.etaxonomy.cdm.model.permission.CRUD;
15

    
16
/**
17
 * @author k.luther
18
 * @author a.kohlbecker
19
 */
20
public class Operation {
21

    
22
    private Operation(){}
23

    
24
    final static public EnumSet<CRUD> CREATE = EnumSet.of(CRUD.CREATE);
25

    
26
    final static public EnumSet<CRUD> READ = EnumSet.of(CRUD.READ);
27

    
28
    final static public EnumSet<CRUD> UPDATE = EnumSet.of(CRUD.UPDATE);
29

    
30
    final static public EnumSet<CRUD> DELETE = EnumSet.of(CRUD.DELETE);
31

    
32
    final static public EnumSet<CRUD> ALL = EnumSet.allOf(CRUD.class);
33

    
34
    final static public EnumSet<CRUD> ADMIN = ALL; // FIXME remove?
35

    
36
    final static public EnumSet<CRUD> NONE = EnumSet.noneOf(CRUD.class);
37

    
38
    public static EnumSet<CRUD> fromString(String string){
39
        if(string.equals("ALL")){
40
            return ALL;
41
        }
42
        if(string.equals("ADMIN")){
43
            return ADMIN;
44
        }
45
        if(string.equals("NONE")){
46
            return NONE;
47
        }
48
        StringTokenizer st = new StringTokenizer(string,",");
49
        EnumSet<CRUD> op = EnumSet.noneOf(CRUD.class);
50

    
51
        while (st.hasMoreElements()) {
52

    
53
            String opStr = (String) st.nextElement();
54
            op.add(CRUD.valueOf(opStr.trim()));
55
        }
56

    
57
        return op;
58
    }
59

    
60
    public static boolean isOperation(Object o){
61
        try {
62
            return o instanceof EnumSet<?> && ALL.containsAll((EnumSet<?>)o);
63
        } catch (Throwable e){
64
            return false;
65
        }
66
    }
67

    
68
}
69

    
70

    
(6-6/10)