Project

General

Profile

Download (6.08 KB) Statistics
| Branch: | Tag: | Revision:
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.model.permission;
10

    
11
import java.util.Set;
12
import java.util.UUID;
13

    
14
import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;
15

    
16
import eu.etaxonomy.cdm.model.CdmBaseType;
17
import eu.etaxonomy.cdm.model.common.CdmBase;
18
import eu.etaxonomy.cdm.model.common.Language;
19
import eu.etaxonomy.cdm.model.term.EnumeratedTermVoc;
20
import eu.etaxonomy.cdm.model.term.IEnumTerm;
21

    
22
/**
23
 * see also {@link CdmBaseType}
24
 *
25
 * @author k.luther
26
 * @author a.kohlbecker
27
 * @author a.mueller
28
 * @since 06.07.2011
29
 */
30
public enum PermissionClass implements IEnumTerm<PermissionClass>{
31
    ALL("All"),
32
    AGENTBASE("Agent"),
33
    ANNOTATION("Annotation"),
34
    ANNOTATIONTYPE("AnnotationType"),
35
    CDMMETADATA("CdmMetaData"),
36
    CLASSIFICATION("Classification"),
37
    COLLECTION("Collectioni"),
38
    DEFINEDTERM("DefinedTerm"),
39
    DESCRIPTIONBASE("Description"),
40
    DESCRIPTIONELEMENTBASE("DescriptionElement"),
41
    DESCRIPTIONELEMENTSOURCE("DescriptionElementSource"),
42
    DESCRIPTIVEDATASET("DescriptiveDataSet"),
43
    EXTENSION("Extension"),
44
    EXTENSIONTYPE("ExtensionType"),
45
    FEATURE("Feature"),
46
    TERMNODE("TermNode"),
47
    TERMTREE("TermTree"),
48
    GATHERINGEVENT("GatheringEvent"),
49
    GRANTEDAUTHORITYIMPL("GrantedAuthorityImpl"),
50
    GROUP("Group"),
51
    HOMOTYPICALGROUP("HomotypicalGroup"),
52
    HYBRIDRELATIONSHIP("HybridRelationship"),
53
    IDENTIFIABLESOURCE("IdentifiableSource"),
54
    IDENTIFIER("Identifier"),
55
    KEYSTATEMENT("KeyStatement"),
56
    LANGUAGE("Language"),
57
    LANGUAGESTRING("LanguageString"),
58
    MARKER("Marker"),
59
    MARKERTYPE("MarkerType"),
60
    MEDIA("Media"),
61
    MEDIAREPRESENTATION("MediaRepresentation"),
62
    MEDIAREPRESENTATIONPART("MediaRepresentationPart"),
63
    NAMEDAREA("NamedArea"),
64
    NAMEDAREALEVEL("NamedAreaLevel"),
65
    NAMEDSOURCE("NamedSource"),
66
    NAMERELATIONSHIP("NameRelationship"),
67
    NAMETYPEDESIGNATION("NameTypeDesignation"),
68
    NOMENCLATURALSTATUS("NomenclaturalStatus"),
69
    NOMENCLATURALSOURCE("NomenclaturalSource"),
70
    NOMENCLATURALSTATUSTYPE("NomenclaturalStatusType"),
71
    PRESENCEABSENCETERM("PresenceAbsenceTerm"),
72
    POLYTOMOUSKEY("PolytomousKey"),
73
    POLYTOMOUSKEYNODE("PolytomousKeyNode"),
74
    RANK("Rank"),
75
    REFERENCE("Reference"),
76
    REGISTRATION("Registration"),
77
    REPRESENTATION("Representation"),
78
    SECUNDUMSOURCE("SecundumSource"),
79
    SEQUENCE("Sequence"),
80
    SPECIMENOROBSERVATIONBASE("SpecimenOrObservation"),
81
    SPECIMENTYPEDESIGNATION("SpecimenTypeDesignation"),
82
    STATEDATA("StateData"),
83
    STATISTICALMEASUREMENTVALUE("StatisticalMeasurementValue"),
84
    TAXONBASE("TaxonBase"),
85
    TAXONNAME("TaxonName"),
86
    TAXONNODE("TaxonNode"),
87
    TAXONRELATIONSHIP("TaxonRelationship"),
88
    TEAMORPERSONBASE("TeamOrPerson"),
89
    TERMVOCABULARY("TermVocabulary"),
90
    USER("User"),
91
    ;
92

    
93
    public static final Logger logger = LogManager.getLogger(PermissionClass.class);
94

    
95
    private PermissionClass(String key){
96
        //we have no UUIDs defined yet, but needed for tests
97
        this(UUID.randomUUID(), key, key, null);
98
    }
99

    
100

    
101
    private PermissionClass(UUID uuid, String defaultString, String key){
102
        this(uuid, defaultString, key, null);
103
    }
104

    
105
    private PermissionClass(UUID uuid, String defaultString, String key, PermissionClass parent){
106
        delegateVocTerm = EnumeratedTermVoc.addTerm(getClass(), this, uuid, defaultString, key, parent);
107
    }
108

    
109
 // *************************** DELEGATE **************************************/
110

    
111
    private static EnumeratedTermVoc<PermissionClass> delegateVoc;
112
    private IEnumTerm<PermissionClass> delegateVocTerm;
113

    
114
    static {
115
        delegateVoc = EnumeratedTermVoc.getVoc(PermissionClass.class);
116
    }
117

    
118
    @Override
119
    public String getKey(){return delegateVocTerm.getKey();}
120

    
121
    @Override
122
    public String getLabel(){return delegateVocTerm.getLabel();}
123

    
124
    @Override
125
    public String getLabel(Language language){return delegateVocTerm.getLabel(language);}
126

    
127
    @Override
128
    public UUID getUuid() {return delegateVocTerm.getUuid();}
129

    
130
    @Override
131
    public PermissionClass getKindOf() {return delegateVocTerm.getKindOf();}
132

    
133
    @Override
134
    public Set<PermissionClass> getGeneralizationOf() {return delegateVocTerm.getGeneralizationOf();}
135

    
136
    @Override
137
    public boolean isKindOf(PermissionClass ancestor) {return delegateVocTerm.isKindOf(ancestor);  }
138

    
139
    @Override
140
    public Set<PermissionClass> getGeneralizationOf(boolean recursive) {return delegateVocTerm.getGeneralizationOf(recursive);}
141

    
142
    public static PermissionClass getByKey(String key){return delegateVoc.getByKey(key);}
143
    public static PermissionClass getByUuid(UUID uuid) {return delegateVoc.getByUuid(uuid);}
144

    
145
// ************************ METHODS *******************************/
146

    
147
    /**
148
     * return the appropriate CdmPermissionClass for the given Object
149
     *
150
     * @param cdmBase
151
     * @return the CdmPermissionClass or null
152
     */
153
    public static PermissionClass getValueOf(CdmBase cdmBase){
154
        return PermissionClass.getValueOf(cdmBase.getClass());
155
    }
156

    
157
    /**
158
     * Return the appropriate CdmPermissionClass for the given Object
159
     *
160
     * @param clazz
161
     * @return the CdmPermissionClass or null
162
     */
163
    public static PermissionClass getValueOf(Class clazz){
164

    
165
        PermissionClass permissionClass = doValueOf(clazz);
166
        if(permissionClass == null) {
167
            logger.error("Permission class support for " + clazz + " not implemented");
168
        }
169
        return permissionClass;
170
    }
171

    
172
    /**
173
     * @param o
174
     * @return
175
     */
176
    private static PermissionClass doValueOf(Class<?> clazz) {
177
        try{
178
            String normalizedName = clazz.getSimpleName().toUpperCase();
179
            return PermissionClass.valueOf(normalizedName);
180
        } catch(IllegalArgumentException e){
181
            if (CdmBase.class.isAssignableFrom(clazz)){
182
                return doValueOf(clazz.getSuperclass());
183
            }
184

    
185
        }
186
        return null;
187
    }
188

    
189
}
(7-7/9)