Merge branch 'release/5.1.0'
[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 * @since 06.07.2011
22 */
23 public enum CdmPermissionClass {
24 ALL,
25 ANNOTATION,
26 ANNOTATIONTYPE,
27 CDMMETADATA,
28 CLASSIFICATION,
29 COLLECTION,
30 DESCRIPTIONBASE,
31 DESCRIPTIONELEMENTBASE,
32 DESCRIPTIONELEMENTSOURCE,
33 DESCRIPTIVEDATASET,
34 EXTENSION,
35 EXTENSIONTYPE,
36 FEATURE,
37 FEATURENODE,
38 FEATURETREE,
39 GATHERINGEVENT,
40 GRANTEDAUTHORITYIMPL,
41 GROUP,
42 HOMOTYPICALGROUP,
43 HYBRIDRELATIONSHIP,
44 IDENTIFIABLESOURCE,
45 LANGUAGE,
46 LANGUAGESTRING,
47 MARKER,
48 MARKERTYPE,
49 MEDIA,
50 MEDIAREPRESENTATION,
51 MEDIAREPRESENTATIONPART,
52 NAMEDAREA,
53 NAMEDAREALEVEL,
54 NAMERELATIONSHIP,
55 NAMETYPEDESIGNATION,
56 NOMENCLATURALSTATUS,
57 NOMENCLATURALSTATUSTYPE,
58 SPECIMENOROBSERVATIONBASE,
59 SPECIMENTYPEDESIGNATION,
60 RANK,
61 REFERENCE,
62 REGISTRATION,
63 REPRESENTATION,
64 TAXONBASE,
65 TAXONNAME,
66 TAXONNODE,
67 TAXONRELATIONSHIP,
68 TEAMORPERSONBASE,
69 TERMVOCABULARY,
70 USER,
71 ;
72
73
74 /**
75 * return the appropriate CdmPermissionClass for the given Object
76 *
77 * @param o
78 * @return the CdmPermissionClass or null
79 */
80 public static CdmPermissionClass getValueOf(CdmBase o){
81 return CdmPermissionClass.getValueOf(o.getClass());
82 }
83
84 /**
85 * return the appropriate CdmPermissionClass for the given Object
86 *
87 * @param o
88 * @return the CdmPermissionClass or null
89 */
90 public static CdmPermissionClass getValueOf(Class o){
91
92 CdmPermissionClass permissionClass = _valueOf(o);
93 if(permissionClass == null) {
94 Logger.getLogger(CdmPermissionClass.class).error("Permission class support for " + o + " not implemented");
95 }
96 return permissionClass;
97
98 }
99
100
101
102 /**
103 * @param o
104 * @return
105 */
106 protected static CdmPermissionClass _valueOf(Class o) {
107 try{
108 String normalizedName = o.getSimpleName().toUpperCase();
109 return CdmPermissionClass.valueOf(normalizedName);
110 } catch(IllegalArgumentException e){
111 if (CdmBase.class.isAssignableFrom(o)){
112 return _valueOf(o.getSuperclass());
113 }
114
115 }
116 return null;
117 }
118 }