fix #6360 moved all NonViralName functionality to TaxonNameBase
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / name / NonViralName.java
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> extends TaxonNameBase<T, INonViralNameCacheStrategy> implements Cloneable{
60 private static final long serialVersionUID = 4441110073881088033L;
61
62
63 // ************************** CONSTRUCTORS *************/
64
65 //needed by hibernate
66 protected NonViralName(){
67 super();
68 }
69
70 protected NonViralName(Rank rank, HomotypicalGroup homotypicalGroup) {
71 super(rank, homotypicalGroup);
72 }
73
74 protected NonViralName(Rank rank, String genusOrUninomial, String infraGenericEpithet, String specificEpithet, String infraSpecificEpithet, TeamOrPersonBase combinationAuthorship, INomenclaturalReference nomenclaturalReference, String nomenclMicroRef, HomotypicalGroup homotypicalGroup) {
75 super(rank, genusOrUninomial, infraGenericEpithet, specificEpithet, infraSpecificEpithet, combinationAuthorship, nomenclaturalReference, nomenclMicroRef, homotypicalGroup);
76 }
77
78
79 //*********************** CLONE ********************************************************/
80
81 @Override
82 public Object clone() {
83 NonViralName<?> result = (NonViralName<?>)super.clone();
84
85 //no changes to:
86 return result;
87 }
88 }