Project

General

Profile

Download (3.97 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

    
10
package eu.etaxonomy.cdm.model.description;
11

    
12
import java.util.HashMap;
13
import java.util.List;
14
import java.util.Map;
15
import java.util.UUID;
16

    
17
import eu.etaxonomy.cdm.common.CdmUtils;
18
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
19
import eu.etaxonomy.cdm.model.common.ILoadableTerm;
20
import eu.etaxonomy.cdm.model.common.Language;
21
import eu.etaxonomy.cdm.model.common.OrderedTermBase;
22
import eu.etaxonomy.cdm.model.common.Representation;
23
import eu.etaxonomy.cdm.model.location.NamedArea;
24
import eu.etaxonomy.cdm.model.taxon.Taxon;
25

    
26
import org.apache.log4j.Logger;
27
import javax.persistence.*;
28
import javax.xml.bind.annotation.XmlAccessType;
29
import javax.xml.bind.annotation.XmlAccessorType;
30
import javax.xml.bind.annotation.XmlRootElement;
31
import javax.xml.bind.annotation.XmlType;
32

    
33
/**
34
 * This (abstract) class represents terms describing the {@link AbsenceTerm absence}
35
 * (like "extinct") or the {@link PresenceTerm presence} (like "cultivated") of a {@link Taxon taxon}
36
 * in a {@link NamedArea named area}. Splitting the terms in two subclasses allows to
37
 * assign them automatically to absent or present status. These terms are only
38
 * used for {@link Distribution distributions}. 
39

    
40
 * 
41
 * @author m.doering
42
 * @version 1.0
43
 * @created 08-Nov-2007 13:06:44
44
 */
45
@XmlAccessorType(XmlAccessType.FIELD)
46
@XmlType(name = "PresenceAbsenceTermBase")
47
@XmlRootElement(name = "PresenceAbsenceTermBase")
48
@Entity
49
public abstract class PresenceAbsenceTermBase<T extends PresenceAbsenceTermBase> extends OrderedTermBase<PresenceAbsenceTermBase> {
50
	private static final Logger logger = Logger.getLogger(PresenceAbsenceTermBase.class);
51

    
52
	private static Map<String, UUID> map = new HashMap<String, UUID>();
53
	private String defaultColor = "000000";
54
	
55

    
56
	/** 
57
	 * Class constructor: creates a new empty presence or absence term.
58
	 * 
59
	 * @see #PresenceAbsenceTermBase(String, String, String)
60
	 */
61
	protected PresenceAbsenceTermBase() {
62
		super();
63
	}
64

    
65
	/** 
66
	 * Class constructor: creates a new presence or absence term with a description
67
	 * (in the {@link Language#DEFAULT() default language}), a label and a label abbreviation.
68
	 * 
69
	 * @param	term  		 the string (in the default language) describing the
70
	 * 						 new presence or absence term to be created 
71
	 * @param	label  		 the string identifying the new presence or absence term to be created
72
	 * @param	labelAbbrev  the string identifying (in abbreviated form) the
73
	 * 						 new presence or absence term to be created
74
	 * @see 				 #PresenceAbsenceTermBase()
75
	 */
76
	protected PresenceAbsenceTermBase(String term, String label, String labelAbbrev) {
77
		super(term, label, labelAbbrev);
78
	}
79
	
80
	/* (non-Javadoc)
81
	 * @see eu.etaxonomy.cdm.model.common.DefinedTermBase#readCsvLine(java.util.List)
82
	 */
83
	@Override
84
	public ILoadableTerm readCsvLine(List csvLine) {
85
		Language lang = Language.DEFAULT();
86
		super.readCsvLine(csvLine, lang);
87
		String abbreviatedLabel = (String)csvLine.get(4);
88
		String uuid = (String)csvLine.get(0);
89
		map.put(abbreviatedLabel, UUID.fromString(uuid));
90
		String color = (String)csvLine.get(5);
91
		this.setDefaultColor(color);
92
		this.getRepresentation(lang).setAbbreviatedLabel(abbreviatedLabel);
93
		return this;
94
	}
95
	
96
	public static PresenceTerm getPresenceAbsenceTermByAbbreviation(String abbrev){
97
		UUID uuid = map.get(abbrev);
98
		if (uuid == null){
99
			logger.warn("Unknown Abbreviation for PresenceAbsenceTerm: " + CdmUtils.Nz(abbrev));
100
			return null;
101
		}
102
		return (PresenceTerm)DefinedTermBase.findByUuid(uuid);
103
	}
104

    
105
	
106
	/**
107
	 * @return the defaultColor
108
	 */
109
	public String getDefaultColor() {
110
		return defaultColor;
111
	}
112

    
113
	/**
114
	 * @param defaultColor the defaultColor to set
115
	 */
116
	//TODO check RGB length 6 and between 000000 and FFFFFF
117
	public void setDefaultColor(String defaultColor) {
118
		this.defaultColor = defaultColor;
119
	}
120

    
121
}
(14-14/30)