ref #6369 remove generics from interfaces
[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>
60 extends TaxonNameBase<T, INonViralNameCacheStrategy>
61 implements INonViralName{
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 }