merge 3.0.2 to trunk
[cdmlib.git] / cdmlib-remote / src / main / java / eu / etaxonomy / cdm / remote / dto / oaipmh / SetSpec.java
1 package eu.etaxonomy.cdm.remote.dto.oaipmh;
2
3 import javax.xml.bind.annotation.XmlEnum;
4 import javax.xml.bind.annotation.XmlEnumValue;
5
6 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
7 import eu.etaxonomy.cdm.model.agent.Person;
8 import eu.etaxonomy.cdm.model.agent.Team;
9 import eu.etaxonomy.cdm.model.agent.Institution;
10 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
11 import eu.etaxonomy.cdm.model.reference.Reference;
12 import eu.etaxonomy.cdm.model.taxon.Taxon;
13 import eu.etaxonomy.cdm.model.taxon.Synonym;
14 import eu.etaxonomy.cdm.model.name.BacterialName;
15 import eu.etaxonomy.cdm.model.name.BotanicalName;
16 import eu.etaxonomy.cdm.model.name.CultivarPlantName;
17 import eu.etaxonomy.cdm.model.name.ZoologicalName;
18 import eu.etaxonomy.cdm.model.name.ViralName;
19 import eu.etaxonomy.cdm.model.name.NonViralName;
20 import eu.etaxonomy.cdm.model.description.TaxonDescription;
21 import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
22 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
23
24 @XmlEnum
25 public enum SetSpec {
26 PERSON("person","People",Person.class,null),
27 TEAM("team","Teams of People",Team.class,null),
28 INSTITUTION("institution", "Institutions & Organisations",Institution.class,null),
29 TEAM_OR_PERSON("teamOrPerson", "Teams of individuals and individuals",TeamOrPersonBase.class,new SetSpec[]{TEAM,PERSON}),
30 TAXON("taxon","Accepted Taxon Concepts",Taxon.class,null),
31 SYNONYM("synonym","Synonyms",Synonym.class,null),
32 BACTERIAL_NAME("bacterialName", "Scientific Names governed by the ICNB",BacterialName.class,null),
33 CULTIVAR_PLANT_NAME("cultivarPlantName","Scientific Names governed by the ICNCP",CultivarPlantName.class,null),
34 BOTANICAL_NAME("botanicalName","Scientific Names governed by the ICBN",BotanicalName.class,new SetSpec[]{CULTIVAR_PLANT_NAME}),
35 ZOOLOGICAL_NAME("zoologicalName","Scientific Names governed by the ICZN",ZoologicalName.class,null),
36 NONVIRAL_NAME("nonviralName","Scientific Names governed by the ICNB, ICNCP, ICBN, or ICZN",NonViralName.class,new SetSpec[]{BACTERIAL_NAME,BOTANICAL_NAME,ZOOLOGICAL_NAME}),
37 VIRAL_NAME("viralName","Scientific Names governed by the ICTV",ViralName.class,null),
38 TAXON_DESCRIPTION("taxonDescription","Descriptions of taxonomic concepts",TaxonDescription.class,null),
39 TAXON_NAME_DESCRIPTION("taxonNameDescription","Descriptions of scientific names",TaxonNameDescription.class,null),
40 SPECIMEN_DESCRIPTION("specimenDescription","Descriptions of specimens and occurrences",SpecimenDescription.class,null),
41 REFERENCE("reference","Any kind of Reference",Reference.class,null);
42
43 private String spec;
44 private String name;
45 private SetSpec[] innerSets;
46 private Class<? extends IdentifiableEntity> setClass;
47
48 private SetSpec(String spec, String name, Class<? extends IdentifiableEntity> setClass,SetSpec[] innerSets) {
49 this.setClass = setClass;
50 this.innerSets = innerSets;
51 this.spec = spec;
52 this.name = name;
53 }
54
55 public Class<? extends IdentifiableEntity> getSetClass() {
56 return setClass;
57 }
58
59 public SetSpec[] getInnerSets() {
60 return innerSets;
61 }
62
63 public String getName() {
64 return name;
65 }
66
67 public String getSpec() {
68 return spec;
69 }
70
71 public static SetSpec bySpec(String spec){
72 for(SetSpec setSpec : SetSpec.values()) {
73 if(setSpec.getSpec().equals(spec)) {
74 return setSpec;
75 }
76 }
77 return null;
78 }
79 }