001// license-header java merge-point 002// 003// Attention: Generated code! Do not modify by hand! 004// Generated by: hibernate/HibernateEntity.vsl in andromda-hibernate-cartridge. 005// 006package fr.ifremer.adagio.core.dao.referential.taxon; 007 008/* 009 * #%L 010 * SIH-Adagio :: Core 011 * $Id:$ 012 * $HeadURL:$ 013 * %% 014 * Copyright (C) 2012 - 2014 Ifremer 015 * %% 016 * This program is free software: you can redistribute it and/or modify 017 * it under the terms of the GNU Affero General Public License as published by 018 * the Free Software Foundation, either version 3 of the License, or 019 * (at your option) any later version. 020 * 021 * This program is distributed in the hope that it will be useful, 022 * but WITHOUT ANY WARRANTY; without even the implied warranty of 023 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 024 * GNU General Public License for more details. 025 * 026 * You should have received a copy of the GNU Affero General Public License 027 * along with this program. If not, see <http://www.gnu.org/licenses/>. 028 * #L% 029 */ 030 031import fr.ifremer.adagio.core.dao.referential.location.Location; 032import fr.ifremer.adagio.core.dao.referential.pmfm.Parameter; 033import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm; 034import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValue; 035import fr.ifremer.adagio.core.dao.referential.pmfm.Unit; 036import java.io.Serializable; 037import java.sql.Timestamp; 038import java.util.Date; 039 040/** 041 * Définition des type de mensuration à appliquer (PSFM/paramètre/unité, précision), suivant 042 * l'espèce commerciale, le lieu, la présentation (optionnel), et la période de validité. 043 */ 044// HibernateEntity.vsl annotations merge-point 045public abstract class TaxonGroupLengthPmfm 046 implements Serializable, Comparable<TaxonGroupLengthPmfm> 047{ 048 /** 049 * The serial version UID of this class. Needed for serialization. 050 */ 051 private static final long serialVersionUID = -7900471178485426657L; 052 053 // Generate 6 attributes 054 private Integer id; 055 056 /** 057 * 058 * @return this.id Integer 059 */ 060 public Integer getId() 061 { 062 return this.id; 063 } 064 065 /** 066 * 067 * @param idIn Integer 068 */ 069 public void setId(Integer idIn) 070 { 071 this.id = idIn; 072 } 073 074 private Date startDate; 075 076 /** 077 * Date de début de validité de l'association avec une mensuration. 078 * @return this.startDate Date 079 */ 080 public Date getStartDate() 081 { 082 return this.startDate; 083 } 084 085 /** 086 * Date de début de validité de l'association avec une mensuration. 087 * @param startDateIn Date 088 */ 089 public void setStartDate(Date startDateIn) 090 { 091 this.startDate = startDateIn; 092 } 093 094 private Date endDate; 095 096 /** 097 * Date de fin de validité de l'association avec une mensuration (optionnelle). 098 * Si vide, signifie que l'association est toujours valable 099 * @return this.endDate Date 100 */ 101 public Date getEndDate() 102 { 103 return this.endDate; 104 } 105 106 /** 107 * Date de fin de validité de l'association avec une mensuration (optionnelle). 108 * Si vide, signifie que l'association est toujours valable 109 * @param endDateIn Date 110 */ 111 public void setEndDate(Date endDateIn) 112 { 113 this.endDate = endDateIn; 114 } 115 116 private String description; 117 118 /** 119 * Description de l'association avec une mensuration. 120 * Par exemple : la référence du manuel ou du protocole de terrain, etc. 121 * @return this.description String 122 */ 123 public String getDescription() 124 { 125 return this.description; 126 } 127 128 /** 129 * Description de l'association avec une mensuration. 130 * Par exemple : la référence du manuel ou du protocole de terrain, etc. 131 * @param descriptionIn String 132 */ 133 public void setDescription(String descriptionIn) 134 { 135 this.description = descriptionIn; 136 } 137 138 private Float precision; 139 140 /** 141 * Précision de la mensuration, exprimée dans l'unité de la mensuration. 142 * Il s'agit d'un champ technique, recopié à partir de la table PMFM. 143 * ATTENTION : Doit toujours être cohérent avec la valeur de la table PMFM. 144 * @return this.precision Float 145 */ 146 public Float getPrecision() 147 { 148 return this.precision; 149 } 150 151 /** 152 * Précision de la mensuration, exprimée dans l'unité de la mensuration. 153 * Il s'agit d'un champ technique, recopié à partir de la table PMFM. 154 * ATTENTION : Doit toujours être cohérent avec la valeur de la table PMFM. 155 * @param precisionIn Float 156 */ 157 public void setPrecision(Float precisionIn) 158 { 159 this.precision = precisionIn; 160 } 161 162 private Timestamp updateDate; 163 164 /** 165 * 166 * @return this.updateDate Timestamp 167 */ 168 public Timestamp getUpdateDate() 169 { 170 return this.updateDate; 171 } 172 173 /** 174 * 175 * @param updateDateIn Timestamp 176 */ 177 public void setUpdateDate(Timestamp updateDateIn) 178 { 179 this.updateDate = updateDateIn; 180 } 181 182 // Generate 6 associations 183 private Unit unit; 184 185 /** 186 * Champ technique, recopié à partir de l'unité du PSFM. 187 * ATTENTION : Doit toujours être cohérent avec la table PMFM 188 * @return this.unit Unit 189 */ 190 public Unit getUnit() 191 { 192 return this.unit; 193 } 194 195 /** 196 * Champ technique, recopié à partir de l'unité du PSFM. 197 * ATTENTION : Doit toujours être cohérent avec la table PMFM 198 * @param unitIn Unit 199 */ 200 public void setUnit(Unit unitIn) 201 { 202 this.unit = unitIn; 203 } 204 205 private QualitativeValue dressing; 206 207 /** 208 * Présentation de l'individu / du poisson, servant à déterminer le bon type de mensuration à 209 * appliquer. 210 * @return this.dressing QualitativeValue 211 */ 212 public QualitativeValue getDressing() 213 { 214 return this.dressing; 215 } 216 217 /** 218 * Présentation de l'individu / du poisson, servant à déterminer le bon type de mensuration à 219 * appliquer. 220 * @param dressingIn QualitativeValue 221 */ 222 public void setDressing(QualitativeValue dressingIn) 223 { 224 this.dressing = dressingIn; 225 } 226 227 private Parameter parameter; 228 229 /** 230 * Champ technique, recopié à partir du code pamètre du PSFM. 231 * ATTENTION : Doit toujours être cohérent avec la table PMFM 232 * @return this.parameter Parameter 233 */ 234 public Parameter getParameter() 235 { 236 return this.parameter; 237 } 238 239 /** 240 * Champ technique, recopié à partir du code pamètre du PSFM. 241 * ATTENTION : Doit toujours être cohérent avec la table PMFM 242 * @param parameterIn Parameter 243 */ 244 public void setParameter(Parameter parameterIn) 245 { 246 this.parameter = parameterIn; 247 } 248 249 private Pmfm pmfm; 250 251 /** 252 * PSFM représentant le type de mensuration à appliquer. 253 * Les champs du PSFM généralement utilisés pour exploiter la mansuration (code paramètre, 254 * unité, précision) ont été recopiés dans des champs techniques de la table. 255 * @return this.pmfm Pmfm 256 */ 257 public Pmfm getPmfm() 258 { 259 return this.pmfm; 260 } 261 262 /** 263 * PSFM représentant le type de mensuration à appliquer. 264 * Les champs du PSFM généralement utilisés pour exploiter la mansuration (code paramètre, 265 * unité, précision) ont été recopiés dans des champs techniques de la table. 266 * @param pmfmIn Pmfm 267 */ 268 public void setPmfm(Pmfm pmfmIn) 269 { 270 this.pmfm = pmfmIn; 271 } 272 273 private TaxonGroup taxonGroup; 274 275 /** 276 * Il désigne un ensemble de taxons appartenant à des groupes taxinomiques différents mais ayant 277 * les 278 * mêmes caractéristiques pour un critère donné. Ce critère peut être morpho-anatomique (par 279 * exemple 280 * les strates algales ou la taille des organismes), comportemental (par exemple des groupes 281 * trophiques 282 * ou des modes de déplacement), ou encore basé sur des notions plus complexes comme la 283 * polluo-sensibilité (exemple des groupes écologiques définis pour les macroinvertébrés 284 * benthiques). 285 * Pour un critère donné, les groupes de taxons sont rassemblés dans un regroupement appelé 286 * groupe de 287 * taxons père. 288 * Les groupes de taxons sont de deux catégories : 289 * - Descriptif : c'est à dire seulement utilisé pour l'extraction de données. Les regroupements 290 * de 291 * taxons sont effectués en aval de la mesure effectuée. 292 * - Identification : il s'agit de regroupements utilisés pour identifier des catégories de 293 * taxons sur 294 * le terrain ou en laboratoire, lorsqu'il est difficile d'opérer une identification précise ou 295 * lorsque 296 * celle-ci s'avère tout simplement impossible ou non pertinente. Le regroupement des taxons 297 * s'effectue 298 * alors en amont de la mesure. 299 * Certains groupes peuvent être figés, c'est à dire qu'ils sont définis une bonne fois pour 300 * toute dans 301 * un document. Pour ce dernier cas particulier, il n'y a donc, a priori, pas besoin de mise à 302 * jour, et 303 * encore moins de pouvoir les supprimer : ils sont donc non modifiables (mais ce ne doit pas 304 * être une 305 * règle générale) 306 * @return this.taxonGroup TaxonGroup 307 */ 308 public TaxonGroup getTaxonGroup() 309 { 310 return this.taxonGroup; 311 } 312 313 /** 314 * Il désigne un ensemble de taxons appartenant à des groupes taxinomiques différents mais ayant 315 * les 316 * mêmes caractéristiques pour un critère donné. Ce critère peut être morpho-anatomique (par 317 * exemple 318 * les strates algales ou la taille des organismes), comportemental (par exemple des groupes 319 * trophiques 320 * ou des modes de déplacement), ou encore basé sur des notions plus complexes comme la 321 * polluo-sensibilité (exemple des groupes écologiques définis pour les macroinvertébrés 322 * benthiques). 323 * Pour un critère donné, les groupes de taxons sont rassemblés dans un regroupement appelé 324 * groupe de 325 * taxons père. 326 * Les groupes de taxons sont de deux catégories : 327 * - Descriptif : c'est à dire seulement utilisé pour l'extraction de données. Les regroupements 328 * de 329 * taxons sont effectués en aval de la mesure effectuée. 330 * - Identification : il s'agit de regroupements utilisés pour identifier des catégories de 331 * taxons sur 332 * le terrain ou en laboratoire, lorsqu'il est difficile d'opérer une identification précise ou 333 * lorsque 334 * celle-ci s'avère tout simplement impossible ou non pertinente. Le regroupement des taxons 335 * s'effectue 336 * alors en amont de la mesure. 337 * Certains groupes peuvent être figés, c'est à dire qu'ils sont définis une bonne fois pour 338 * toute dans 339 * un document. Pour ce dernier cas particulier, il n'y a donc, a priori, pas besoin de mise à 340 * jour, et 341 * encore moins de pouvoir les supprimer : ils sont donc non modifiables (mais ce ne doit pas 342 * être une 343 * règle générale) 344 * @param taxonGroupIn TaxonGroup 345 */ 346 public void setTaxonGroup(TaxonGroup taxonGroupIn) 347 { 348 this.taxonGroup = taxonGroupIn; 349 } 350 351 private Location location; 352 353 /** 354 * Lieux (terrestre) d'application de la relation. 355 * @return this.location Location 356 */ 357 public Location getLocation() 358 { 359 return this.location; 360 } 361 362 /** 363 * Lieux (terrestre) d'application de la relation. 364 * @param locationIn Location 365 */ 366 public void setLocation(Location locationIn) 367 { 368 this.location = locationIn; 369 } 370 371 /** 372 * Returns <code>true</code> if the argument is an TaxonGroupLengthPmfm instance and all identifiers for this entity 373 * equal the identifiers of the argument entity. Returns <code>false</code> otherwise. 374 */ 375 @Override 376 public boolean equals(Object object) 377 { 378 if (this == object) 379 { 380 return true; 381 } 382 if (!(object instanceof TaxonGroupLengthPmfm)) 383 { 384 return false; 385 } 386 final TaxonGroupLengthPmfm that = (TaxonGroupLengthPmfm)object; 387 if (this.id == null || that.getId() == null || !this.id.equals(that.getId())) 388 { 389 return false; 390 } 391 return true; 392 } 393 394 /** 395 * Returns a hash code based on this entity's identifiers. 396 */ 397 @Override 398 public int hashCode() 399 { 400 int hashCode = 0; 401 hashCode = 29 * hashCode + (this.id == null ? 0 : this.id.hashCode()); 402 403 return hashCode; 404 } 405 406 /** 407 * Constructs new instances of {@link TaxonGroupLengthPmfm}. 408 */ 409 public static final class Factory 410 { 411 /** 412 * Constructs a new instance of {@link TaxonGroupLengthPmfm}. 413 * @return new TaxonGroupLengthPmfmImpl() 414 */ 415 public static TaxonGroupLengthPmfm newInstance() 416 { 417 return new TaxonGroupLengthPmfmImpl(); 418 } 419 420 /** 421 * Constructs a new instance of {@link TaxonGroupLengthPmfm}, taking all required and/or 422 * read-only properties as arguments, except for identifiers. 423 * @param startDate Date 424 * @param description String 425 * @param updateDate Timestamp 426 * @param unit Unit 427 * @param parameter Parameter 428 * @param pmfm Pmfm 429 * @param taxonGroup TaxonGroup 430 * @param location Location 431 * @return newInstance 432 */ 433 public static TaxonGroupLengthPmfm newInstance(Date startDate, String description, Timestamp updateDate, Unit unit, Parameter parameter, Pmfm pmfm, TaxonGroup taxonGroup, Location location) 434 { 435 final TaxonGroupLengthPmfm entity = new TaxonGroupLengthPmfmImpl(); 436 entity.setStartDate(startDate); 437 entity.setDescription(description); 438 entity.setUpdateDate(updateDate); 439 entity.setUnit(unit); 440 entity.setParameter(parameter); 441 entity.setPmfm(pmfm); 442 entity.setTaxonGroup(taxonGroup); 443 entity.setLocation(location); 444 return entity; 445 } 446 447 /** 448 * Constructs a new instance of {@link TaxonGroupLengthPmfm}, taking all possible properties 449 * (except the identifier(s))as arguments. 450 * @param startDate Date 451 * @param endDate Date 452 * @param description String 453 * @param precision Float 454 * @param updateDate Timestamp 455 * @param unit Unit 456 * @param dressing QualitativeValue 457 * @param parameter Parameter 458 * @param pmfm Pmfm 459 * @param taxonGroup TaxonGroup 460 * @param location Location 461 * @return newInstance TaxonGroupLengthPmfm 462 */ 463 public static TaxonGroupLengthPmfm newInstance(Date startDate, Date endDate, String description, Float precision, Timestamp updateDate, Unit unit, QualitativeValue dressing, Parameter parameter, Pmfm pmfm, TaxonGroup taxonGroup, Location location) 464 { 465 final TaxonGroupLengthPmfm entity = new TaxonGroupLengthPmfmImpl(); 466 entity.setStartDate(startDate); 467 entity.setEndDate(endDate); 468 entity.setDescription(description); 469 entity.setPrecision(precision); 470 entity.setUpdateDate(updateDate); 471 entity.setUnit(unit); 472 entity.setDressing(dressing); 473 entity.setParameter(parameter); 474 entity.setPmfm(pmfm); 475 entity.setTaxonGroup(taxonGroup); 476 entity.setLocation(location); 477 return entity; 478 } 479 } 480 481 /** 482 * @see Comparable#compareTo 483 */ 484 public int compareTo(TaxonGroupLengthPmfm o) 485 { 486 int cmp = 0; 487 if (this.getId() != null) 488 { 489 cmp = this.getId().compareTo(o.getId()); 490 } 491 else 492 { 493 if (this.getStartDate() != null) 494 { 495 cmp = (cmp != 0 ? cmp : this.getStartDate().compareTo(o.getStartDate())); 496 } 497 if (this.getEndDate() != null) 498 { 499 cmp = (cmp != 0 ? cmp : this.getEndDate().compareTo(o.getEndDate())); 500 } 501 if (this.getDescription() != null) 502 { 503 cmp = (cmp != 0 ? cmp : this.getDescription().compareTo(o.getDescription())); 504 } 505 if (this.getPrecision() != null) 506 { 507 cmp = (cmp != 0 ? cmp : this.getPrecision().compareTo(o.getPrecision())); 508 } 509 if (this.getUpdateDate() != null) 510 { 511 cmp = (cmp != 0 ? cmp : this.getUpdateDate().compareTo(o.getUpdateDate())); 512 } 513 } 514 return cmp; 515 } 516// HibernateEntity.vsl merge-point 517// TaxonGroupLengthPmfm.java merge-point 518}