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