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.fishingArea; 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.data.produce.Produce; 032import fr.ifremer.adagio.core.dao.data.sample.Sample; 033import fr.ifremer.adagio.core.dao.data.survey.sale.Sale; 034import fr.ifremer.adagio.core.dao.data.vessel.feature.use.GearUseFeatures; 035import fr.ifremer.adagio.core.dao.data.vessel.feature.use.VesselUseFeatures; 036import fr.ifremer.adagio.core.dao.referential.DepthGradient; 037import fr.ifremer.adagio.core.dao.referential.DistanceToCoastGradient; 038import fr.ifremer.adagio.core.dao.referential.NearbySpecificArea; 039import fr.ifremer.adagio.core.dao.referential.QualityFlag; 040import fr.ifremer.adagio.core.dao.referential.location.Location; 041import java.io.Serializable; 042import java.util.Collection; 043import java.util.Date; 044import java.util.HashSet; 045 046/** 047 * <html> 048 * <head> 049 * <style> 050 * p {padding:0px; margin:0px;} 051 * </style> 052 * </head> 053 * <body> 054 * <p> 055 * Zone de peche ou d'activité effective d'un navire. 056 * </p> 057 * <p> 058 * </p> 059 * <p> 060 * Contient une entrée pour chaque zone de peche d'un navire. 061 * </p> 062 * <p> 063 * </p> 064 * <p> 065 * ATTENTION : ne pas réutiliser une zone de peche effective dèjà 066 * existante, à cause des liens de composition (et des contraintes "delete 067 * cascade") depuis les autres tables. 068 * </p> 069 * <p> 070 * Votre enregistrement pourrait etre supprimée par quelqu'un d'autre ! 071 * </p> 072 * <p> 073 * </p> 074 * <p> 075 * </p> 076 * <p> 077 * <u>Cas particulier des campagnes scientifiques (F.Coppin) : </u>Dans le 078 * cas des campagnes scientifiques, ce concept correspond à une "station". La 079 * notion exacte de Fishing Area est définie suivant le protocole spatiale 080 * mise en place. En effet, la notion la plus fine d'aire de travail est la 081 * localité (stockée <i>FishingArea2RegulationLocation</i>). 082 * L'ordre de réalisation des prélèvements pouvant changer d'une année sur 083 * l'autre, la localité permet de disposer d'un code unique pour une zone 084 * de prélèvement donnée. Cette localité peut s'inscrire ou non selon le 085 * protocole dans une strate (stcokée dans <i>FishingArea2RegulationLocation)</i> 086 * définie dans le cadre du programme lié à la série (ce paramétrage est 087 * stocké dans les <i>Program</i> et <i>Strategy</i>). Il s'agit alors 088 * d'un 2ème niveau géographique pouvant contenir une ou plusieurs 089 * localités. 090 * </p> 091 * <p> 092 * Toutes les situations peuvent être envisagées : 093 * </p> 094 * <ul> 095 * <li> 096 * Localités + strates 097 * </li> 098 * <li> 099 * Localités sans strate 100 * </li> 101 * <li> 102 * Strates sans localité 103 * </li> 104 * <li> 105 * ni localité ni strate 106 * </li> 107 * </ul> 108 * <p> 109 * En plus de ces options la notion de strate bathymétrique peut exister. 110 * </p> 111 * <p> 112 * Dans tous les cas de figure ces divers éléments géographiques doivent 113 * s'inscrivent dans la notion officielle de rectangle ou sous rectangle 114 * statistique (stcoké dans <i>FishingArea.location</i>). 115 * </p> 116 * <p> 117 * </p> 118 * </body> 119 * </html> 120 */ 121// HibernateEntity.vsl annotations merge-point 122public abstract class FishingArea 123 implements Serializable, Comparable<FishingArea> 124{ 125 /** 126 * The serial version UID of this class. Needed for serialization. 127 */ 128 private static final long serialVersionUID = -3744603833038946960L; 129 130 // Generate 3 attributes 131 private Integer id; 132 133 /** 134 * Idenfiant interne. Généré par le système. 135 * @return this.id Integer 136 */ 137 public Integer getId() 138 { 139 return this.id; 140 } 141 142 /** 143 * Idenfiant interne. Généré par le système. 144 * @param idIn Integer 145 */ 146 public void setId(Integer idIn) 147 { 148 this.id = idIn; 149 } 150 151 private Date qualificationDate; 152 153 /** 154 * @since 3.5.0 155 * @return this.qualificationDate Date 156 */ 157 public Date getQualificationDate() 158 { 159 return this.qualificationDate; 160 } 161 162 /** 163 * @since 3.5.0 164 * @param qualificationDateIn Date 165 */ 166 public void setQualificationDate(Date qualificationDateIn) 167 { 168 this.qualificationDate = qualificationDateIn; 169 } 170 171 private String qualificationComments; 172 173 /** 174 * @since 3.5.0 175 * @return this.qualificationComments String 176 */ 177 public String getQualificationComments() 178 { 179 return this.qualificationComments; 180 } 181 182 /** 183 * @since 3.5.0 184 * @param qualificationCommentsIn String 185 */ 186 public void setQualificationComments(String qualificationCommentsIn) 187 { 188 this.qualificationComments = qualificationCommentsIn; 189 } 190 191 // Generate 12 associations 192 private Collection<FishingArea2ManagedLocation> fishingArea2ManagedLocations = new HashSet<FishingArea2ManagedLocation>(); 193 194 /** 195 * 196 * @return this.fishingArea2ManagedLocations Collection<FishingArea2ManagedLocation> 197 */ 198 public Collection<FishingArea2ManagedLocation> getFishingArea2ManagedLocations() 199 { 200 return this.fishingArea2ManagedLocations; 201 } 202 203 /** 204 * 205 * @param fishingArea2ManagedLocationsIn Collection<FishingArea2ManagedLocation> 206 */ 207 public void setFishingArea2ManagedLocations(Collection<FishingArea2ManagedLocation> fishingArea2ManagedLocationsIn) 208 { 209 this.fishingArea2ManagedLocations = fishingArea2ManagedLocationsIn; 210 } 211 212 /** 213 * 214 * @param elementToAdd FishingArea2ManagedLocation 215 * @return <tt>true</tt> if this collection changed as a result of the 216 * call 217 */ 218 public boolean addFishingArea2ManagedLocations(FishingArea2ManagedLocation elementToAdd) 219 { 220 return this.fishingArea2ManagedLocations.add(elementToAdd); 221 } 222 223 /** 224 * 225 * @param elementToRemove FishingArea2ManagedLocation 226 * @return <tt>true</tt> if this collection changed as a result of the 227 * call 228 */ 229 public boolean removeFishingArea2ManagedLocations(FishingArea2ManagedLocation elementToRemove) 230 { 231 return this.fishingArea2ManagedLocations.remove(elementToRemove); 232 } 233 234 private Collection<FishingArea2RegulationLocation> regulationLocations = new HashSet<FishingArea2RegulationLocation>(); 235 236 /** 237 * Zones réglementaires particulières (ex : ZEE, zone d'effort, etc.) 238 * @return this.regulationLocations Collection<FishingArea2RegulationLocation> 239 */ 240 public Collection<FishingArea2RegulationLocation> getRegulationLocations() 241 { 242 return this.regulationLocations; 243 } 244 245 /** 246 * Zones réglementaires particulières (ex : ZEE, zone d'effort, etc.) 247 * @param regulationLocationsIn Collection<FishingArea2RegulationLocation> 248 */ 249 public void setRegulationLocations(Collection<FishingArea2RegulationLocation> regulationLocationsIn) 250 { 251 this.regulationLocations = regulationLocationsIn; 252 } 253 254 /** 255 * Zones réglementaires particulières (ex : ZEE, zone d'effort, etc.) 256 * @param elementToAdd FishingArea2RegulationLocation 257 * @return <tt>true</tt> if this collection changed as a result of the 258 * call 259 */ 260 public boolean addRegulationLocations(FishingArea2RegulationLocation elementToAdd) 261 { 262 return this.regulationLocations.add(elementToAdd); 263 } 264 265 /** 266 * Zones réglementaires particulières (ex : ZEE, zone d'effort, etc.) 267 * @param elementToRemove FishingArea2RegulationLocation 268 * @return <tt>true</tt> if this collection changed as a result of the 269 * call 270 */ 271 public boolean removeRegulationLocations(FishingArea2RegulationLocation elementToRemove) 272 { 273 return this.regulationLocations.remove(elementToRemove); 274 } 275 276 private Produce produce; 277 278 /** 279 * <html> 280 * <head> 281 * </head> 282 * <body> 283 * <p> 284 * Un produit est identifié par une espèce commerciale, un état, une 285 * qualité, présentation et catégorie commerciale. 286 * </p> 287 * <p> 288 * </p> 289 * <p> 290 * <u>Si le produit est un "produit vendu" :</u> 291 * </p> 292 * <p> 293 * On pourra allors utiliser SortingMeasurement pour stocker des données 294 * économiques, comme par exemple : 295 * </p> 296 * <p> 297 * - Le prix du produit. Il peut y avoir plusieurds prix (plusieurs PSFMs), 298 * par exemple : prix au kilo, et prix total en euros. 299 * </p> 300 * <p> 301 * - Valorisation de la commercialisation : Label rouge, Eco Label, marque 302 * collective controlée par un organisme tier. (cf SACROIS) 303 * </p> 304 * <p> 305 * - Destination commerciale : consommation humaine, consommation animale, 306 * etc . 307 * </p> 308 * </body> 309 * </html> 310 * @return this.produce Produce 311 */ 312 public Produce getProduce() 313 { 314 return this.produce; 315 } 316 317 /** 318 * <html> 319 * <head> 320 * </head> 321 * <body> 322 * <p> 323 * Un produit est identifié par une espèce commerciale, un état, une 324 * qualité, présentation et catégorie commerciale. 325 * </p> 326 * <p> 327 * </p> 328 * <p> 329 * <u>Si le produit est un "produit vendu" :</u> 330 * </p> 331 * <p> 332 * On pourra allors utiliser SortingMeasurement pour stocker des données 333 * économiques, comme par exemple : 334 * </p> 335 * <p> 336 * - Le prix du produit. Il peut y avoir plusieurds prix (plusieurs PSFMs), 337 * par exemple : prix au kilo, et prix total en euros. 338 * </p> 339 * <p> 340 * - Valorisation de la commercialisation : Label rouge, Eco Label, marque 341 * collective controlée par un organisme tier. (cf SACROIS) 342 * </p> 343 * <p> 344 * - Destination commerciale : consommation humaine, consommation animale, 345 * etc . 346 * </p> 347 * </body> 348 * </html> 349 * @param produceIn Produce 350 */ 351 public void setProduce(Produce produceIn) 352 { 353 this.produce = produceIn; 354 } 355 356 private GearUseFeatures gearUseFeatures; 357 358 /** 359 * Paramètre de mise en oeuvre de l'engin durant une opération. 360 * Exemple de paramètre de mise en oeuvre: 361 * • nombre de boués, 362 * • type de panneau, 363 * • présence d'un racasseur, 364 * • nombre de casier. 365 * mais aussi : 366 * • profondeur moyenne de l'engin, 367 * • vitesse de traine moyenne 368 * • ouverture du chalut 369 * @return this.gearUseFeatures GearUseFeatures 370 */ 371 public GearUseFeatures getGearUseFeatures() 372 { 373 return this.gearUseFeatures; 374 } 375 376 /** 377 * Paramètre de mise en oeuvre de l'engin durant une opération. 378 * Exemple de paramètre de mise en oeuvre: 379 * • nombre de boués, 380 * • type de panneau, 381 * • présence d'un racasseur, 382 * • nombre de casier. 383 * mais aussi : 384 * • profondeur moyenne de l'engin, 385 * • vitesse de traine moyenne 386 * • ouverture du chalut 387 * @param gearUseFeaturesIn GearUseFeatures 388 */ 389 public void setGearUseFeatures(GearUseFeatures gearUseFeaturesIn) 390 { 391 this.gearUseFeatures = gearUseFeaturesIn; 392 } 393 394 private VesselUseFeatures vesselUseFeatures; 395 396 /** 397 * Paramètres de mise en oeuvre du navire. Il peut s'agir de données d'observation comme de 398 * données de 399 * déclaration, mais liée à comment est utilisé le navire et dans quelles conditions. 400 * Par exemple, pour les donénes d'observation : 401 * • profondeur de mer au début de l'opération, en mètre, 402 * • profondeur de mer à la fin de l'opération, en mètre, 403 * • déroulement de l'opération (normal, anormal, etc.) 404 * • état de la mer lors durant l'opération : échelle de 0 à 9 (4=agitée, etc) 405 * • trait rectiligne (oui/non) 406 * • cout en gazoil, 407 * • nombre d'engin perdu, 408 * • cout des pertes, 409 * • etc. 410 * Par exemple, pour les données de déclaration : 411 * • temps de pêche, 412 * • temps de route (qui peut aussi etre calculé à l'exploitation), 413 * • nombre d'opérations, 414 * • etc. 415 * @return this.vesselUseFeatures VesselUseFeatures 416 */ 417 public VesselUseFeatures getVesselUseFeatures() 418 { 419 return this.vesselUseFeatures; 420 } 421 422 /** 423 * Paramètres de mise en oeuvre du navire. Il peut s'agir de données d'observation comme de 424 * données de 425 * déclaration, mais liée à comment est utilisé le navire et dans quelles conditions. 426 * Par exemple, pour les donénes d'observation : 427 * • profondeur de mer au début de l'opération, en mètre, 428 * • profondeur de mer à la fin de l'opération, en mètre, 429 * • déroulement de l'opération (normal, anormal, etc.) 430 * • état de la mer lors durant l'opération : échelle de 0 à 9 (4=agitée, etc) 431 * • trait rectiligne (oui/non) 432 * • cout en gazoil, 433 * • nombre d'engin perdu, 434 * • cout des pertes, 435 * • etc. 436 * Par exemple, pour les données de déclaration : 437 * • temps de pêche, 438 * • temps de route (qui peut aussi etre calculé à l'exploitation), 439 * • nombre d'opérations, 440 * • etc. 441 * @param vesselUseFeaturesIn VesselUseFeatures 442 */ 443 public void setVesselUseFeatures(VesselUseFeatures vesselUseFeaturesIn) 444 { 445 this.vesselUseFeatures = vesselUseFeaturesIn; 446 } 447 448 private NearbySpecificArea nearbySpecificArea; 449 450 /** 451 * Type de zone de proximité particulière. 452 * Par exemple : 453 * - DCP (Dispositif de Concentration de Poison) 454 * - Filière aquacole 455 * - ... 456 * (liste non exhaustive) 457 * Nombre de lignes : 10 458 * @return this.nearbySpecificArea NearbySpecificArea 459 */ 460 public NearbySpecificArea getNearbySpecificArea() 461 { 462 return this.nearbySpecificArea; 463 } 464 465 /** 466 * Type de zone de proximité particulière. 467 * Par exemple : 468 * - DCP (Dispositif de Concentration de Poison) 469 * - Filière aquacole 470 * - ... 471 * (liste non exhaustive) 472 * Nombre de lignes : 10 473 * @param nearbySpecificAreaIn NearbySpecificArea 474 */ 475 public void setNearbySpecificArea(NearbySpecificArea nearbySpecificAreaIn) 476 { 477 this.nearbySpecificArea = nearbySpecificAreaIn; 478 } 479 480 private DepthGradient depthGradient; 481 482 /** 483 * Type de gradient de profondeur de la zone de pêche. 484 * @return this.depthGradient DepthGradient 485 */ 486 public DepthGradient getDepthGradient() 487 { 488 return this.depthGradient; 489 } 490 491 /** 492 * Type de gradient de profondeur de la zone de pêche. 493 * @param depthGradientIn DepthGradient 494 */ 495 public void setDepthGradient(DepthGradient depthGradientIn) 496 { 497 this.depthGradient = depthGradientIn; 498 } 499 500 private DistanceToCoastGradient distanceToCoastGradient; 501 502 /** 503 * Gradient de distance à la cote. 504 * passage en optionel nécessaire pour SACROIS. 505 * @return this.distanceToCoastGradient DistanceToCoastGradient 506 */ 507 public DistanceToCoastGradient getDistanceToCoastGradient() 508 { 509 return this.distanceToCoastGradient; 510 } 511 512 /** 513 * Gradient de distance à la cote. 514 * passage en optionel nécessaire pour SACROIS. 515 * @param distanceToCoastGradientIn DistanceToCoastGradient 516 */ 517 public void setDistanceToCoastGradient(DistanceToCoastGradient distanceToCoastGradientIn) 518 { 519 this.distanceToCoastGradient = distanceToCoastGradientIn; 520 } 521 522 private Location location; 523 524 /** 525 * Représente un lieu au sens général du terme. Il peut s'agir d'un lieu ponctuel, linéaire ou 526 * surfacique. 527 * Suivant sa classification et son niveau, il peut s'agir d'un secteur FAO, un port de pêche, 528 * un 529 * quartier maritime, une criée, etc. 530 * Nombre de lignes : lieux terrestre : 4500 + secteurs : 11210 + strates : 1000 + localités : 531 * 200 532 * @return this.location Location 533 */ 534 public Location getLocation() 535 { 536 return this.location; 537 } 538 539 /** 540 * Représente un lieu au sens général du terme. Il peut s'agir d'un lieu ponctuel, linéaire ou 541 * surfacique. 542 * Suivant sa classification et son niveau, il peut s'agir d'un secteur FAO, un port de pêche, 543 * un 544 * quartier maritime, une criée, etc. 545 * Nombre de lignes : lieux terrestre : 4500 + secteurs : 11210 + strates : 1000 + localités : 546 * 200 547 * @param locationIn Location 548 */ 549 public void setLocation(Location locationIn) 550 { 551 this.location = locationIn; 552 } 553 554 private Sale sale; 555 556 /** 557 * Lien vers la vente rattachée. 558 * Nécessaire pour Allegro ObsVente (v3.1), qui nécessite qu'une vente soit liée à des zones en 559 * mer. Ceci pour le calcul des RTP dans l'échantillonnage biologique. Ces zones en mer sont 560 * récupérées à partir de la ligne du plan d'echantillonnage, depuis WAO. 561 * @return this.sale Sale 562 */ 563 public Sale getSale() 564 { 565 return this.sale; 566 } 567 568 /** 569 * Lien vers la vente rattachée. 570 * Nécessaire pour Allegro ObsVente (v3.1), qui nécessite qu'une vente soit liée à des zones en 571 * mer. Ceci pour le calcul des RTP dans l'échantillonnage biologique. Ces zones en mer sont 572 * récupérées à partir de la ligne du plan d'echantillonnage, depuis WAO. 573 * @param saleIn Sale 574 */ 575 public void setSale(Sale saleIn) 576 { 577 this.sale = saleIn; 578 } 579 580 private QualityFlag qualityFlag; 581 582 /** 583 * @since 3.5.0 584 * @return this.qualityFlag QualityFlag 585 */ 586 public QualityFlag getQualityFlag() 587 { 588 return this.qualityFlag; 589 } 590 591 /** 592 * @since 3.5.0 593 * @param qualityFlagIn QualityFlag 594 */ 595 public void setQualityFlag(QualityFlag qualityFlagIn) 596 { 597 this.qualityFlag = qualityFlagIn; 598 } 599 600 private Sample sample; 601 602 /** 603 * Un prélèvement représente un (et un seul) support, prélevé au cours d'une opération de peche, 604 * d'un 605 * échantillonnage au débarquement ou d'une vente. Il s'agit de la partie qui est recueillie 606 * pour 607 * analyse ou dénombrement. 608 * Un prélèvement est rattaché à une opération de peche ou un groupe d'opérations, un 609 * débarquement ou à 610 * une vente. Il peut être en plus rattaché à un des lots échantillonnés (le lot de provenance). 611 * Dans le cas des marées observées en mer, un prlèvement correspond à un individu, dont le 612 * support 613 * est, par exemple : 614 * - crustacé (crevette...) 615 * - poisson (merlu, sardine...) 616 * - gastéropode (bigorneau, littorine...) 617 * - echinoderme (oursin...) 618 * - etc. 619 * Le nombre d'individu, généralement égal à 1, permet de constituer des prélèvement de 620 * plusieurs 621 * individu (dès lors qu'il sont ne meme anture). Chaque résultat de mesure (SampleMeasurement) 622 * pourra 623 * identifié l'individu concerné par la mesure, par une numéro din'dividu. 624 * Un mnémonique, représentant généralement l'étiquette collée sur le sachet contenant le 625 * prélèvement, 626 * permet d"identifier le prélèvement de manière simple, notamment en laboratoire pour la saisie 627 * des 628 * lectures d'age, etc.. 629 * Par exemple de prélèvement : 630 * - un poisson, d'une espèce donnée, sur lequel est prélevé un otholithe, et/ou des écailes 631 * afin de 632 * réaliser une lecture d'age. 633 * - un cétacé, issu d'un lot, sur lesquels doit être effectué des analyses d'age, de taille, 634 * - etc. 635 * @return this.sample Sample 636 */ 637 public Sample getSample() 638 { 639 return this.sample; 640 } 641 642 /** 643 * Un prélèvement représente un (et un seul) support, prélevé au cours d'une opération de peche, 644 * d'un 645 * échantillonnage au débarquement ou d'une vente. Il s'agit de la partie qui est recueillie 646 * pour 647 * analyse ou dénombrement. 648 * Un prélèvement est rattaché à une opération de peche ou un groupe d'opérations, un 649 * débarquement ou à 650 * une vente. Il peut être en plus rattaché à un des lots échantillonnés (le lot de provenance). 651 * Dans le cas des marées observées en mer, un prlèvement correspond à un individu, dont le 652 * support 653 * est, par exemple : 654 * - crustacé (crevette...) 655 * - poisson (merlu, sardine...) 656 * - gastéropode (bigorneau, littorine...) 657 * - echinoderme (oursin...) 658 * - etc. 659 * Le nombre d'individu, généralement égal à 1, permet de constituer des prélèvement de 660 * plusieurs 661 * individu (dès lors qu'il sont ne meme anture). Chaque résultat de mesure (SampleMeasurement) 662 * pourra 663 * identifié l'individu concerné par la mesure, par une numéro din'dividu. 664 * Un mnémonique, représentant généralement l'étiquette collée sur le sachet contenant le 665 * prélèvement, 666 * permet d"identifier le prélèvement de manière simple, notamment en laboratoire pour la saisie 667 * des 668 * lectures d'age, etc.. 669 * Par exemple de prélèvement : 670 * - un poisson, d'une espèce donnée, sur lequel est prélevé un otholithe, et/ou des écailes 671 * afin de 672 * réaliser une lecture d'age. 673 * - un cétacé, issu d'un lot, sur lesquels doit être effectué des analyses d'age, de taille, 674 * - etc. 675 * @param sampleIn Sample 676 */ 677 public void setSample(Sample sampleIn) 678 { 679 this.sample = sampleIn; 680 } 681 682 /** 683 * Returns <code>true</code> if the argument is an FishingArea instance and all identifiers for this entity 684 * equal the identifiers of the argument entity. Returns <code>false</code> otherwise. 685 */ 686 @Override 687 public boolean equals(Object object) 688 { 689 if (this == object) 690 { 691 return true; 692 } 693 if (!(object instanceof FishingArea)) 694 { 695 return false; 696 } 697 final FishingArea that = (FishingArea)object; 698 if (this.id == null || that.getId() == null || !this.id.equals(that.getId())) 699 { 700 return false; 701 } 702 return true; 703 } 704 705 /** 706 * Returns a hash code based on this entity's identifiers. 707 */ 708 @Override 709 public int hashCode() 710 { 711 int hashCode = 0; 712 hashCode = 29 * hashCode + (this.id == null ? 0 : this.id.hashCode()); 713 714 return hashCode; 715 } 716 717 /** 718 * Constructs new instances of {@link FishingArea}. 719 */ 720 public static final class Factory 721 { 722 /** 723 * Constructs a new instance of {@link FishingArea}. 724 * @return new FishingAreaImpl() 725 */ 726 public static FishingArea newInstance() 727 { 728 return new FishingAreaImpl(); 729 } 730 731 /** 732 * Constructs a new instance of {@link FishingArea}, taking all required and/or 733 * read-only properties as arguments, except for identifiers. 734 * @param distanceToCoastGradient DistanceToCoastGradient 735 * @param location Location 736 * @param qualityFlag QualityFlag 737 * @return newInstance 738 */ 739 public static FishingArea newInstance(DistanceToCoastGradient distanceToCoastGradient, Location location, QualityFlag qualityFlag) 740 { 741 final FishingArea entity = new FishingAreaImpl(); 742 entity.setDistanceToCoastGradient(distanceToCoastGradient); 743 entity.setLocation(location); 744 entity.setQualityFlag(qualityFlag); 745 return entity; 746 } 747 748 /** 749 * Constructs a new instance of {@link FishingArea}, taking all possible properties 750 * (except the identifier(s))as arguments. 751 * @param qualificationDate Date 752 * @param qualificationComments String 753 * @param fishingArea2ManagedLocations Collection<FishingArea2ManagedLocation> 754 * @param regulationLocations Collection<FishingArea2RegulationLocation> 755 * @param produce Produce 756 * @param gearUseFeatures GearUseFeatures 757 * @param vesselUseFeatures VesselUseFeatures 758 * @param nearbySpecificArea NearbySpecificArea 759 * @param depthGradient DepthGradient 760 * @param distanceToCoastGradient DistanceToCoastGradient 761 * @param location Location 762 * @param sale Sale 763 * @param qualityFlag QualityFlag 764 * @param sample Sample 765 * @return newInstance FishingArea 766 */ 767 public static FishingArea newInstance(Date qualificationDate, String qualificationComments, Collection<FishingArea2ManagedLocation> fishingArea2ManagedLocations, Collection<FishingArea2RegulationLocation> regulationLocations, Produce produce, GearUseFeatures gearUseFeatures, VesselUseFeatures vesselUseFeatures, NearbySpecificArea nearbySpecificArea, DepthGradient depthGradient, DistanceToCoastGradient distanceToCoastGradient, Location location, Sale sale, QualityFlag qualityFlag, Sample sample) 768 { 769 final FishingArea entity = new FishingAreaImpl(); 770 entity.setQualificationDate(qualificationDate); 771 entity.setQualificationComments(qualificationComments); 772 entity.setFishingArea2ManagedLocations(fishingArea2ManagedLocations); 773 entity.setRegulationLocations(regulationLocations); 774 entity.setProduce(produce); 775 entity.setGearUseFeatures(gearUseFeatures); 776 entity.setVesselUseFeatures(vesselUseFeatures); 777 entity.setNearbySpecificArea(nearbySpecificArea); 778 entity.setDepthGradient(depthGradient); 779 entity.setDistanceToCoastGradient(distanceToCoastGradient); 780 entity.setLocation(location); 781 entity.setSale(sale); 782 entity.setQualityFlag(qualityFlag); 783 entity.setSample(sample); 784 return entity; 785 } 786 } 787 788 /** 789 * @see Comparable#compareTo 790 */ 791 public int compareTo(FishingArea o) 792 { 793 int cmp = 0; 794 if (this.getId() != null) 795 { 796 cmp = this.getId().compareTo(o.getId()); 797 } 798 else 799 { 800 if (this.getQualificationDate() != null) 801 { 802 cmp = (cmp != 0 ? cmp : this.getQualificationDate().compareTo(o.getQualificationDate())); 803 } 804 if (this.getQualificationComments() != null) 805 { 806 cmp = (cmp != 0 ? cmp : this.getQualificationComments().compareTo(o.getQualificationComments())); 807 } 808 } 809 return cmp; 810 } 811// HibernateEntity.vsl merge-point 812// FishingArea.java merge-point 813}