Project

General

Profile

Download (3.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

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

    
19
import org.hibernate.envers.Audited;
20
import org.hibernate.search.annotations.Indexed;
21
import org.springframework.beans.factory.annotation.Configurable;
22

    
23
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
24
import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
25
import eu.etaxonomy.cdm.strategy.cache.name.INonViralNameCacheStrategy;
26
import eu.etaxonomy.cdm.validation.Level2;
27
import eu.etaxonomy.cdm.validation.Level3;
28
import eu.etaxonomy.cdm.validation.annotation.CorrectEpithetsForRank;
29
import eu.etaxonomy.cdm.validation.annotation.NameMustHaveAuthority;
30
import eu.etaxonomy.cdm.validation.annotation.NoDuplicateNames;
31

    
32
/**
33
 * The taxon name class for all non viral taxa. Parenthetical authorship is derived
34
 * from basionym relationship. The scientific name including author strings and
35
 * maybe year can be stored as a string in the inherited {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#getTitleCache() titleCache} attribute.
36
 * The year itself is an information obtained from the {@link eu.etaxonomy.cdm.model.reference.Reference#getYear() nomenclatural reference}.
37
 * The scientific name string without author strings and year can be stored in the {@link #getNameCache() nameCache} attribute.
38
 * <P>
39
 * This class corresponds partially to: <ul>
40
 * <li> TaxonName according to the TDWG ontology
41
 * <li> ScientificName and CanonicalName according to the TCS
42
 * <li> ScientificName according to the ABCD schema
43
 * </ul>
44
 *
45
 * @author m.doering
46
 * @version 1.0
47
 * @created 08-Nov-2007 13:06:39
48
 */
49
@XmlAccessorType(XmlAccessType.FIELD)
50
@XmlType(name = "NonViralName", propOrder = {})
51
@XmlRootElement(name = "NonViralName")
52
@Entity
53
@Indexed(index = "eu.etaxonomy.cdm.model.name.TaxonNameBase")
54
@Audited
55
@Configurable
56
@CorrectEpithetsForRank(groups = Level2.class)
57
@NameMustHaveAuthority(groups = Level2.class)
58
@NoDuplicateNames(groups = Level3.class)
59
public class NonViralName<T extends NonViralName>
60
        extends TaxonNameBase<T, INonViralNameCacheStrategy>
61
        implements INonViralName<T>{
62

    
63
    private static final long serialVersionUID = 4441110073881088033L;
64

    
65

    
66
// ************************** CONSTRUCTORS *************/
67

    
68
    //needed by hibernate
69
    protected NonViralName(){
70
        super();
71
    }
72

    
73
    protected NonViralName(Rank rank, HomotypicalGroup homotypicalGroup) {
74
        super(rank, homotypicalGroup);
75
    }
76

    
77
    protected NonViralName(Rank rank, String genusOrUninomial, String infraGenericEpithet, String specificEpithet, String infraSpecificEpithet, TeamOrPersonBase combinationAuthorship, INomenclaturalReference nomenclaturalReference, String nomenclMicroRef, HomotypicalGroup homotypicalGroup) {
78
        super(rank, genusOrUninomial, infraGenericEpithet, specificEpithet, infraSpecificEpithet, combinationAuthorship, nomenclaturalReference, nomenclMicroRef, homotypicalGroup);
79
    }
80

    
81

    
82
//*********************** CLONE ********************************************************/
83

    
84
    @Override
85
    public Object clone() {
86
        NonViralName<?> result = (NonViralName<?>)super.clone();
87

    
88
        //no changes to:
89
        return result;
90
    }
91
}
(18-18/30)