extending 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.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 ALL,
24 CLASSIFICATION,
25 COLLECTION,
26 DESCRIPTIONBASE,
27 DESCRIPTIONELEMENTBASE,
28 FEATURE,
29 GATHERINGEVENT,
30 GRANTEDAUTHORITYIMPL,
31 GROUP,
32 HOMOTYPICALGROUP,
33 LANGUAGESTRING,
34 NAMERELATIONSHIP,
35 SPECIMENOROBSERVATIONBASE,
36 SPECIMENTYPEDESIGNATION,
37 REGISTRATION,
38 REFERENCE,
39 TAXONBASE,
40 TAXONNAME,
41 TAXONNODE,
42 TEAMORPERSONBASE,
43 USER,
44 WORKINGSET,
45 NAMEDAREA,
46 MEDIA,
47 MEDIAREPRESENTATION,
48 MEDIAREPRESENTATIONPART,
49 REPRESENTATION,
50 CDMMETADATA
51 ;
52
53
54 /**
55 * return the appropriate CdmPermissionClass for the given Object
56 *
57 * @param o
58 * @return the CdmPermissionClass or null
59 */
60 public static CdmPermissionClass getValueOf(CdmBase o){
61 return CdmPermissionClass.getValueOf(o.getClass());
62 }
63
64 /**
65 * return the appropriate CdmPermissionClass for the given Object
66 *
67 * @param o
68 * @return the CdmPermissionClass or null
69 */
70 public static CdmPermissionClass getValueOf(Class o){
71
72 CdmPermissionClass permissionClass = _valueOf(o);
73 if(permissionClass == null) {
74 Logger.getLogger(CdmPermissionClass.class).error("Permission class support for " + o + " not implemented");
75 }
76 return permissionClass;
77
78 }
79
80
81
82 /**
83 * @param o
84 * @return
85 */
86 protected static CdmPermissionClass _valueOf(Class o) {
87 try{
88 String normalizedName = o.getSimpleName().toUpperCase();
89 return CdmPermissionClass.valueOf(normalizedName);
90 } catch(IllegalArgumentException e){
91 if (CdmBase.class.isAssignableFrom(o)){
92 return _valueOf(o.getSuperclass());
93 }
94
95 }
96 return null;
97 }
98 }