Project

General

Profile

Download (3.97 KB) Statistics
| Branch: | Tag: | Revision:
1 9479da48 Andreas Müller
/**
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 0d34aeec Andreas Müller
import java.util.HashMap;
13 2bb03c05 Andreas Müller
import java.util.List;
14 0d34aeec Andreas Müller
import java.util.Map;
15 2bb03c05 Andreas Müller
import java.util.UUID;
16
17 0d34aeec Andreas Müller
import eu.etaxonomy.cdm.common.CdmUtils;
18
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
19 2bb03c05 Andreas Müller
import eu.etaxonomy.cdm.model.common.ILoadableTerm;
20 490f0fea m.geoffroy
import eu.etaxonomy.cdm.model.common.Language;
21 9479da48 Andreas Müller
import eu.etaxonomy.cdm.model.common.OrderedTermBase;
22 2bb03c05 Andreas Müller
import eu.etaxonomy.cdm.model.common.Representation;
23 490f0fea m.geoffroy
import eu.etaxonomy.cdm.model.location.NamedArea;
24
import eu.etaxonomy.cdm.model.taxon.Taxon;
25
26 9479da48 Andreas Müller
import org.apache.log4j.Logger;
27
import javax.persistence.*;
28 68f70701 a.babadshanjan
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 9479da48 Andreas Müller
33
/**
34 490f0fea m.geoffroy
 * 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 9479da48 Andreas Müller
 * @author m.doering
42
 * @version 1.0
43
 * @created 08-Nov-2007 13:06:44
44
 */
45 68f70701 a.babadshanjan
@XmlAccessorType(XmlAccessType.FIELD)
46
@XmlType(name = "PresenceAbsenceTermBase")
47
@XmlRootElement(name = "PresenceAbsenceTermBase")
48 9479da48 Andreas Müller
@Entity
49 a3e78267 Andreas Müller
public abstract class PresenceAbsenceTermBase<T extends PresenceAbsenceTermBase> extends OrderedTermBase<PresenceAbsenceTermBase> {
50 0d34aeec Andreas Müller
	private static final Logger logger = Logger.getLogger(PresenceAbsenceTermBase.class);
51 9479da48 Andreas Müller
52 0d34aeec Andreas Müller
	private static Map<String, UUID> map = new HashMap<String, UUID>();
53 681b057e Andreas Müller
	private String defaultColor = "000000";
54 0d34aeec Andreas Müller
	
55 681b057e Andreas Müller
56 490f0fea m.geoffroy
	/** 
57
	 * Class constructor: creates a new empty presence or absence term.
58
	 * 
59
	 * @see #PresenceAbsenceTermBase(String, String, String)
60 b484eedb Andreas Müller
	 */
61
	protected PresenceAbsenceTermBase() {
62 9479da48 Andreas Müller
		super();
63
	}
64
65 490f0fea m.geoffroy
	/** 
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 41b23b4e Andreas Müller
	protected PresenceAbsenceTermBase(String term, String label, String labelAbbrev) {
77
		super(term, label, labelAbbrev);
78 9479da48 Andreas Müller
	}
79 2bb03c05 Andreas Müller
	
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 0d34aeec Andreas Müller
		String uuid = (String)csvLine.get(0);
89
		map.put(abbreviatedLabel, UUID.fromString(uuid));
90 681b057e Andreas Müller
		String color = (String)csvLine.get(5);
91
		this.setDefaultColor(color);
92 2bb03c05 Andreas Müller
		this.getRepresentation(lang).setAbbreviatedLabel(abbreviatedLabel);
93
		return this;
94
	}
95 0d34aeec Andreas Müller
	
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 9479da48 Andreas Müller
105 681b057e Andreas Müller
	
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 9479da48 Andreas Müller
}