Project

General

Profile

Download (4.54 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.name;
11

    
12
import javax.persistence.Entity;
13
import javax.xml.bind.annotation.XmlAccessType;
14
import javax.xml.bind.annotation.XmlAccessorType;
15
import javax.xml.bind.annotation.XmlSeeAlso;
16
import javax.xml.bind.annotation.XmlType;
17

    
18
import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;
19
import org.hibernate.envers.Audited;
20

    
21
import eu.etaxonomy.cdm.model.term.OrderedTermBase;
22
import eu.etaxonomy.cdm.model.term.TermType;
23

    
24
/**
25
 * The class representing status (categories) of {@link SpecimenTypeDesignation specimen type designations}
26
 * for a {@link TaxonName taxon name} or a set of them. Within this set {@link NameRelationshipType#BASIONYM() basionyms}
27
 * or {@link NameRelationshipType#REPLACED_SYNONYM() replaced synonyms}, in case of reclassifications,
28
 * will be here referred as "type-bringing" taxon names.
29
 * <P>
30
 * The different status indicate whether the {@link eu.etaxonomy.cdm.model.occurrence.Specimen specimens} used as types
31
 * in a designation are duplicates, replacements, related specimens etc.
32
 * <P>
33
 * A standard (ordered) list of type designation status instances will be
34
 * automatically created as the project starts. But this class allows to extend
35
 * this standard list by creating new instances of additional type designation
36
 * status if needed.
37
 * <P>
38
 * This class corresponds to: <ul>
39
 * <li> NomencalturalTypeTypeTerm according to the TDWG ontology
40
 * <li> NomenclaturalTypeStatusOfUnitsEnum according to the TCS
41
 * </ul>
42
 *
43
 * @author m.doering
44
 * @since 08-Nov-2007 13:07:00
45
 */
46
@XmlAccessorType(XmlAccessType.FIELD)
47
@XmlType(name = "TypeDesignationStatusBase")
48
@XmlSeeAlso({
49
	NameTypeDesignationStatus.class,
50
	SpecimenTypeDesignationStatus.class
51
})
52
@Entity
53
@Audited
54
public abstract class TypeDesignationStatusBase<T extends TypeDesignationStatusBase<T>>
55
        extends OrderedTermBase<T> {
56

    
57
	private static final long serialVersionUID = -7204587330204725285L;
58
	static Logger logger = LogManager.getLogger(TypeDesignationStatusBase.class);
59

    
60
//********************************** Constructor *********************************/
61

    
62
  	//for hibernate use only
63
  	@Deprecated
64
  	protected TypeDesignationStatusBase(){super(TermType.Unknown);}
65

    
66
	/**
67
	 * Class constructor: creates a new empty type designation status instance.
68
	 *
69
	 * @see 	#NameTypeDesignationStatus(String, String, String)
70
	 * @see 	#SpecimenTypeDesignationStatus(String, String, String)
71
	 */
72
	protected TypeDesignationStatusBase(TermType type) {
73
		super(type);
74
	}
75

    
76

    
77
	/**
78
	 * Class constructor: creates an additional type designation status instance
79
	 * with a description (in the {@link eu.etaxonomy.cdm.model.common.Language#DEFAULT() default language}), a label
80
	 * and a label abbreviation.
81
	 *
82
	 * @param	term  		 the string (in the default language) describing the
83
	 * 						 new type designation status to be created
84
	 * @param	label  		 the string identifying the new type designation
85
	 * 						 status to be created
86
	 * @param	labelAbbrev  the string identifying (in abbreviated form) the
87
	 * 						 new type designation status to be created
88
	 * @see 				 #SnameTypeDesignationStatus()
89
	 * @see 				 #SpecimenTypeDesignationStatus()
90
	 */
91
	protected TypeDesignationStatusBase(TermType type, String term, String label, String labelAbbrev) {
92
		super(type, term, label, labelAbbrev);
93
	}
94

    
95
    /**
96
     * Returns the boolean value indicating whether <i>this</i> type designation
97
     * status is itself "lectotype" or a kind of "lectotype" (<code>true</code>) or not
98
     * (<code>false</code>). Lectotyp is used in a wider sense here including all
99
     * status requiring a designation source including neotypes and epitypes.<BR>
100
     *
101
     * A "lectotype" in the wider sense is a {@link eu.etaxonomy.cdm.model.occurrence.DerivedUnit
102
     * specimen or illustration} or a {@link TaxonName taxon name}
103
     * designated as the nomenclatural type, when no holotype was indicated at the time of
104
     * publication of the "type-providing" {@link TaxonName taxon name}, when the
105
     * holotype is found to be assigned to taxon names belonging to more than
106
     * one {@link HomotypicalGroup homotypical group}, or as long as it is missing.
107
     *
108
     * @see  #LECTOTYPE()
109
     * @see  #HOLOTYPE()
110
     * @see  eu.etaxonomy.cdm.model.term.DefinedTermBase#getKindOf()
111
     */
112
    public abstract boolean hasDesignationSource();
113
}
(37-37/39)