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.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 }