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.data.sample; 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.administration.programStrategy.Program; 032import fr.ifremer.adagio.core.dao.administration.user.Department; 033import fr.ifremer.adagio.core.dao.administration.user.Person; 034import fr.ifremer.adagio.core.dao.data.batch.Batch; 035import fr.ifremer.adagio.core.dao.data.fishingArea.FishingArea; 036import fr.ifremer.adagio.core.dao.data.measure.SampleMeasurement; 037import fr.ifremer.adagio.core.dao.data.operation.FishingOperation; 038import fr.ifremer.adagio.core.dao.referential.QualityFlag; 039import fr.ifremer.adagio.core.dao.referential.pmfm.Matrix; 040import fr.ifremer.adagio.core.dao.referential.pmfm.Unit; 041import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxon; 042import fr.ifremer.adagio.core.dao.referential.taxon.TaxonGroup; 043import java.io.Serializable; 044import java.sql.Timestamp; 045import java.util.Collection; 046import java.util.Date; 047import java.util.HashSet; 048 049/** 050 * Un prélèvement représente un (et un seul) support, prélevé au cours d'une opération de peche, 051 * d'un échantillonnage au débarquement ou d'une vente. Il s'agit de la partie qui est recueillie 052 * pour analyse ou dénombrement. 053 * Un prélèvement est rattaché à une opération de peche ou un groupe d'opérations, un débarquement 054 * ou à une vente. Il peut être en plus rattaché à un des lots échantillonnés (le lot de 055 * provenance). 056 * Dans le cas des marées observées en mer, un prlèvement correspond à un individu, dont le support 057 * est, par exemple : 058 * - crustacé (crevette...) 059 * - poisson (merlu, sardine...) 060 * - gastéropode (bigorneau, littorine...) 061 * - echinoderme (oursin...) 062 * - etc. 063 * Le nombre d'individu, généralement égal à 1, permet de constituer des prélèvement de plusieurs 064 * individu (dès lors qu'il sont ne meme anture). Chaque résultat de mesure (SampleMeasurement) 065 * pourra identifié l'individu concerné par la mesure, par une numéro din'dividu. 066 * Un mnémonique, représentant généralement l'étiquette collée sur le sachet contenant le 067 * prélèvement, permet d"identifier le prélèvement de manière simple, notamment en laboratoire pour 068 * la saisie des lectures d'age, etc.. 069 * Par exemple de prélèvement : 070 * - un poisson, d'une espèce donnée, sur lequel est prélevé un otholithe, et/ou des écailes afin de 071 * réaliser une lecture d'age. 072 * - un cétacé, issu d'un lot, sur lesquels doit être effectué des analyses d'age, de taille, 073 * - etc. 074 */ 075// HibernateEntity.vsl annotations merge-point 076public abstract class Sample 077 implements Serializable, Comparable<Sample> 078{ 079 /** 080 * The serial version UID of this class. Needed for serialization. 081 */ 082 private static final long serialVersionUID = -4679812335657343627L; 083 084 // Generate 13 attributes 085 private Integer id; 086 087 /** 088 * Identifiant de l'échantillon. Généré par le système. 089 * @return this.id Integer 090 */ 091 public Integer getId() 092 { 093 return this.id; 094 } 095 096 /** 097 * Identifiant de l'échantillon. Généré par le système. 098 * @param idIn Integer 099 */ 100 public void setId(Integer idIn) 101 { 102 this.id = idIn; 103 } 104 105 private String label; 106 107 /** 108 * Mnémonique du prélèvement. Par exemple, il peut s'agir d'un code propre à chaque programme : 109 * pour les marées observée, par exemple, il s'agira d'une étiquette permettant d'identifier 110 * l'échantillon sur le terrain puis en laboratoire. 111 * Autant que possible, le mnémonique devra etre unique pour tous le système, ou à défaut unique 112 * au sein de la marée, du débarquement, de la vente ou de la campagne. 113 * Nomenclature retenue à l'issu des spécifications Allegro V3 : 114 * <date>_<initiales>_<lieu>_<G|S>_<numéro> 115 * Avec : 116 * - <date> : date de l’observation au format AAAMMJJ. La date est issue (suivant la donnée mère 117 * rattachée) : 118 * * de la date de début de l’opération de pêche ou du groupe d’opérations (si période du groupe 119 * d’opération n’a pas été renseigné : prendre la date de début de la marée) 120 * * ou de la date de débarquement, 121 * * ou de la date de la vente. 122 * - <initiales> : il s’agit des initiales déjà saisit par l’utilisateur (cf variante 123 * précédente). 124 * - <lieu> : mnémonique du lieu d’observation, si présent, ou libellé sinon. Le lieu 125 * d’observation est issu (suivant la donnée mère rattachée) : 126 * * pour une opération de pêche ou un groupe d’opérations, il s’agit du port de départ de la 127 * marée, 128 * * pour un débarquement, du lieu de débarquement 129 * * pour une vente, du lieu de la vente 130 * - <G|S> : suivant la donnée mère rattachée : 131 * * ‘G’ (=Ground) si donnée mère rattachée est un débarquement ou une vente ; 132 * * ‘S’ (=Sea) si donnée mère rattachée est une opération de pêche ou à une groupe 133 * d’opérations. 134 * - <numéro> : Il s’agit d’un numéro au format NNN (sur trois caractère. Exemple : « 001 »), 135 * auto-incrémentée (valeur maximale connue + 1) de manière à être unique au sein de (suivant la 136 * donnée mère rattachée) : 137 * * la marée, si la donnée mère rattachée est une opération de pêche ou un groupe d’opérations 138 * * ou du débarquement, 139 * * ou de la vente 140 * @return this.label String 141 */ 142 public String getLabel() 143 { 144 return this.label; 145 } 146 147 /** 148 * Mnémonique du prélèvement. Par exemple, il peut s'agir d'un code propre à chaque programme : 149 * pour les marées observée, par exemple, il s'agira d'une étiquette permettant d'identifier 150 * l'échantillon sur le terrain puis en laboratoire. 151 * Autant que possible, le mnémonique devra etre unique pour tous le système, ou à défaut unique 152 * au sein de la marée, du débarquement, de la vente ou de la campagne. 153 * Nomenclature retenue à l'issu des spécifications Allegro V3 : 154 * <date>_<initiales>_<lieu>_<G|S>_<numéro> 155 * Avec : 156 * - <date> : date de l’observation au format AAAMMJJ. La date est issue (suivant la donnée mère 157 * rattachée) : 158 * * de la date de début de l’opération de pêche ou du groupe d’opérations (si période du groupe 159 * d’opération n’a pas été renseigné : prendre la date de début de la marée) 160 * * ou de la date de débarquement, 161 * * ou de la date de la vente. 162 * - <initiales> : il s’agit des initiales déjà saisit par l’utilisateur (cf variante 163 * précédente). 164 * - <lieu> : mnémonique du lieu d’observation, si présent, ou libellé sinon. Le lieu 165 * d’observation est issu (suivant la donnée mère rattachée) : 166 * * pour une opération de pêche ou un groupe d’opérations, il s’agit du port de départ de la 167 * marée, 168 * * pour un débarquement, du lieu de débarquement 169 * * pour une vente, du lieu de la vente 170 * - <G|S> : suivant la donnée mère rattachée : 171 * * ‘G’ (=Ground) si donnée mère rattachée est un débarquement ou une vente ; 172 * * ‘S’ (=Sea) si donnée mère rattachée est une opération de pêche ou à une groupe 173 * d’opérations. 174 * - <numéro> : Il s’agit d’un numéro au format NNN (sur trois caractère. Exemple : « 001 »), 175 * auto-incrémentée (valeur maximale connue + 1) de manière à être unique au sein de (suivant la 176 * donnée mère rattachée) : 177 * * la marée, si la donnée mère rattachée est une opération de pêche ou un groupe d’opérations 178 * * ou du débarquement, 179 * * ou de la vente 180 * @param labelIn String 181 */ 182 public void setLabel(String labelIn) 183 { 184 this.label = labelIn; 185 } 186 187 private Date sampleDate; 188 189 /** 190 * Jour du prélèvement (heure optionnelle). 191 * @return this.sampleDate Date 192 */ 193 public Date getSampleDate() 194 { 195 return this.sampleDate; 196 } 197 198 /** 199 * Jour du prélèvement (heure optionnelle). 200 * @param sampleDateIn Date 201 */ 202 public void setSampleDate(Date sampleDateIn) 203 { 204 this.sampleDate = sampleDateIn; 205 } 206 207 private Short individualCount; 208 209 /** 210 * Nombre d'individus constituant l'échantillon. 211 * @return this.individualCount Short 212 */ 213 public Short getIndividualCount() 214 { 215 return this.individualCount; 216 } 217 218 /** 219 * Nombre d'individus constituant l'échantillon. 220 * @param individualCountIn Short 221 */ 222 public void setIndividualCount(Short individualCountIn) 223 { 224 this.individualCount = individualCountIn; 225 } 226 227 private Float size; 228 229 /** 230 * La taille de l'échantillon peut représenter une surface ou un volume suivant les cas. Il peut 231 * aussi s'agir du nombre d'individus entrant dans l'homogénat. 232 * @return this.size Float 233 */ 234 public Float getSize() 235 { 236 return this.size; 237 } 238 239 /** 240 * La taille de l'échantillon peut représenter une surface ou un volume suivant les cas. Il peut 241 * aussi s'agir du nombre d'individus entrant dans l'homogénat. 242 * @param sizeIn Float 243 */ 244 public void setSize(Float sizeIn) 245 { 246 this.size = sizeIn; 247 } 248 249 250 251 /** 252 * Etat de synchronisation (en cours, terminé, en attente de synchro, supprimé). Seulement 253 * visible dans la base locale. 254 * @return this.synchronizationStatus String 255 */ 256 257 258 259 /** 260 * Etat de synchronisation (en cours, terminé, en attente de synchro, supprimé). Seulement 261 * visible dans la base locale. 262 * @param synchronizationStatusIn String 263 */ 264 265 266 267 private String comments; 268 269 /** 270 * Commentaire libre concernant l'échantillon. 271 * @return this.comments String 272 */ 273 public String getComments() 274 { 275 return this.comments; 276 } 277 278 /** 279 * Commentaire libre concernant l'échantillon. 280 * @param commentsIn String 281 */ 282 public void setComments(String commentsIn) 283 { 284 this.comments = commentsIn; 285 } 286 287 private Date creationDate; 288 289 /** 290 * 291 * @return this.creationDate Date 292 */ 293 public Date getCreationDate() 294 { 295 return this.creationDate; 296 } 297 298 /** 299 * 300 * @param creationDateIn Date 301 */ 302 public void setCreationDate(Date creationDateIn) 303 { 304 this.creationDate = creationDateIn; 305 } 306 307 private Date controlDate; 308 309 /** 310 * 311 * @return this.controlDate Date 312 */ 313 public Date getControlDate() 314 { 315 return this.controlDate; 316 } 317 318 /** 319 * 320 * @param controlDateIn Date 321 */ 322 public void setControlDate(Date controlDateIn) 323 { 324 this.controlDate = controlDateIn; 325 } 326 327 private Date validationDate; 328 329 /** 330 * 331 * @return this.validationDate Date 332 */ 333 public Date getValidationDate() 334 { 335 return this.validationDate; 336 } 337 338 /** 339 * 340 * @param validationDateIn Date 341 */ 342 public void setValidationDate(Date validationDateIn) 343 { 344 this.validationDate = validationDateIn; 345 } 346 347 private Date qualificationDate; 348 349 /** 350 * 351 * @return this.qualificationDate Date 352 */ 353 public Date getQualificationDate() 354 { 355 return this.qualificationDate; 356 } 357 358 /** 359 * 360 * @param qualificationDateIn Date 361 */ 362 public void setQualificationDate(Date qualificationDateIn) 363 { 364 this.qualificationDate = qualificationDateIn; 365 } 366 367 private String qualificationComments; 368 369 /** 370 * 371 * @return this.qualificationComments String 372 */ 373 public String getQualificationComments() 374 { 375 return this.qualificationComments; 376 } 377 378 /** 379 * 380 * @param qualificationCommentsIn String 381 */ 382 public void setQualificationComments(String qualificationCommentsIn) 383 { 384 this.qualificationComments = qualificationCommentsIn; 385 } 386 387 private Timestamp updateDate; 388 389 /** 390 * 391 * @return this.updateDate Timestamp 392 */ 393 public Timestamp getUpdateDate() 394 { 395 return this.updateDate; 396 } 397 398 /** 399 * 400 * @param updateDateIn Timestamp 401 */ 402 public void setUpdateDate(Timestamp updateDateIn) 403 { 404 this.updateDate = updateDateIn; 405 } 406 407 // Generate 14 associations 408 private Collection<FishingArea> fishingAreas = new HashSet<FishingArea>(); 409 410 /** 411 * Zone de peche du prélèvement (utilisé surtout dans le cas d'un prélèvement hors 412 * marée/débarquement ou vente - exemple : prélèvement en poissonnerie) 413 * @return this.fishingAreas Collection<FishingArea> 414 */ 415 public Collection<FishingArea> getFishingAreas() 416 { 417 return this.fishingAreas; 418 } 419 420 /** 421 * Zone de peche du prélèvement (utilisé surtout dans le cas d'un prélèvement hors 422 * marée/débarquement ou vente - exemple : prélèvement en poissonnerie) 423 * @param fishingAreasIn Collection<FishingArea> 424 */ 425 public void setFishingAreas(Collection<FishingArea> fishingAreasIn) 426 { 427 this.fishingAreas = fishingAreasIn; 428 } 429 430 /** 431 * Zone de peche du prélèvement (utilisé surtout dans le cas d'un prélèvement hors 432 * marée/débarquement ou vente - exemple : prélèvement en poissonnerie) 433 * @param elementToAdd FishingArea 434 * @return <tt>true</tt> if this collection changed as a result of the 435 * call 436 */ 437 public boolean addFishingAreas(FishingArea elementToAdd) 438 { 439 return this.fishingAreas.add(elementToAdd); 440 } 441 442 /** 443 * Zone de peche du prélèvement (utilisé surtout dans le cas d'un prélèvement hors 444 * marée/débarquement ou vente - exemple : prélèvement en poissonnerie) 445 * @param elementToRemove FishingArea 446 * @return <tt>true</tt> if this collection changed as a result of the 447 * call 448 */ 449 public boolean removeFishingAreas(FishingArea elementToRemove) 450 { 451 return this.fishingAreas.remove(elementToRemove); 452 } 453 454 private Unit sizeUnit; 455 456 /** 457 * Unité associée à la valeur de la taille du prélèvement. 458 * @return this.sizeUnit Unit 459 */ 460 public Unit getSizeUnit() 461 { 462 return this.sizeUnit; 463 } 464 465 /** 466 * Unité associée à la valeur de la taille du prélèvement. 467 * @param sizeUnitIn Unit 468 */ 469 public void setSizeUnit(Unit sizeUnitIn) 470 { 471 this.sizeUnit = sizeUnitIn; 472 } 473 474 private Department recorderDepartment; 475 476 /** 477 * Service d'appartenance d'une personne. 478 * Il peut s'agir des départements et service de l'Ifremer, ou bien des entreprises, services 479 * extérieurs (sous-traitants, etc.). 480 * REMARQUE : nous en aurons besoin en v2, pour l'administration des personnes (rechercher une 481 * personne, gérer les sous-traitants, etc.), mais aussi pour identifier le service effectuant 482 * l’analyse d’un résultat de mesure. 483 * Nombre de lignes : 60 484 * @return this.recorderDepartment Department 485 */ 486 public Department getRecorderDepartment() 487 { 488 return this.recorderDepartment; 489 } 490 491 /** 492 * Service d'appartenance d'une personne. 493 * Il peut s'agir des départements et service de l'Ifremer, ou bien des entreprises, services 494 * extérieurs (sous-traitants, etc.). 495 * REMARQUE : nous en aurons besoin en v2, pour l'administration des personnes (rechercher une 496 * personne, gérer les sous-traitants, etc.), mais aussi pour identifier le service effectuant 497 * l’analyse d’un résultat de mesure. 498 * Nombre de lignes : 60 499 * @param recorderDepartmentIn Department 500 */ 501 public void setRecorderDepartment(Department recorderDepartmentIn) 502 { 503 this.recorderDepartment = recorderDepartmentIn; 504 } 505 506 private Collection<Sample> childSamples = new HashSet<Sample>(); 507 508 /** 509 * Un prélèvement représente un (et un seul) support, prélevé au cours d'une opération de peche, 510 * d'un 511 * échantillonnage au débarquement ou d'une vente. Il s'agit de la partie qui est recueillie 512 * pour 513 * analyse ou dénombrement. 514 * Un prélèvement est rattaché à une opération de peche ou un groupe d'opérations, un 515 * débarquement ou à 516 * une vente. Il peut être en plus rattaché à un des lots échantillonnés (le lot de provenance). 517 * Dans le cas des marées observées en mer, un prlèvement correspond à un individu, dont le 518 * support 519 * est, par exemple : 520 * - crustacé (crevette...) 521 * - poisson (merlu, sardine...) 522 * - gastéropode (bigorneau, littorine...) 523 * - echinoderme (oursin...) 524 * - etc. 525 * Le nombre d'individu, généralement égal à 1, permet de constituer des prélèvement de 526 * plusieurs 527 * individu (dès lors qu'il sont ne meme anture). Chaque résultat de mesure (SampleMeasurement) 528 * pourra 529 * identifié l'individu concerné par la mesure, par une numéro din'dividu. 530 * Un mnémonique, représentant généralement l'étiquette collée sur le sachet contenant le 531 * prélèvement, 532 * permet d"identifier le prélèvement de manière simple, notamment en laboratoire pour la saisie 533 * des 534 * lectures d'age, etc.. 535 * Par exemple de prélèvement : 536 * - un poisson, d'une espèce donnée, sur lequel est prélevé un otholithe, et/ou des écailes 537 * afin de 538 * réaliser une lecture d'age. 539 * - un cétacé, issu d'un lot, sur lesquels doit être effectué des analyses d'age, de taille, 540 * - etc. 541 * @return this.childSamples Collection<Sample> 542 */ 543 public Collection<Sample> getChildSamples() 544 { 545 return this.childSamples; 546 } 547 548 /** 549 * Un prélèvement représente un (et un seul) support, prélevé au cours d'une opération de peche, 550 * d'un 551 * échantillonnage au débarquement ou d'une vente. Il s'agit de la partie qui est recueillie 552 * pour 553 * analyse ou dénombrement. 554 * Un prélèvement est rattaché à une opération de peche ou un groupe d'opérations, un 555 * débarquement ou à 556 * une vente. Il peut être en plus rattaché à un des lots échantillonnés (le lot de provenance). 557 * Dans le cas des marées observées en mer, un prlèvement correspond à un individu, dont le 558 * support 559 * est, par exemple : 560 * - crustacé (crevette...) 561 * - poisson (merlu, sardine...) 562 * - gastéropode (bigorneau, littorine...) 563 * - echinoderme (oursin...) 564 * - etc. 565 * Le nombre d'individu, généralement égal à 1, permet de constituer des prélèvement de 566 * plusieurs 567 * individu (dès lors qu'il sont ne meme anture). Chaque résultat de mesure (SampleMeasurement) 568 * pourra 569 * identifié l'individu concerné par la mesure, par une numéro din'dividu. 570 * Un mnémonique, représentant généralement l'étiquette collée sur le sachet contenant le 571 * prélèvement, 572 * permet d"identifier le prélèvement de manière simple, notamment en laboratoire pour la saisie 573 * des 574 * lectures d'age, etc.. 575 * Par exemple de prélèvement : 576 * - un poisson, d'une espèce donnée, sur lequel est prélevé un otholithe, et/ou des écailes 577 * afin de 578 * réaliser une lecture d'age. 579 * - un cétacé, issu d'un lot, sur lesquels doit être effectué des analyses d'age, de taille, 580 * - etc. 581 * @param childSamplesIn Collection<Sample> 582 */ 583 public void setChildSamples(Collection<Sample> childSamplesIn) 584 { 585 this.childSamples = childSamplesIn; 586 } 587 588 /** 589 * Un prélèvement représente un (et un seul) support, prélevé au cours d'une opération de peche, 590 * d'un 591 * échantillonnage au débarquement ou d'une vente. Il s'agit de la partie qui est recueillie 592 * pour 593 * analyse ou dénombrement. 594 * Un prélèvement est rattaché à une opération de peche ou un groupe d'opérations, un 595 * débarquement ou à 596 * une vente. Il peut être en plus rattaché à un des lots échantillonnés (le lot de provenance). 597 * Dans le cas des marées observées en mer, un prlèvement correspond à un individu, dont le 598 * support 599 * est, par exemple : 600 * - crustacé (crevette...) 601 * - poisson (merlu, sardine...) 602 * - gastéropode (bigorneau, littorine...) 603 * - echinoderme (oursin...) 604 * - etc. 605 * Le nombre d'individu, généralement égal à 1, permet de constituer des prélèvement de 606 * plusieurs 607 * individu (dès lors qu'il sont ne meme anture). Chaque résultat de mesure (SampleMeasurement) 608 * pourra 609 * identifié l'individu concerné par la mesure, par une numéro din'dividu. 610 * Un mnémonique, représentant généralement l'étiquette collée sur le sachet contenant le 611 * prélèvement, 612 * permet d"identifier le prélèvement de manière simple, notamment en laboratoire pour la saisie 613 * des 614 * lectures d'age, etc.. 615 * Par exemple de prélèvement : 616 * - un poisson, d'une espèce donnée, sur lequel est prélevé un otholithe, et/ou des écailes 617 * afin de 618 * réaliser une lecture d'age. 619 * - un cétacé, issu d'un lot, sur lesquels doit être effectué des analyses d'age, de taille, 620 * - etc. 621 * @param elementToAdd Sample 622 * @return <tt>true</tt> if this collection changed as a result of the 623 * call 624 */ 625 public boolean addChildSamples(Sample elementToAdd) 626 { 627 return this.childSamples.add(elementToAdd); 628 } 629 630 /** 631 * Un prélèvement représente un (et un seul) support, prélevé au cours d'une opération de peche, 632 * d'un 633 * échantillonnage au débarquement ou d'une vente. Il s'agit de la partie qui est recueillie 634 * pour 635 * analyse ou dénombrement. 636 * Un prélèvement est rattaché à une opération de peche ou un groupe d'opérations, un 637 * débarquement ou à 638 * une vente. Il peut être en plus rattaché à un des lots échantillonnés (le lot de provenance). 639 * Dans le cas des marées observées en mer, un prlèvement correspond à un individu, dont le 640 * support 641 * est, par exemple : 642 * - crustacé (crevette...) 643 * - poisson (merlu, sardine...) 644 * - gastéropode (bigorneau, littorine...) 645 * - echinoderme (oursin...) 646 * - etc. 647 * Le nombre d'individu, généralement égal à 1, permet de constituer des prélèvement de 648 * plusieurs 649 * individu (dès lors qu'il sont ne meme anture). Chaque résultat de mesure (SampleMeasurement) 650 * pourra 651 * identifié l'individu concerné par la mesure, par une numéro din'dividu. 652 * Un mnémonique, représentant généralement l'étiquette collée sur le sachet contenant le 653 * prélèvement, 654 * permet d"identifier le prélèvement de manière simple, notamment en laboratoire pour la saisie 655 * des 656 * lectures d'age, etc.. 657 * Par exemple de prélèvement : 658 * - un poisson, d'une espèce donnée, sur lequel est prélevé un otholithe, et/ou des écailes 659 * afin de 660 * réaliser une lecture d'age. 661 * - un cétacé, issu d'un lot, sur lesquels doit être effectué des analyses d'age, de taille, 662 * - etc. 663 * @param elementToRemove Sample 664 * @return <tt>true</tt> if this collection changed as a result of the 665 * call 666 */ 667 public boolean removeChildSamples(Sample elementToRemove) 668 { 669 return this.childSamples.remove(elementToRemove); 670 } 671 672 private Sample parentSample; 673 674 /** 675 * Parent sample. Use in MerluMed. 676 * Ex : un poisson peut avoir dans sont estomac plusieurs autres poissons. 677 * @return this.parentSample Sample 678 */ 679 public Sample getParentSample() 680 { 681 return this.parentSample; 682 } 683 684 /** 685 * Parent sample. Use in MerluMed. 686 * Ex : un poisson peut avoir dans sont estomac plusieurs autres poissons. 687 * @param parentSampleIn Sample 688 */ 689 public void setParentSample(Sample parentSampleIn) 690 { 691 this.parentSample = parentSampleIn; 692 } 693 694 private Person recorderPerson; 695 696 /** 697 * <html> 698 * <head> 699 * <style> 700 * p {padding:0px; margin:0px;} 701 * </style> 702 * </head> 703 * <body> 704 * <p> 705 * Personne liées aux données : utilisateur du système, ou observateurs, 706 * responsable de données, etc. 707 * </p> 708 * <p> 709 * </p> 710 * <p> 711 * Les personnes liées aux activités professionnelles de pêche sont plutôt 712 * gérer dans <i>VesselPerson</i>. 713 * </p> 714 * <p> 715 * </p> 716 * <p> 717 * Nombre de lignes : 100 718 * </p> 719 * </body> 720 * </html> 721 * @return this.recorderPerson Person 722 */ 723 public Person getRecorderPerson() 724 { 725 return this.recorderPerson; 726 } 727 728 /** 729 * <html> 730 * <head> 731 * <style> 732 * p {padding:0px; margin:0px;} 733 * </style> 734 * </head> 735 * <body> 736 * <p> 737 * Personne liées aux données : utilisateur du système, ou observateurs, 738 * responsable de données, etc. 739 * </p> 740 * <p> 741 * </p> 742 * <p> 743 * Les personnes liées aux activités professionnelles de pêche sont plutôt 744 * gérer dans <i>VesselPerson</i>. 745 * </p> 746 * <p> 747 * </p> 748 * <p> 749 * Nombre de lignes : 100 750 * </p> 751 * </body> 752 * </html> 753 * @param recorderPersonIn Person 754 */ 755 public void setRecorderPerson(Person recorderPersonIn) 756 { 757 this.recorderPerson = recorderPersonIn; 758 } 759 760 private FishingOperation fishingOperation; 761 762 /** 763 * Opération de prélèvement à laquelle est rattaché l'échantillon analysé. 764 * @return this.fishingOperation FishingOperation 765 */ 766 public FishingOperation getFishingOperation() 767 { 768 return this.fishingOperation; 769 } 770 771 /** 772 * Opération de prélèvement à laquelle est rattaché l'échantillon analysé. 773 * @param fishingOperationIn FishingOperation 774 */ 775 public void setFishingOperation(FishingOperation fishingOperationIn) 776 { 777 this.fishingOperation = fishingOperationIn; 778 } 779 780 private Collection<SampleMeasurement> sampleMeasurements = new HashSet<SampleMeasurement>(); 781 782 /** 783 * Valeur mesurée ou analysée sur un individu (résultats de mesures sur individu) appartenant à 784 * un 785 * prélèvement effectué lors d'un échantillonnage biologique, lors d'une marée, d'un vente ou 786 * d'un 787 * débarquement observé. Les observations sur le prélèvement sont souvent menées en laboratoire, 788 * à 789 * terre. 790 * @return this.sampleMeasurements Collection<SampleMeasurement> 791 */ 792 public Collection<SampleMeasurement> getSampleMeasurements() 793 { 794 return this.sampleMeasurements; 795 } 796 797 /** 798 * Valeur mesurée ou analysée sur un individu (résultats de mesures sur individu) appartenant à 799 * un 800 * prélèvement effectué lors d'un échantillonnage biologique, lors d'une marée, d'un vente ou 801 * d'un 802 * débarquement observé. Les observations sur le prélèvement sont souvent menées en laboratoire, 803 * à 804 * terre. 805 * @param sampleMeasurementsIn Collection<SampleMeasurement> 806 */ 807 public void setSampleMeasurements(Collection<SampleMeasurement> sampleMeasurementsIn) 808 { 809 this.sampleMeasurements = sampleMeasurementsIn; 810 } 811 812 /** 813 * Valeur mesurée ou analysée sur un individu (résultats de mesures sur individu) appartenant à 814 * un 815 * prélèvement effectué lors d'un échantillonnage biologique, lors d'une marée, d'un vente ou 816 * d'un 817 * débarquement observé. Les observations sur le prélèvement sont souvent menées en laboratoire, 818 * à 819 * terre. 820 * @param elementToAdd SampleMeasurement 821 * @return <tt>true</tt> if this collection changed as a result of the 822 * call 823 */ 824 public boolean addSampleMeasurements(SampleMeasurement elementToAdd) 825 { 826 return this.sampleMeasurements.add(elementToAdd); 827 } 828 829 /** 830 * Valeur mesurée ou analysée sur un individu (résultats de mesures sur individu) appartenant à 831 * un 832 * prélèvement effectué lors d'un échantillonnage biologique, lors d'une marée, d'un vente ou 833 * d'un 834 * débarquement observé. Les observations sur le prélèvement sont souvent menées en laboratoire, 835 * à 836 * terre. 837 * @param elementToRemove SampleMeasurement 838 * @return <tt>true</tt> if this collection changed as a result of the 839 * call 840 */ 841 public boolean removeSampleMeasurements(SampleMeasurement elementToRemove) 842 { 843 return this.sampleMeasurements.remove(elementToRemove); 844 } 845 846 private TaxonGroup taxonGroup; 847 848 /** 849 * Groupe de taxon (généralement espèce commerciale) caractéristant l'échantillon (optionnel) 850 * @return this.taxonGroup TaxonGroup 851 */ 852 public TaxonGroup getTaxonGroup() 853 { 854 return this.taxonGroup; 855 } 856 857 /** 858 * Groupe de taxon (généralement espèce commerciale) caractéristant l'échantillon (optionnel) 859 * @param taxonGroupIn TaxonGroup 860 */ 861 public void setTaxonGroup(TaxonGroup taxonGroupIn) 862 { 863 this.taxonGroup = taxonGroupIn; 864 } 865 866 private Matrix matrix; 867 868 /** 869 * Support de l'échantillon. 870 * @return this.matrix Matrix 871 */ 872 public Matrix getMatrix() 873 { 874 return this.matrix; 875 } 876 877 /** 878 * Support de l'échantillon. 879 * @param matrixIn Matrix 880 */ 881 public void setMatrix(Matrix matrixIn) 882 { 883 this.matrix = matrixIn; 884 } 885 886 private QualityFlag qualityFlag; 887 888 /** 889 * Niveau de qualité de la donnée. 890 * "Non qualifiée" par défaut 891 * @return this.qualityFlag QualityFlag 892 */ 893 public QualityFlag getQualityFlag() 894 { 895 return this.qualityFlag; 896 } 897 898 /** 899 * Niveau de qualité de la donnée. 900 * "Non qualifiée" par défaut 901 * @param qualityFlagIn QualityFlag 902 */ 903 public void setQualityFlag(QualityFlag qualityFlagIn) 904 { 905 this.qualityFlag = qualityFlagIn; 906 } 907 908 private Batch batch; 909 910 /** 911 * Lot auquel appartient l'échantillon analysé (optionnel). 912 * @return this.batch Batch 913 */ 914 public Batch getBatch() 915 { 916 return this.batch; 917 } 918 919 /** 920 * Lot auquel appartient l'échantillon analysé (optionnel). 921 * @param batchIn Batch 922 */ 923 public void setBatch(Batch batchIn) 924 { 925 this.batch = batchIn; 926 } 927 928 private ReferenceTaxon referenceTaxon; 929 930 /** 931 * Taxon (espèce scientifique) caractéristant l'échantillon (optionnel) 932 * @return this.referenceTaxon ReferenceTaxon 933 */ 934 public ReferenceTaxon getReferenceTaxon() 935 { 936 return this.referenceTaxon; 937 } 938 939 /** 940 * Taxon (espèce scientifique) caractéristant l'échantillon (optionnel) 941 * @param referenceTaxonIn ReferenceTaxon 942 */ 943 public void setReferenceTaxon(ReferenceTaxon referenceTaxonIn) 944 { 945 this.referenceTaxon = referenceTaxonIn; 946 } 947 948 private Program program; 949 950 /** 951 * Programme d'observation à l'origine d'une collecte de données. 952 * Désigne les activités qui sont à l'origine de la collecte d'un ensemble cohérent de données, 953 * que ce 954 * soit pour des collectes continues (marées observées en mer, SIPA) ou pour des études limitées 955 * dans 956 * le temps. La quantité de données rattachées à un programme peut être variable, selon qu'il 957 * s'agit 958 * d'une activité longue ou intensive, ou d'une opération plus ponctuelle (étude) mais toujours 959 * mise en 960 * œuvre selon un schéma décidé à l'avance. 961 * Exemple de programmes d'observations : 962 * - SIH-OBSMER (marées observées en mer) 963 * - SIH-STATPECHE (enquete d'activité et d'effort...) 964 * - SIPA : données déclaratives transmises par la DPMA 965 * - VMS : données satellitaires 966 * - OFIMER : données du SI de l'OFIMER 967 * @return this.program Program 968 */ 969 public Program getProgram() 970 { 971 return this.program; 972 } 973 974 /** 975 * Programme d'observation à l'origine d'une collecte de données. 976 * Désigne les activités qui sont à l'origine de la collecte d'un ensemble cohérent de données, 977 * que ce 978 * soit pour des collectes continues (marées observées en mer, SIPA) ou pour des études limitées 979 * dans 980 * le temps. La quantité de données rattachées à un programme peut être variable, selon qu'il 981 * s'agit 982 * d'une activité longue ou intensive, ou d'une opération plus ponctuelle (étude) mais toujours 983 * mise en 984 * œuvre selon un schéma décidé à l'avance. 985 * Exemple de programmes d'observations : 986 * - SIH-OBSMER (marées observées en mer) 987 * - SIH-STATPECHE (enquete d'activité et d'effort...) 988 * - SIPA : données déclaratives transmises par la DPMA 989 * - VMS : données satellitaires 990 * - OFIMER : données du SI de l'OFIMER 991 * @param programIn Program 992 */ 993 public void setProgram(Program programIn) 994 { 995 this.program = programIn; 996 } 997 998 /** 999 * Returns <code>true</code> if the argument is an Sample instance and all identifiers for this entity 1000 * equal the identifiers of the argument entity. Returns <code>false</code> otherwise. 1001 */ 1002 @Override 1003 public boolean equals(Object object) 1004 { 1005 if (this == object) 1006 { 1007 return true; 1008 } 1009 if (!(object instanceof Sample)) 1010 { 1011 return false; 1012 } 1013 final Sample that = (Sample)object; 1014 if (this.id == null || that.getId() == null || !this.id.equals(that.getId())) 1015 { 1016 return false; 1017 } 1018 return true; 1019 } 1020 1021 /** 1022 * Returns a hash code based on this entity's identifiers. 1023 */ 1024 @Override 1025 public int hashCode() 1026 { 1027 int hashCode = 0; 1028 hashCode = 29 * hashCode + (this.id == null ? 0 : this.id.hashCode()); 1029 1030 return hashCode; 1031 } 1032 1033 /** 1034 * Constructs new instances of {@link Sample}. 1035 */ 1036 public static final class Factory 1037 { 1038 /** 1039 * Constructs a new instance of {@link Sample}. 1040 * @return new SampleImpl() 1041 */ 1042 public static Sample newInstance() 1043 { 1044 return new SampleImpl(); 1045 } 1046 1047 /** 1048 * Constructs a new instance of {@link Sample}, taking all required and/or 1049 * read-only properties as arguments, except for identifiers. 1050 * @param label String 1051 * @param synchronizationStatus String 1052 * @param creationDate Date 1053 * @param updateDate Timestamp 1054 * @param recorderDepartment Department 1055 * @param matrix Matrix 1056 * @param qualityFlag QualityFlag 1057 * @param program Program 1058 * @return newInstance 1059 */ 1060 public static Sample newInstance(String label, Date creationDate, Timestamp updateDate, Department recorderDepartment, Matrix matrix, QualityFlag qualityFlag, Program program) 1061 { 1062 final Sample entity = new SampleImpl(); 1063 entity.setLabel(label); 1064 1065 entity.setCreationDate(creationDate); 1066 entity.setUpdateDate(updateDate); 1067 entity.setRecorderDepartment(recorderDepartment); 1068 entity.setMatrix(matrix); 1069 entity.setQualityFlag(qualityFlag); 1070 entity.setProgram(program); 1071 return entity; 1072 } 1073 1074 /** 1075 * Constructs a new instance of {@link Sample}, taking all possible properties 1076 * (except the identifier(s))as arguments. 1077 * @param label String 1078 * @param sampleDate Date 1079 * @param individualCount Short 1080 * @param size Float 1081 * @param synchronizationStatus String 1082 * @param comments String 1083 * @param creationDate Date 1084 * @param controlDate Date 1085 * @param validationDate Date 1086 * @param qualificationDate Date 1087 * @param qualificationComments String 1088 * @param updateDate Timestamp 1089 * @param fishingAreas Collection<FishingArea> 1090 * @param sizeUnit Unit 1091 * @param recorderDepartment Department 1092 * @param childSamples Collection<Sample> 1093 * @param parentSample Sample 1094 * @param recorderPerson Person 1095 * @param fishingOperation FishingOperation 1096 * @param sampleMeasurements Collection<SampleMeasurement> 1097 * @param taxonGroup TaxonGroup 1098 * @param matrix Matrix 1099 * @param qualityFlag QualityFlag 1100 * @param batch Batch 1101 * @param referenceTaxon ReferenceTaxon 1102 * @param program Program 1103 * @return newInstance Sample 1104 */ 1105 public static Sample newInstance(String label, Date sampleDate, Short individualCount, Float size, String comments, Date creationDate, Date controlDate, Date validationDate, Date qualificationDate, String qualificationComments, Timestamp updateDate, Collection<FishingArea> fishingAreas, Unit sizeUnit, Department recorderDepartment, Collection<Sample> childSamples, Sample parentSample, Person recorderPerson, FishingOperation fishingOperation, Collection<SampleMeasurement> sampleMeasurements, TaxonGroup taxonGroup, Matrix matrix, QualityFlag qualityFlag, Batch batch, ReferenceTaxon referenceTaxon, Program program) 1106 { 1107 final Sample entity = new SampleImpl(); 1108 entity.setLabel(label); 1109 entity.setSampleDate(sampleDate); 1110 entity.setIndividualCount(individualCount); 1111 entity.setSize(size); 1112 1113 entity.setComments(comments); 1114 entity.setCreationDate(creationDate); 1115 entity.setControlDate(controlDate); 1116 entity.setValidationDate(validationDate); 1117 entity.setQualificationDate(qualificationDate); 1118 entity.setQualificationComments(qualificationComments); 1119 entity.setUpdateDate(updateDate); 1120 entity.setFishingAreas(fishingAreas); 1121 entity.setSizeUnit(sizeUnit); 1122 entity.setRecorderDepartment(recorderDepartment); 1123 entity.setChildSamples(childSamples); 1124 entity.setParentSample(parentSample); 1125 entity.setRecorderPerson(recorderPerson); 1126 entity.setFishingOperation(fishingOperation); 1127 entity.setSampleMeasurements(sampleMeasurements); 1128 entity.setTaxonGroup(taxonGroup); 1129 entity.setMatrix(matrix); 1130 entity.setQualityFlag(qualityFlag); 1131 entity.setBatch(batch); 1132 entity.setReferenceTaxon(referenceTaxon); 1133 entity.setProgram(program); 1134 return entity; 1135 } 1136 } 1137 1138 /** 1139 * @see Comparable#compareTo 1140 */ 1141 public int compareTo(Sample o) 1142 { 1143 int cmp = 0; 1144 if (this.getId() != null) 1145 { 1146 cmp = this.getId().compareTo(o.getId()); 1147 } 1148 else 1149 { 1150 if (this.getLabel() != null) 1151 { 1152 cmp = (cmp != 0 ? cmp : this.getLabel().compareTo(o.getLabel())); 1153 } 1154 if (this.getSampleDate() != null) 1155 { 1156 cmp = (cmp != 0 ? cmp : this.getSampleDate().compareTo(o.getSampleDate())); 1157 } 1158 if (this.getIndividualCount() != null) 1159 { 1160 cmp = (cmp != 0 ? cmp : this.getIndividualCount().compareTo(o.getIndividualCount())); 1161 } 1162 if (this.getSize() != null) 1163 { 1164 cmp = (cmp != 0 ? cmp : this.getSize().compareTo(o.getSize())); 1165 } 1166 1167 1168 if (this.getComments() != null) 1169 { 1170 cmp = (cmp != 0 ? cmp : this.getComments().compareTo(o.getComments())); 1171 } 1172 if (this.getCreationDate() != null) 1173 { 1174 cmp = (cmp != 0 ? cmp : this.getCreationDate().compareTo(o.getCreationDate())); 1175 } 1176 if (this.getControlDate() != null) 1177 { 1178 cmp = (cmp != 0 ? cmp : this.getControlDate().compareTo(o.getControlDate())); 1179 } 1180 if (this.getValidationDate() != null) 1181 { 1182 cmp = (cmp != 0 ? cmp : this.getValidationDate().compareTo(o.getValidationDate())); 1183 } 1184 if (this.getQualificationDate() != null) 1185 { 1186 cmp = (cmp != 0 ? cmp : this.getQualificationDate().compareTo(o.getQualificationDate())); 1187 } 1188 if (this.getQualificationComments() != null) 1189 { 1190 cmp = (cmp != 0 ? cmp : this.getQualificationComments().compareTo(o.getQualificationComments())); 1191 } 1192 if (this.getUpdateDate() != null) 1193 { 1194 cmp = (cmp != 0 ? cmp : this.getUpdateDate().compareTo(o.getUpdateDate())); 1195 } 1196 } 1197 return cmp; 1198 } 1199// HibernateEntity.vsl merge-point 1200// Sample.java merge-point 1201}