X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/blobdiff_plain/9dc896c9a181487e9796e2ae7b0a1e2bfa9ff32a..e2ba0554f2a930302841b39c6b3b53d69aacf5aa:/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/permission/CdmPermissionClass.java diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/permission/CdmPermissionClass.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/permission/CdmPermissionClass.java old mode 100644 new mode 100755 index 87841730da..6489eb907b --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/permission/CdmPermissionClass.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/permission/CdmPermissionClass.java @@ -8,6 +8,8 @@ */ package eu.etaxonomy.cdm.persistence.hibernate.permission; +import org.apache.log4j.Logger; + import eu.etaxonomy.cdm.model.CdmBaseType; import eu.etaxonomy.cdm.model.common.CdmBase; @@ -16,19 +18,59 @@ import eu.etaxonomy.cdm.model.common.CdmBase; * * @author k.luther * @author a.kohlbecker - * @date 06.07.2011 + * @since 06.07.2011 */ public enum CdmPermissionClass { - USER, - DESCRIPTIONBASE, - DESCRIPTIONELEMENTBASE, - TAXONBASE, ALL, - TAXONNODE, + ANNOTATION, + ANNOTATIONTYPE, + CDMMETADATA, CLASSIFICATION, + COLLECTION, + DESCRIPTIONBASE, + DESCRIPTIONELEMENTBASE, + DESCRIPTIONELEMENTSOURCE, + DESCRIPTIVEDATASET, + EXTENSION, + EXTENSIONTYPE, + FEATURE, + FEATURENODE, + FEATURETREE, + GATHERINGEVENT, + GRANTEDAUTHORITYIMPL, + GROUP, + HOMOTYPICALGROUP, + HYBRIDRELATIONSHIP, + IDENTIFIABLESOURCE, + LANGUAGE, + LANGUAGESTRING, + MARKER, + MARKERTYPE, + MEDIA, + MEDIAREPRESENTATION, + MEDIAREPRESENTATIONPART, + NAMEDAREA, + NAMEDAREALEVEL, + NAMERELATIONSHIP, + NAMETYPEDESIGNATION, + NOMENCLATURALSTATUS, + NOMENCLATURALSTATUSTYPE, + SPECIMENOROBSERVATIONBASE, + SPECIMENTYPEDESIGNATION, + RANK, REFERENCE, + REGISTRATION, + REPRESENTATION, + TAXONBASE, TAXONNAME, - TEAMORPERSONBASE; + TAXONNODE, + TAXONRELATIONSHIP, + TEAMORPERSONBASE, + TERMVOCABULARY, + USER, + AGENTBASE + ; + /** * return the appropriate CdmPermissionClass for the given Object @@ -40,8 +82,6 @@ public enum CdmPermissionClass { return CdmPermissionClass.getValueOf(o.getClass()); } - - /** * return the appropriate CdmPermissionClass for the given Object * @@ -50,15 +90,30 @@ public enum CdmPermissionClass { */ public static CdmPermissionClass getValueOf(Class o){ + CdmPermissionClass permissionClass = _valueOf(o); + if(permissionClass == null) { + Logger.getLogger(CdmPermissionClass.class).error("Permission class support for " + o + " not implemented"); + } + return permissionClass; + + } + + + + /** + * @param o + * @return + */ + protected static CdmPermissionClass _valueOf(Class o) { try{ - return CdmPermissionClass.valueOf(o.getSimpleName().toUpperCase()); + String normalizedName = o.getSimpleName().toUpperCase(); + return CdmPermissionClass.valueOf(normalizedName); } catch(IllegalArgumentException e){ if (CdmBase.class.isAssignableFrom(o)){ - return getValueOf(o.getSuperclass()); + return _valueOf(o.getSuperclass()); } } - return null; } }