View Javadoc
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.referential.taxon;
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.sandre.SandreTaxonExp;
30  import fr.ifremer.quadrige2.core.dao.sandre.SandreTaxonImp;
31  import java.io.Serializable;
32  import java.sql.Timestamp;
33  import java.util.Collection;
34  import java.util.HashSet;
35  
36  /**
37   * Liste des taxons qui sont la référence.
38   * l'ID référent est indépendant des ID taxon car les taxons peuvent être référents à un moment et
39   * ne plus l'être par la suite.
40   * Toutes les données du système doivent donc être reliées au référent et non au taxon qui sont
41   * référents à un moment mais ne peuvent plus l'être par la suite.
42   * Le fonctionnement dans la table TAXON_NAME est le suivant :
43   * - REF_TAXON_ID est toujours renseigné
44   * - si TAXON_NAME_IS_REFER est à vrai, il s'agit d'un taxon référent (toujours le cas s'il s'agit
45   * d'un taxon virtuel)
46   * - sinon c'est un synonyme
47   * Un taxon référent qui devient synonyme voit donc son statut TAXON_NAME_IS_REFER changer et le
48   * nouveau taxon référent qui le remplace récupère l'information REF_TAXON_ID
49   * NB : c'était le comportement initialement prévu.
50   * En réalité, lorsqu'un taxon référent T1-R1 devient synonyme d'un nouveau taxon référent T2, le
51   * taxon T2 prend un nouveau code référent R2 et donc le taxon T1 est lié à R2 (et tous les
52   * synonymes et les résultats qu'il pouvait avoir).
53   * Ce mécanisme a été adopté car il fallait distinguer 2 cas :
54   * 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
55   * alors pu utiliser le même REF_TAXON_ID R1 au lieu d'en créer un et ne pas mettre à jour les
56   * autres synonymes, résultats...
57   * 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 qui
58   * aurait déjà d'autres synonymes, résultats...), dans ce cas le remplacement de la référence R1
59   * pour R2 est nécessaire
60   * La modélisation pourrait être revue car la table REFENCE_TAXON ne se justifie alors plus, on
61   * pourrait directement utiliser une référence à la colonne TAXON_NAME_ID pour désigner les
62   * référents
63   */
64  // HibernateEntity.vsl annotations merge-point
65  public abstract class ReferenceTaxon
66      implements Serializable, Comparable<ReferenceTaxon>
67  {
68      /**
69       * The serial version UID of this class. Needed for serialization.
70       */
71      private static final long serialVersionUID = 9178266362854772000L;
72  
73      // Generate 2 attributes
74      private Integer refTaxonId;
75  
76      /**
77       * Identifiant interne du taxon référent.
78       * @return this.refTaxonId Integer
79       */
80      public Integer getRefTaxonId()
81      {
82          return this.refTaxonId;
83      }
84  
85      /**
86       * Identifiant interne du taxon référent.
87       * @param refTaxonIdIn Integer
88       */
89      public void setRefTaxonId(Integer refTaxonIdIn)
90      {
91          this.refTaxonId = refTaxonIdIn;
92      }
93  
94      private Timestamp updateDt;
95  
96      /**
97       * Date de modification de l'objet, mise à jour par le système
98       * @return this.updateDt Timestamp
99       */
100     public Timestamp getUpdateDt()
101     {
102         return this.updateDt;
103     }
104 
105     /**
106      * Date de modification de l'objet, mise à jour par le système
107      * @param updateDtIn Timestamp
108      */
109     public void setUpdateDt(Timestamp updateDtIn)
110     {
111         this.updateDt = updateDtIn;
112     }
113 
114     // Generate 10 associations
115     private Collection<SandreTaxonExp> sandreTaxonExpIds = new HashSet<SandreTaxonExp>();
116 
117     /**
118      * Taxons sandre pour les exports de données
119      * @return this.sandreTaxonExpIds Collection<SandreTaxonExp>
120      */
121     public Collection<SandreTaxonExp> getSandreTaxonExpIds()
122     {
123         return this.sandreTaxonExpIds;
124     }
125 
126     /**
127      * Taxons sandre pour les exports de données
128      * @param sandreTaxonExpIdsIn Collection<SandreTaxonExp>
129      */
130     public void setSandreTaxonExpIds(Collection<SandreTaxonExp> sandreTaxonExpIdsIn)
131     {
132         this.sandreTaxonExpIds = sandreTaxonExpIdsIn;
133     }
134 
135     /**
136      * Taxons sandre pour les exports de données
137      * @param elementToAdd SandreTaxonExp
138      * @return <tt>true</tt> if this collection changed as a result of the
139      *         call
140      */
141     public boolean addSandreTaxonExpIds(SandreTaxonExp elementToAdd)
142     {
143         return this.sandreTaxonExpIds.add(elementToAdd);
144     }
145 
146     /**
147      * Taxons sandre pour les exports de données
148      * @param elementToRemove SandreTaxonExp
149      * @return <tt>true</tt> if this collection changed as a result of the
150      *         call
151      */
152     public boolean removeSandreTaxonExpIds(SandreTaxonExp elementToRemove)
153     {
154         return this.sandreTaxonExpIds.remove(elementToRemove);
155     }
156 
157     private Collection<SandreTaxonImp> sandreTaxonImpIds = new HashSet<SandreTaxonImp>();
158 
159     /**
160      * Taxons sandre pour les imports de données
161      * @return this.sandreTaxonImpIds Collection<SandreTaxonImp>
162      */
163     public Collection<SandreTaxonImp> getSandreTaxonImpIds()
164     {
165         return this.sandreTaxonImpIds;
166     }
167 
168     /**
169      * Taxons sandre pour les imports de données
170      * @param sandreTaxonImpIdsIn Collection<SandreTaxonImp>
171      */
172     public void setSandreTaxonImpIds(Collection<SandreTaxonImp> sandreTaxonImpIdsIn)
173     {
174         this.sandreTaxonImpIds = sandreTaxonImpIdsIn;
175     }
176 
177     /**
178      * Taxons sandre pour les imports de données
179      * @param elementToAdd SandreTaxonImp
180      * @return <tt>true</tt> if this collection changed as a result of the
181      *         call
182      */
183     public boolean addSandreTaxonImpIds(SandreTaxonImp elementToAdd)
184     {
185         return this.sandreTaxonImpIds.add(elementToAdd);
186     }
187 
188     /**
189      * Taxons sandre pour les imports de données
190      * @param elementToRemove SandreTaxonImp
191      * @return <tt>true</tt> if this collection changed as a result of the
192      *         call
193      */
194     public boolean removeSandreTaxonImpIds(SandreTaxonImp elementToRemove)
195     {
196         return this.sandreTaxonImpIds.remove(elementToRemove);
197     }
198 
199     private Collection<VirtualComponent> virtualComponents = new HashSet<VirtualComponent>();
200 
201     /**
202      * 
203      * @return this.virtualComponents Collection<VirtualComponent>
204      */
205     public Collection<VirtualComponent> getVirtualComponents()
206     {
207         return this.virtualComponents;
208     }
209 
210     /**
211      * 
212      * @param virtualComponentsIn Collection<VirtualComponent>
213      */
214     public void setVirtualComponents(Collection<VirtualComponent> virtualComponentsIn)
215     {
216         this.virtualComponents = virtualComponentsIn;
217     }
218 
219     /**
220      * 
221      * @param elementToAdd VirtualComponent
222      * @return <tt>true</tt> if this collection changed as a result of the
223      *         call
224      */
225     public boolean addVirtualComponents(VirtualComponent elementToAdd)
226     {
227         return this.virtualComponents.add(elementToAdd);
228     }
229 
230     /**
231      * 
232      * @param elementToRemove VirtualComponent
233      * @return <tt>true</tt> if this collection changed as a result of the
234      *         call
235      */
236     public boolean removeVirtualComponents(VirtualComponent elementToRemove)
237     {
238         return this.virtualComponents.remove(elementToRemove);
239     }
240 
241     /**
242      * Returns <code>true</code> if the argument is an ReferenceTaxon instance and all identifiers for this entity
243      * equal the identifiers of the argument entity. Returns <code>false</code> otherwise.
244      */
245     @Override
246     public boolean equals(Object object)
247     {
248         if (this == object)
249         {
250             return true;
251         }
252         if (!(object instanceof ReferenceTaxon))
253         {
254             return false;
255         }
256         final ReferenceTaxon that = (ReferenceTaxon)object;
257         if (this.refTaxonId == null || that.getRefTaxonId() == null || !this.refTaxonId.equals(that.getRefTaxonId()))
258         {
259             return false;
260         }
261         return true;
262     }
263 
264     /**
265      * Returns a hash code based on this entity's identifiers.
266      */
267     @Override
268     public int hashCode()
269     {
270         int hashCode = 0;
271         hashCode = 29 * hashCode + (this.refTaxonId == null ? 0 : this.refTaxonId.hashCode());
272 
273         return hashCode;
274     }
275 
276     /**
277      * Constructs new instances of {@link ReferenceTaxon}.
278      */
279     public static final class Factory
280     {
281         /**
282          * Constructs a new instance of {@link ReferenceTaxon}.
283          * @return new ReferenceTaxonImpl()
284          */
285         public static ReferenceTaxon newInstance()
286         {
287             return new ReferenceTaxonImpl();
288         }
289 
290         /**
291          * Constructs a new instance of {@link ReferenceTaxon}, taking all required and/or
292          * read-only properties as arguments, except for identifiers.
293          * @param updateDt Timestamp
294          * @return newInstance
295          */
296         public static ReferenceTaxon newInstance(Timestamp updateDt)
297         {
298             final ReferenceTaxon entity = new ReferenceTaxonImpl();
299             entity.setUpdateDt(updateDt);
300             return entity;
301         }
302 
303         /**
304          * Constructs a new instance of {@link ReferenceTaxon}, taking all possible properties
305          * (except the identifier(s))as arguments.
306          * @param updateDt Timestamp
307          * @param sandreTaxonExpIds Collection<SandreTaxonExp>
308          * @param sandreTaxonImpIds Collection<SandreTaxonImp>
309          * @param virtualComponents Collection<VirtualComponent>
310          * @return newInstance ReferenceTaxon
311          */
312         public static ReferenceTaxon newInstance(Timestamp updateDt, Collection<SandreTaxonExp> sandreTaxonExpIds, Collection<SandreTaxonImp> sandreTaxonImpIds, Collection<VirtualComponent> virtualComponents)
313         {
314             final ReferenceTaxon entity = new ReferenceTaxonImpl();
315             entity.setUpdateDt(updateDt);
316             entity.setSandreTaxonExpIds(sandreTaxonExpIds);
317             entity.setSandreTaxonImpIds(sandreTaxonImpIds);
318             entity.setVirtualComponents(virtualComponents);
319             return entity;
320         }
321     }
322 
323     /**
324      * @see Comparable#compareTo
325      */
326     public int compareTo(ReferenceTaxon o)
327     {
328         int cmp = 0;
329         if (this.getRefTaxonId() != null)
330         {
331             cmp = this.getRefTaxonId().compareTo(o.getRefTaxonId());
332         }
333         else
334         {
335             if (this.getUpdateDt() != null)
336             {
337                 cmp = (cmp != 0 ? cmp : this.getUpdateDt().compareTo(o.getUpdateDt()));
338             }
339         }
340         return cmp;
341     }
342 // HibernateEntity.vsl merge-point
343 // ReferenceTaxon.java merge-point
344 }