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.quadrige3.core.dao.referential.taxon;
7   
8   /*-
9    * #%L
10   * Quadrige3 Core :: Client API
11   * %%
12   * Copyright (C) 2017 - 2024 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  import java.io.Serializable;
29  
30  /**
31   * 
32   */
33  // HibernateEntity.vsl annotations merge-point
34  public abstract class VirtualComponent
35      implements Serializable, Comparable<VirtualComponent>
36  {
37      /**
38       * The serial version UID of this class. Needed for serialization.
39       */
40      private static final long serialVersionUID = -2345051973744045898L;
41  
42      private VirtualComponentPK virtualComponentPk;
43  
44      /**
45       * Get the composite primary key identifier class
46       * @return virtualComponentPk
47       */
48      public VirtualComponentPK getVirtualComponentPk()
49      {
50          return this.virtualComponentPk;
51      }
52  
53      /**
54       * Set the composite primary key identifier class
55       * @param virtualComponentPkIn
56       */
57      public void setVirtualComponentPk(VirtualComponentPK virtualComponentPkIn) {
58          this.virtualComponentPk = virtualComponentPkIn;
59      }
60  
61      // Generate 0 attributes
62      // Generate 2 associations
63      private TaxonName taxonName;
64  
65      /**
66       * Liste les taxons (interface avec ERMS)
67       * @return this.taxonName TaxonName
68       */
69      public TaxonName getTaxonName()
70      {
71          return this.taxonName;
72      }
73  
74      /**
75       * Liste les taxons (interface avec ERMS)
76       * @param taxonNameIn TaxonName
77       */
78      public void setTaxonName(TaxonName taxonNameIn)
79      {
80          this.taxonName = taxonNameIn;
81      }
82  
83      private ReferenceTaxon referenceTaxon;
84  
85      /**
86       * Liste des taxons qui sont la référence.
87       * l'ID référent est indépendant des ID taxon car les taxons peuvent être référents à un moment
88       * et ne
89       * plus l'être par la suite.
90       * Toutes les données du système doivent donc être reliées au référent et non au taxon qui sont
91       * référents à un moment mais ne peuvent plus l'être par la suite.
92       * Le fonctionnement dans la table TAXON_NAME est le suivant :
93       * - REF_TAXON_ID est toujours renseigné
94       * - si TAXON_NAME_IS_REFER est à vrai, il s'agit d'un taxon référent (toujours le cas s'il
95       * s'agit d'un
96       * taxon virtuel)
97       * - sinon c'est un synonyme
98       * Un taxon référent qui devient synonyme voit donc son statut TAXON_NAME_IS_REFER changer et le
99       * nouveau taxon référent qui le remplace récupère l'information REF_TAXON_ID
100      * NB : c'était le comportement initialement prévu.
101      * En réalité, lorsqu'un taxon référent T1-R1 devient synonyme d'un nouveau taxon référent T2,
102      * le taxon
103      * T2 prend un nouveau code référent R2 et donc le taxon T1 est lié à R2 (et tous les synonymes
104      * et les
105      * résultats qu'il pouvait avoir).
106      * Ce mécanisme a été adopté car il fallait distinguer 2 cas :
107      * 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
108      * alors
109      * pu utiliser le même REF_TAXON_ID R1 au lieu d'en créer un et ne pas mettre à jour les autres
110      * synonymes, résultats...
111      * 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
112      * qui
113      * aurait déjà d'autres synonymes, résultats...), dans ce cas le remplacement de la référence R1
114      * pour
115      * R2 est nécessaire
116      * La modélisation pourrait être revue car la table REFENCE_TAXON ne se justifie alors plus, on
117      * pourrait directement utiliser une référence à la colonne TAXON_NAME_ID pour désigner les
118      * référents
119      * @return this.referenceTaxon ReferenceTaxon
120      */
121     public ReferenceTaxon getReferenceTaxon()
122     {
123         return this.referenceTaxon;
124     }
125 
126     /**
127      * Liste des taxons qui sont la référence.
128      * l'ID référent est indépendant des ID taxon car les taxons peuvent être référents à un moment
129      * et ne
130      * plus l'être par la suite.
131      * Toutes les données du système doivent donc être reliées au référent et non au taxon qui sont
132      * référents à un moment mais ne peuvent plus l'être par la suite.
133      * Le fonctionnement dans la table TAXON_NAME est le suivant :
134      * - REF_TAXON_ID est toujours renseigné
135      * - si TAXON_NAME_IS_REFER est à vrai, il s'agit d'un taxon référent (toujours le cas s'il
136      * s'agit d'un
137      * taxon virtuel)
138      * - sinon c'est un synonyme
139      * Un taxon référent qui devient synonyme voit donc son statut TAXON_NAME_IS_REFER changer et le
140      * nouveau taxon référent qui le remplace récupère l'information REF_TAXON_ID
141      * NB : c'était le comportement initialement prévu.
142      * En réalité, lorsqu'un taxon référent T1-R1 devient synonyme d'un nouveau taxon référent T2,
143      * le taxon
144      * T2 prend un nouveau code référent R2 et donc le taxon T1 est lié à R2 (et tous les synonymes
145      * et les
146      * résultats qu'il pouvait avoir).
147      * Ce mécanisme a été adopté car il fallait distinguer 2 cas :
148      * 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
149      * alors
150      * pu utiliser le même REF_TAXON_ID R1 au lieu d'en créer un et ne pas mettre à jour les autres
151      * synonymes, résultats...
152      * 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
153      * qui
154      * aurait déjà d'autres synonymes, résultats...), dans ce cas le remplacement de la référence R1
155      * pour
156      * R2 est nécessaire
157      * La modélisation pourrait être revue car la table REFENCE_TAXON ne se justifie alors plus, on
158      * pourrait directement utiliser une référence à la colonne TAXON_NAME_ID pour désigner les
159      * référents
160      * @param referenceTaxonIn ReferenceTaxon
161      */
162     public void setReferenceTaxon(ReferenceTaxon referenceTaxonIn)
163     {
164         this.referenceTaxon = referenceTaxonIn;
165     }
166 
167     /**
168      * This entity does not have any identifiers
169      * and is not extending any other entity,
170      * so this method will only return <code>true</code> if the argument reference and <code>this</code>
171      * refer to the same object.
172      */
173     @Override
174     public boolean equals(Object object)
175     {
176         return super.equals(object);
177     }
178 
179     /**
180      * This entity does not have any identifiers
181      * and is not extending any other entity,
182      * so this method will only take the identifiers of this entity into account when calculating the hash code.
183      */
184     @Override
185     public int hashCode()
186     {
187         return super.hashCode();
188     }
189 
190     /**
191      * Constructs new instances of {@link VirtualComponent}.
192      */
193     public static final class Factory
194     {
195         /**
196          * Constructs a new instance of {@link VirtualComponent}.
197          * @return new VirtualComponentImpl()
198          */
199         public static VirtualComponent newInstance()
200         {
201             return new VirtualComponentImpl();
202         }
203 
204 
205         /**
206          * Constructs a new instance of {@link VirtualComponent}, taking all possible properties
207          * (except the identifier(s))as arguments.
208          * @param taxonName TaxonName
209          * @param referenceTaxon ReferenceTaxon
210          * @return newInstance VirtualComponent
211          */
212         public static VirtualComponent newInstance(TaxonName taxonName, ReferenceTaxon referenceTaxon)
213         {
214             final VirtualComponent entity = new VirtualComponentImpl();
215             entity.setTaxonName(taxonName);
216             entity.setReferenceTaxon(referenceTaxon);
217             return entity;
218         }
219     }
220 
221     /**
222      * @see Comparable#compareTo
223      */
224     public int compareTo(VirtualComponent o)
225     {
226         int cmp = 0;
227         if (this.getVirtualComponentPk() != null)
228         {
229             cmp = this.getVirtualComponentPk().compareTo(o.getVirtualComponentPk());
230         }
231         return cmp;
232     }
233 // HibernateEntity.vsl merge-point
234 // VirtualComponent.java merge-point
235 }