NomenclaturalCode -> enum
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / common / DefaultTermInitializer.java
1 /**
2 * Copyright (C) 2007 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.common;
10
11 import java.util.HashMap;
12 import java.util.Map;
13 import java.util.UUID;
14
15 import org.apache.log4j.Logger;
16
17 import eu.etaxonomy.cdm.model.common.init.ITermLoader;
18 import eu.etaxonomy.cdm.model.common.init.ITermInitializer;
19 import eu.etaxonomy.cdm.model.common.init.TermLoader;
20 import eu.etaxonomy.cdm.model.description.AbsenceTerm;
21 import eu.etaxonomy.cdm.model.description.Feature;
22 import eu.etaxonomy.cdm.model.description.PresenceTerm;
23 import eu.etaxonomy.cdm.model.description.Sex;
24 import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
25 import eu.etaxonomy.cdm.model.location.Continent;
26 import eu.etaxonomy.cdm.model.location.NamedArea;
27 import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
28 import eu.etaxonomy.cdm.model.location.NamedAreaType;
29 import eu.etaxonomy.cdm.model.location.TdwgArea;
30 import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
31 import eu.etaxonomy.cdm.model.media.RightsTerm;
32 import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
33 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
34 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
35 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
36 import eu.etaxonomy.cdm.model.name.Rank;
37 import eu.etaxonomy.cdm.model.name.TypeDesignationStatus;
38 import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
39 import eu.etaxonomy.cdm.model.occurrence.DeterminationModifier;
40 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
41 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
42 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
43
44 /**
45 * @author a.mueller
46 *
47 */
48 public class DefaultTermInitializer implements ITermInitializer {
49 @SuppressWarnings("unused")
50 private static final Logger logger = Logger.getLogger(DefaultTermInitializer.class);
51 protected ITermLoader termLoader = new TermLoader();
52
53 @SuppressWarnings("unchecked")
54 protected static Class[] classesToInitialize = {
55 Language.class,
56 Continent.class,
57 WaterbodyOrCountry.class,
58 Rank.class,
59 TypeDesignationStatus.class,
60 NomenclaturalStatusType.class,
61 SynonymRelationshipType.class,
62 HybridRelationshipType.class,
63 NameRelationshipType.class,
64 TaxonRelationshipType.class,
65 MarkerType.class,
66 AnnotationType.class,
67 NamedAreaType.class,
68 NamedAreaLevel.class,
69 //NomenclaturalCode.class,
70 Feature.class,
71 TdwgArea.class,
72 //NamedArea.class,
73 PresenceTerm.class,
74 AbsenceTerm.class,
75 Sex.class,
76 DerivationEventType.class,
77 PreservationMethod.class,
78 DeterminationModifier.class,
79 StatisticalMeasure.class,
80 RightsTerm.class
81 };
82
83 public void initialize() {
84 Map<UUID,DefinedTermBase> terms = new HashMap<UUID,DefinedTermBase>();
85
86 for(Class<? extends DefinedTermBase<?>> clazz : classesToInitialize) {
87 TermVocabulary<?> voc = termLoader.loadTerms(clazz, terms);
88 setDefinedTerms(clazz,voc);
89 }
90 }
91
92 protected void setDefinedTerms(Class<? extends DefinedTermBase<?>> clazz, TermVocabulary<?> vocabulary) {
93 DefinedTermBase newInstance;
94 try {
95 newInstance = clazz.newInstance();
96 newInstance.setDefaultTerms(vocabulary);
97 } catch (InstantiationException e) {
98 // TODO Exception type
99 throw new RuntimeException("NewInstance could not be initialized in term initializer", e);
100 } catch (IllegalAccessException e) {
101 // TODO Exception type
102 throw new RuntimeException("NewInstance could not be accessed in term initializer", e);
103 }
104
105 }
106
107
108 }