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 }