Project

General

Profile

Download (3.7 KB) Statistics
| Branch: | Tag: | Revision:
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
}
(5-5/50)