(no commit message)
[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 eu.etaxonomy.cdm.model.agent.Agent;
14 import eu.etaxonomy.cdm.model.agent.Team;
15 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
16 import eu.etaxonomy.cdm.strategy.BotanicNameCacheStrategy;
17
18 import org.apache.log4j.Logger;
19 import org.hibernate.annotations.Cascade;
20 import org.hibernate.annotations.CascadeType;
21 import org.springframework.context.support.FileSystemXmlApplicationContext;
22
23 import java.util.*;
24 import javax.persistence.*;
25
26 /**
27 * Taxon name class for all non viral taxa. Parentetical authorship is derived
28 * from basionym relationship.
29 * @author m.doering
30 * @version 1.0
31 * @created 08-Nov-2007 13:06:39
32 */
33 @Entity
34 public class NonViralName extends TaxonNameBase {
35 static Logger logger = Logger.getLogger(NonViralName.class);
36 //The suprageneric or the genus name
37 private String uninomial;
38 //Genus subdivision epithet
39 private String infraGenericEpithet;
40 //species epithet
41 private String specificEpithet;
42 //Species subdivision epithet
43 private String infraSpecificEpithet;
44 //Author team that published the present combination
45 private Agent combinationAuthorTeam;
46 //Author team that contributed to the publication of the present combination
47 private Agent exCombinationAuthorTeam;
48 //concatenated und formated authorteams including basionym and combination authors
49 private String authorshipCache;
50
51 //needed by hibernate
52 protected NonViralName(){
53 super();
54 setNameCacheStrategy();
55 }
56
57 private void setNameCacheStrategy(){
58 if (getClass() == NonViralName.class){
59 this.cacheStrategy = BotanicNameCacheStrategy.NewInstance();
60 logger.warn("NonViralName uses BotanicNameCacheStrategy");
61 }
62
63 }
64
65 public NonViralName(Rank rank) {
66 super(rank);
67 setNameCacheStrategy();
68 }
69 public NonViralName(Rank rank, String genusOrUninomial, String specificEpithet, String infraSpecificEpithet, Agent combinationAuthorTeam, INomenclaturalReference nomenclaturalReference, String nomenclMicroRef) {
70 super(rank);
71 setNameCacheStrategy();
72 setUninomial(genusOrUninomial);
73 setSpecificEpithet(specificEpithet);
74 setInfraSpecificEpithet(infraSpecificEpithet);
75 setCombinationAuthorTeam(combinationAuthorTeam);
76 setNomenclaturalReference(nomenclaturalReference);
77 this.setNomenclaturalMicroReference(nomenclMicroRef);
78 }
79 @ManyToOne
80 @Cascade({CascadeType.SAVE_UPDATE})
81 public Agent getCombinationAuthorTeam(){
82 return this.combinationAuthorTeam;
83 }
84 public void setCombinationAuthorTeam(Agent combinationAuthorTeam){
85 this.combinationAuthorTeam = combinationAuthorTeam;
86 }
87
88 @ManyToOne
89 @Cascade({CascadeType.SAVE_UPDATE})
90 public Agent getExCombinationAuthorTeam(){
91 return this.exCombinationAuthorTeam;
92 }
93 public void setExCombinationAuthorTeam(Agent exCombinationAuthorTeam){
94 this.exCombinationAuthorTeam = exCombinationAuthorTeam;
95 }
96
97 public String getUninomial(){
98 return this.uninomial;
99 }
100 public void setUninomial(String uninomial){
101 this.uninomial = uninomial;
102 }
103
104
105 public String getInfraGenericEpithet(){
106 return this.infraGenericEpithet;
107 }
108
109 /**
110 *
111 * @param infraGenericEpithet infraGenericEpithet
112 */
113 public void setInfraGenericEpithet(String infraGenericEpithet){
114 this.infraGenericEpithet = infraGenericEpithet;
115 }
116
117 public String getSpecificEpithet(){
118 return this.specificEpithet;
119 }
120
121 /**
122 *
123 * @param specificEpithet specificEpithet
124 */
125 public void setSpecificEpithet(String specificEpithet){
126 this.specificEpithet = specificEpithet;
127 }
128
129 public String getInfraSpecificEpithet(){
130 return this.infraSpecificEpithet;
131 }
132
133 /**
134 *
135 * @param infraSpecificEpithet infraSpecificEpithet
136 */
137 public void setInfraSpecificEpithet(String infraSpecificEpithet){
138 this.infraSpecificEpithet = infraSpecificEpithet;
139 }
140
141 @Override
142 public String generateTitle(){
143 if (cacheStrategy == null){
144 logger.warn("No CacheStrategy defined for nonViralName: " + this.toString());
145 return null;
146 }else{
147 return cacheStrategy.getFullNameCache(this);
148 }
149 }
150
151 /**
152 * returns concatenated und formated authorteams including basionym and
153 * combination authors
154 */
155 public String getAuthorshipCache() {
156 return authorshipCache;
157 }
158
159 public void setAuthorshipCache(String authorshipCache) {
160 this.authorshipCache = authorshipCache;
161 }
162
163 @Override
164 @Transient
165 public boolean isCodeCompliant() {
166 // TODO Auto-generated method stub
167 return false;
168 }
169
170 }