1 // license-header java merge-point
2 //
3 // Attention: Generated code! Do not modify by hand!
4 // Generated by: hibernate/HibernateEntity.vsl in andromda-hibernate-cartridge.
5 //
6 package fr.ifremer.quadrige2.core.dao.sandre;
7
8 /*-
9 * #%L
10 * Quadrige2 Core :: Server API
11 * %%
12 * Copyright (C) 2017 Ifremer
13 * %%
14 * This program is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Affero General Public License as published by
16 * the Free Software Foundation, either version 3 of the License, or
17 * (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU Affero General Public License
25 * along with this program. If not, see <http://www.gnu.org/licenses/>.
26 * #L%
27 */
28
29 import fr.ifremer.quadrige2.core.dao.referential.taxon.ReferenceTaxon;
30 import java.io.Serializable;
31
32 /**
33 * Taxons sandre pour les exports de données
34 */
35 // HibernateEntity.vsl annotations merge-point
36 public abstract class SandreTaxonExp
37 implements Serializable, Comparable<SandreTaxonExp>
38 {
39 /**
40 * The serial version UID of this class. Needed for serialization.
41 */
42 private static final long serialVersionUID = -227507560601403433L;
43
44 // Generate 3 attributes
45 private Integer sandreTaxonId;
46
47 /**
48 * Identifiant interne du taxon sandre
49 * @return this.sandreTaxonId Integer
50 */
51 public Integer getSandreTaxonId()
52 {
53 return this.sandreTaxonId;
54 }
55
56 /**
57 * Identifiant interne du taxon sandre
58 * @param sandreTaxonIdIn Integer
59 */
60 public void setSandreTaxonId(Integer sandreTaxonIdIn)
61 {
62 this.sandreTaxonId = sandreTaxonIdIn;
63 }
64
65 private String sandreTaxonLb;
66
67 /**
68 * Libellé du taxon sandre
69 * @return this.sandreTaxonLb String
70 */
71 public String getSandreTaxonLb()
72 {
73 return this.sandreTaxonLb;
74 }
75
76 /**
77 * Libellé du taxon sandre
78 * @param sandreTaxonLbIn String
79 */
80 public void setSandreTaxonLb(String sandreTaxonLbIn)
81 {
82 this.sandreTaxonLb = sandreTaxonLbIn;
83 }
84
85 private Integer sandreTaxonExpId;
86
87 /**
88 *
89 * @return this.sandreTaxonExpId Integer
90 */
91 public Integer getSandreTaxonExpId()
92 {
93 return this.sandreTaxonExpId;
94 }
95
96 /**
97 *
98 * @param sandreTaxonExpIdIn Integer
99 */
100 public void setSandreTaxonExpId(Integer sandreTaxonExpIdIn)
101 {
102 this.sandreTaxonExpId = sandreTaxonExpIdIn;
103 }
104
105 // Generate 1 associations
106 private ReferenceTaxon refTaxonId;
107
108 /**
109 * Liste des taxons qui sont la référence.
110 * l'ID référent est indépendant des ID taxon car les taxons peuvent être référents à un moment
111 * et ne
112 * plus l'être par la suite.
113 * Toutes les données du système doivent donc être reliées au référent et non au taxon qui sont
114 * référents à un moment mais ne peuvent plus l'être par la suite.
115 * Le fonctionnement dans la table TAXON_NAME est le suivant :
116 * - REF_TAXON_ID est toujours renseigné
117 * - si TAXON_NAME_IS_REFER est à vrai, il s'agit d'un taxon référent (toujours le cas s'il
118 * s'agit d'un
119 * taxon virtuel)
120 * - sinon c'est un synonyme
121 * Un taxon référent qui devient synonyme voit donc son statut TAXON_NAME_IS_REFER changer et le
122 * nouveau taxon référent qui le remplace récupère l'information REF_TAXON_ID
123 * NB : c'était le comportement initialement prévu.
124 * En réalité, lorsqu'un taxon référent T1-R1 devient synonyme d'un nouveau taxon référent T2,
125 * le taxon
126 * T2 prend un nouveau code référent R2 et donc le taxon T1 est lié à R2 (et tous les synonymes
127 * et les
128 * résultats qu'il pouvait avoir).
129 * Ce mécanisme a été adopté car il fallait distinguer 2 cas :
130 * 1- cas d'un taxon référent T1-R1 qui devient synonyme d'un référent qu'on crée T2 : on aurait
131 * alors
132 * pu utiliser le même REF_TAXON_ID R1 au lieu d'en créer un et ne pas mettre à jour les autres
133 * synonymes, résultats...
134 * 2- cas d'un taxon référent T1-R1 qui devient synonyme d'un référent qui existe déjà T2-R2 (et
135 * qui
136 * aurait déjà d'autres synonymes, résultats...), dans ce cas le remplacement de la référence R1
137 * pour
138 * R2 est nécessaire
139 * La modélisation pourrait être revue car la table REFENCE_TAXON ne se justifie alors plus, on
140 * pourrait directement utiliser une référence à la colonne TAXON_NAME_ID pour désigner les
141 * référents
142 * @return this.refTaxonId ReferenceTaxon
143 */
144 public ReferenceTaxon getRefTaxonId()
145 {
146 return this.refTaxonId;
147 }
148
149 /**
150 * Liste des taxons qui sont la référence.
151 * l'ID référent est indépendant des ID taxon car les taxons peuvent être référents à un moment
152 * et ne
153 * plus l'être par la suite.
154 * Toutes les données du système doivent donc être reliées au référent et non au taxon qui sont
155 * référents à un moment mais ne peuvent plus l'être par la suite.
156 * Le fonctionnement dans la table TAXON_NAME est le suivant :
157 * - REF_TAXON_ID est toujours renseigné
158 * - si TAXON_NAME_IS_REFER est à vrai, il s'agit d'un taxon référent (toujours le cas s'il
159 * s'agit d'un
160 * taxon virtuel)
161 * - sinon c'est un synonyme
162 * Un taxon référent qui devient synonyme voit donc son statut TAXON_NAME_IS_REFER changer et le
163 * nouveau taxon référent qui le remplace récupère l'information REF_TAXON_ID
164 * NB : c'était le comportement initialement prévu.
165 * En réalité, lorsqu'un taxon référent T1-R1 devient synonyme d'un nouveau taxon référent T2,
166 * le taxon
167 * T2 prend un nouveau code référent R2 et donc le taxon T1 est lié à R2 (et tous les synonymes
168 * et les
169 * résultats qu'il pouvait avoir).
170 * Ce mécanisme a été adopté car il fallait distinguer 2 cas :
171 * 1- cas d'un taxon référent T1-R1 qui devient synonyme d'un référent qu'on crée T2 : on aurait
172 * alors
173 * pu utiliser le même REF_TAXON_ID R1 au lieu d'en créer un et ne pas mettre à jour les autres
174 * synonymes, résultats...
175 * 2- cas d'un taxon référent T1-R1 qui devient synonyme d'un référent qui existe déjà T2-R2 (et
176 * qui
177 * aurait déjà d'autres synonymes, résultats...), dans ce cas le remplacement de la référence R1
178 * pour
179 * R2 est nécessaire
180 * La modélisation pourrait être revue car la table REFENCE_TAXON ne se justifie alors plus, on
181 * pourrait directement utiliser une référence à la colonne TAXON_NAME_ID pour désigner les
182 * référents
183 * @param refTaxonIdIn ReferenceTaxon
184 */
185 public void setRefTaxonId(ReferenceTaxon refTaxonIdIn)
186 {
187 this.refTaxonId = refTaxonIdIn;
188 }
189
190 /**
191 * Returns <code>true</code> if the argument is an SandreTaxonExp instance and all identifiers for this entity
192 * equal the identifiers of the argument entity. Returns <code>false</code> otherwise.
193 */
194 @Override
195 public boolean equals(Object object)
196 {
197 if (this == object)
198 {
199 return true;
200 }
201 if (!(object instanceof SandreTaxonExp))
202 {
203 return false;
204 }
205 final SandreTaxonExp that = (SandreTaxonExp)object;
206 if (this.sandreTaxonExpId == null || that.getSandreTaxonExpId() == null || !this.sandreTaxonExpId.equals(that.getSandreTaxonExpId()))
207 {
208 return false;
209 }
210 return true;
211 }
212
213 /**
214 * Returns a hash code based on this entity's identifiers.
215 */
216 @Override
217 public int hashCode()
218 {
219 int hashCode = 0;
220 hashCode = 29 * hashCode + (this.sandreTaxonExpId == null ? 0 : this.sandreTaxonExpId.hashCode());
221
222 return hashCode;
223 }
224
225 /**
226 * Constructs new instances of {@link SandreTaxonExp}.
227 */
228 public static final class Factory
229 {
230 /**
231 * Constructs a new instance of {@link SandreTaxonExp}.
232 * @return new SandreTaxonExpImpl()
233 */
234 public static SandreTaxonExp newInstance()
235 {
236 return new SandreTaxonExpImpl();
237 }
238
239 /**
240 * Constructs a new instance of {@link SandreTaxonExp}, taking all required and/or
241 * read-only properties as arguments, except for identifiers.
242 * @param sandreTaxonId Integer
243 * @param refTaxonId ReferenceTaxon
244 * @return newInstance
245 */
246 public static SandreTaxonExp newInstance(Integer sandreTaxonId, ReferenceTaxon refTaxonId)
247 {
248 final SandreTaxonExp entity = new SandreTaxonExpImpl();
249 entity.setSandreTaxonId(sandreTaxonId);
250 entity.setRefTaxonId(refTaxonId);
251 return entity;
252 }
253
254 /**
255 * Constructs a new instance of {@link SandreTaxonExp}, taking all possible properties
256 * (except the identifier(s))as arguments.
257 * @param sandreTaxonId Integer
258 * @param sandreTaxonLb String
259 * @param refTaxonId ReferenceTaxon
260 * @return newInstance SandreTaxonExp
261 */
262 public static SandreTaxonExp newInstance(Integer sandreTaxonId, String sandreTaxonLb, ReferenceTaxon refTaxonId)
263 {
264 final SandreTaxonExp entity = new SandreTaxonExpImpl();
265 entity.setSandreTaxonId(sandreTaxonId);
266 entity.setSandreTaxonLb(sandreTaxonLb);
267 entity.setRefTaxonId(refTaxonId);
268 return entity;
269 }
270 }
271
272 /**
273 * @see Comparable#compareTo
274 */
275 public int compareTo(SandreTaxonExp o)
276 {
277 int cmp = 0;
278 if (this.getSandreTaxonExpId() != null)
279 {
280 cmp = this.getSandreTaxonExpId().compareTo(o.getSandreTaxonExpId());
281 }
282 else
283 {
284 if (this.getSandreTaxonId() != null)
285 {
286 cmp = (cmp != 0 ? cmp : this.getSandreTaxonId().compareTo(o.getSandreTaxonId()));
287 }
288 if (this.getSandreTaxonLb() != null)
289 {
290 cmp = (cmp != 0 ? cmp : this.getSandreTaxonLb().compareTo(o.getSandreTaxonLb()));
291 }
292 }
293 return cmp;
294 }
295 // HibernateEntity.vsl merge-point
296 // SandreTaxonExp.java merge-point
297 }