Project

General

Profile

Download (3.23 KB) Statistics
| Branch: | Tag: | Revision:
1 9479da48 Andreas Müller
/**
2
* Copyright (C) 2007 EDIT
3 2aa73e7b Cherian Mathew
* European Distributed Institute of Taxonomy
4 9479da48 Andreas Müller
* http://www.e-taxonomy.eu
5 2aa73e7b Cherian Mathew
*
6 9479da48 Andreas Müller
* 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
10
package eu.etaxonomy.cdm.model.location;
11
12
13 892efc69 Andreas Kohlbecker
import java.util.HashMap;
14
import java.util.Map;
15 0ed0ef35 Andreas Müller
import java.util.UUID;
16
17 9f350f9f Andreas Müller
import javax.persistence.Entity;
18
import javax.xml.bind.annotation.XmlAccessType;
19
import javax.xml.bind.annotation.XmlAccessorType;
20
import javax.xml.bind.annotation.XmlRootElement;
21
import javax.xml.bind.annotation.XmlType;
22 9479da48 Andreas Müller
23
import org.apache.log4j.Logger;
24 ee91bcd9 ben.clark
import org.hibernate.envers.Audited;
25 51db8d4a ben.clark
import org.hibernate.search.annotations.Indexed;
26 f6765014 ben.clark
27 9f350f9f Andreas Müller
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
28 533cbb43 Andreas Müller
import eu.etaxonomy.cdm.model.common.TermType;
29 9f350f9f Andreas Müller
import eu.etaxonomy.cdm.model.common.TermVocabulary;
30 9479da48 Andreas Müller
31
/**
32 ece28283 a.babadshanjan
 * Controlled vocabulary to differentiate categories of areas
33 9479da48 Andreas Müller
 * @author m.doering
34
 * @created 08-Nov-2007 13:06:37
35
 */
36 4e9e556b a.babadshanjan
@XmlAccessorType(XmlAccessType.FIELD)
37
@XmlType(name = "NamedAreaType")
38
@XmlRootElement(name = "NamedAreaType")
39 9479da48 Andreas Müller
@Entity
40 51db8d4a ben.clark
@Indexed(index = "eu.etaxonomy.cdm.model.common.DefinedTermBase")
41 ee91bcd9 ben.clark
@Audited
42 32abcc97 Andreas Müller
public class NamedAreaType extends DefinedTermBase<NamedAreaType> {
43
	private static final long serialVersionUID = 8280172429797206548L;
44
	private static final Logger logger = Logger.getLogger(NamedAreaType.class);
45 9479da48 Andreas Müller
46 2aa73e7b Cherian Mathew
	protected static Map<UUID, NamedAreaType> termMap = null;
47
48 0ed0ef35 Andreas Müller
	private static final UUID uuidNaturalArea = UUID.fromString("cc33167c-d366-4030-b984-6b14e4f5fd22");
49
	private static final UUID uuidAdministrationArea = UUID.fromString("1799f581-f425-40d6-a4db-ec2c638c0e92");
50 2aa73e7b Cherian Mathew
51
52 b484eedb Andreas Müller
	/**
53
	 * Factory method
54
	 * @return
55
	 */
56 41b23b4e Andreas Müller
	public static NamedAreaType NewInstance(String term, String label, String labelAbbrev){
57 32abcc97 Andreas Müller
		logger.debug("NewInstance");
58 41b23b4e Andreas Müller
		return new NamedAreaType(term, label, labelAbbrev);
59 b484eedb Andreas Müller
	}
60 2aa73e7b Cherian Mathew
61 9e3239f6 Andreas Müller
// *********************** CONSTRUCTOR ******************************/
62 2aa73e7b Cherian Mathew
63 9e3239f6 Andreas Müller
	//for hibernate use only
64
	@Deprecated
65
	protected NamedAreaType(){
66
		super(TermType.NamedAreaType);
67 2aa73e7b Cherian Mathew
	}
68 9e3239f6 Andreas Müller
69
	private NamedAreaType(String term, String label, String labelAbbrev) {
70
		super(TermType.NamedAreaType, term, label, labelAbbrev);
71
	}
72 2aa73e7b Cherian Mathew
73 892efc69 Andreas Kohlbecker
//************************** METHODS ********************************
74 2aa73e7b Cherian Mathew
75
76 8cc82a87 Andreas Müller
	/* (non-Javadoc)
77
	 * @see eu.etaxonomy.cdm.model.common.DefinedTermBase#resetTerms()
78
	 */
79
	@Override
80
	public void resetTerms(){
81
		termMap = null;
82
	}
83
84 2aa73e7b Cherian Mathew
85 892efc69 Andreas Kohlbecker
	protected static NamedAreaType getTermByUuid(UUID uuid){
86 2aa73e7b Cherian Mathew
	    if (termMap == null || termMap.isEmpty()){
87
            return getTermByClassAndUUID(NamedAreaType.class, uuid);
88
        } else {
89
            return termMap.get(uuid);
90
        }
91 892efc69 Andreas Kohlbecker
	}
92 2aa73e7b Cherian Mathew
93 9479da48 Andreas Müller
	/**
94
	 * The boundaries are given by natural factors (mountains, valleys, climate, etc.)
95
	 */
96
	public static final NamedAreaType NATURAL_AREA(){
97 892efc69 Andreas Kohlbecker
		return getTermByUuid(uuidNaturalArea);
98 9479da48 Andreas Müller
	}
99
100
	/**
101
	 * The boundaries depend on administration (county, state, reserve, etc.)
102
	 */
103
	public static final NamedAreaType ADMINISTRATION_AREA(){
104 892efc69 Andreas Kohlbecker
		return getTermByUuid(uuidAdministrationArea);
105 9479da48 Andreas Müller
	}
106
107 f6765014 ben.clark
	@Override
108
	protected void setDefaultTerms(TermVocabulary<NamedAreaType> termVocabulary) {
109 892efc69 Andreas Kohlbecker
		termMap = new HashMap<UUID, NamedAreaType>();
110
		for (NamedAreaType term : termVocabulary.getTerms()){
111 2aa73e7b Cherian Mathew
			termMap.put(term.getUuid(), term);
112
		}
113 f6765014 ben.clark
	}
114 2aa73e7b Cherian Mathew
115 9479da48 Andreas Müller
}