adding support for for class eu.etaxonomy.cdm.model.description.WorkingSet to CdmPerm...
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / persistence / hibernate / permission / CdmPermissionClass.java
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.hibernate.permission;
10
11 import org.apache.log4j.Logger;
12
13 import eu.etaxonomy.cdm.model.common.CdmBase;
14
15 /**
16 * see also {@link CdmBaseType}
17 *
18 * @author k.luther
19 * @author a.kohlbecker
20 * @date 06.07.2011
21 */
22 public enum CdmPermissionClass {
23 USER,
24 DESCRIPTIONBASE,
25 DESCRIPTIONELEMENTBASE,
26 TAXONBASE,
27 ALL,
28 TAXONNODE,
29 CLASSIFICATION,
30 REFERENCE,
31 TAXONNAME,
32 NAMERELATIONSHIP,
33 TEAMORPERSONBASE,
34 REGISTRATION,
35 SPECIMENOROBSERVATIONBASE,
36 SPECIMENTYPEDESIGNATION,
37 COLLECTION,
38 GRANTEDAUTHORITYIMPL,
39 GROUP,
40 LANGUAGESTRING,
41 GATHERINGEVENT,
42 HOMOTYPICALGROUP,
43 WORKINGSET;
44
45
46 /**
47 * return the appropriate CdmPermissionClass for the given Object
48 *
49 * @param o
50 * @return the CdmPermissionClass or null
51 */
52 public static CdmPermissionClass getValueOf(CdmBase o){
53 return CdmPermissionClass.getValueOf(o.getClass());
54 }
55
56 /**
57 * return the appropriate CdmPermissionClass for the given Object
58 *
59 * @param o
60 * @return the CdmPermissionClass or null
61 */
62 public static CdmPermissionClass getValueOf(Class o){
63
64 CdmPermissionClass permissionClass = _valueOf(o);
65 if(permissionClass == null) {
66 Logger.getLogger(CdmPermissionClass.class).error("Permission class support for " + o + " not implemented");
67 }
68 return permissionClass;
69
70 }
71
72
73
74 /**
75 * @param o
76 * @return
77 */
78 protected static CdmPermissionClass _valueOf(Class o) {
79 try{
80 String normalizedName = o.getSimpleName().toUpperCase();
81 return CdmPermissionClass.valueOf(normalizedName);
82 } catch(IllegalArgumentException e){
83 if (CdmBase.class.isAssignableFrom(o)){
84 return _valueOf(o.getSuperclass());
85 }
86
87 }
88 return null;
89 }
90 }