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