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.administration.programStrategy; 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.user.Person; 032import fr.ifremer.adagio.core.dao.referential.gear.Gear; 033import java.io.Serializable; 034import java.sql.Timestamp; 035import java.util.Collection; 036import java.util.Date; 037import java.util.HashSet; 038 039/** 040 * La stratégie définit a priori ce que devront être les données présentes dans le système de 041 * l'origine de la collecte des données. Il s'agit de la liste des paramètres à mesurer, ainsi que 042 * des méthodes préconisées pour chacun de ces paramètres. La stratégie permet ainsi d'aider à la 043 * saisie des données, en personnalisant les écrans, et facilite la consultation rapide du contenu 044 * théorique de la base. 045 * Par exemple, on pourra avoir les stratégies suivantes : 046 * - stratégie "échantillonnage pendant les marées observées" 047 * - stratégie "échantillonnage pendant les campagne à la mer" 048 */ 049// HibernateEntity.vsl annotations merge-point 050public abstract class Strategy 051 implements Serializable, Comparable<Strategy> 052{ 053 /** 054 * The serial version UID of this class. Needed for serialization. 055 */ 056 private static final long serialVersionUID = 3391613597864647219L; 057 058 // Generate 5 attributes 059 private Integer id; 060 061 /** 062 * Identifiant interne. généré par le système. 063 * @return this.id Integer 064 */ 065 public Integer getId() 066 { 067 return this.id; 068 } 069 070 /** 071 * Identifiant interne. généré par le système. 072 * @param idIn Integer 073 */ 074 public void setId(Integer idIn) 075 { 076 this.id = idIn; 077 } 078 079 private String name; 080 081 /** 082 * 083 * @return this.name String 084 */ 085 public String getName() 086 { 087 return this.name; 088 } 089 090 /** 091 * 092 * @param nameIn String 093 */ 094 public void setName(String nameIn) 095 { 096 this.name = nameIn; 097 } 098 099 private String description; 100 101 /** 102 * 103 * @return this.description String 104 */ 105 public String getDescription() 106 { 107 return this.description; 108 } 109 110 /** 111 * 112 * @param descriptionIn String 113 */ 114 public void setDescription(String descriptionIn) 115 { 116 this.description = descriptionIn; 117 } 118 119 private Date creationDate; 120 121 /** 122 * 123 * @return this.creationDate Date 124 */ 125 public Date getCreationDate() 126 { 127 return this.creationDate; 128 } 129 130 /** 131 * 132 * @param creationDateIn Date 133 */ 134 public void setCreationDate(Date creationDateIn) 135 { 136 this.creationDate = creationDateIn; 137 } 138 139 private Timestamp updateDate; 140 141 /** 142 * 143 * @return this.updateDate Timestamp 144 */ 145 public Timestamp getUpdateDate() 146 { 147 return this.updateDate; 148 } 149 150 /** 151 * 152 * @param updateDateIn Timestamp 153 */ 154 public void setUpdateDate(Timestamp updateDateIn) 155 { 156 this.updateDate = updateDateIn; 157 } 158 159 // Generate 6 associations 160 private Collection<ReferenceTaxonStrategy> referenceTaxonStrategies = new HashSet<ReferenceTaxonStrategy>(); 161 162 /** 163 * Définit les Taxons relatifs à une stratégie de collecte, éventuellement le niveau de priorité 164 * de la 165 * collecte sur le Taxon. 166 * @return this.referenceTaxonStrategies Collection<ReferenceTaxonStrategy> 167 */ 168 public Collection<ReferenceTaxonStrategy> getReferenceTaxonStrategies() 169 { 170 return this.referenceTaxonStrategies; 171 } 172 173 /** 174 * Définit les Taxons relatifs à une stratégie de collecte, éventuellement le niveau de priorité 175 * de la 176 * collecte sur le Taxon. 177 * @param referenceTaxonStrategiesIn Collection<ReferenceTaxonStrategy> 178 */ 179 public void setReferenceTaxonStrategies(Collection<ReferenceTaxonStrategy> referenceTaxonStrategiesIn) 180 { 181 this.referenceTaxonStrategies = referenceTaxonStrategiesIn; 182 } 183 184 /** 185 * Définit les Taxons relatifs à une stratégie de collecte, éventuellement le niveau de priorité 186 * de la 187 * collecte sur le Taxon. 188 * @param elementToAdd ReferenceTaxonStrategy 189 * @return <tt>true</tt> if this collection changed as a result of the 190 * call 191 */ 192 public boolean addReferenceTaxonStrategies(ReferenceTaxonStrategy elementToAdd) 193 { 194 return this.referenceTaxonStrategies.add(elementToAdd); 195 } 196 197 /** 198 * Définit les Taxons relatifs à une stratégie de collecte, éventuellement le niveau de priorité 199 * de la 200 * collecte sur le Taxon. 201 * @param elementToRemove ReferenceTaxonStrategy 202 * @return <tt>true</tt> if this collection changed as a result of the 203 * call 204 */ 205 public boolean removeReferenceTaxonStrategies(ReferenceTaxonStrategy elementToRemove) 206 { 207 return this.referenceTaxonStrategies.remove(elementToRemove); 208 } 209 210 private Collection<Person> managersUsers = new HashSet<Person>(); 211 212 /** 213 * <html> 214 * <head> 215 * <style> 216 * p {padding:0px; margin:0px;} 217 * </style> 218 * </head> 219 * <body> 220 * <p> 221 * Personne liées aux données : utilisateur du système, ou observateurs, 222 * responsable de données, etc. 223 * </p> 224 * <p> 225 * </p> 226 * <p> 227 * Les personnes liées aux activités professionnelles de pêche sont plutôt 228 * gérer dans <i>VesselPerson</i>. 229 * </p> 230 * <p> 231 * </p> 232 * <p> 233 * Nombre de lignes : 100 234 * </p> 235 * </body> 236 * </html> 237 * @return this.managersUsers Collection<Person> 238 */ 239 public Collection<Person> getManagersUsers() 240 { 241 return this.managersUsers; 242 } 243 244 /** 245 * <html> 246 * <head> 247 * <style> 248 * p {padding:0px; margin:0px;} 249 * </style> 250 * </head> 251 * <body> 252 * <p> 253 * Personne liées aux données : utilisateur du système, ou observateurs, 254 * responsable de données, etc. 255 * </p> 256 * <p> 257 * </p> 258 * <p> 259 * Les personnes liées aux activités professionnelles de pêche sont plutôt 260 * gérer dans <i>VesselPerson</i>. 261 * </p> 262 * <p> 263 * </p> 264 * <p> 265 * Nombre de lignes : 100 266 * </p> 267 * </body> 268 * </html> 269 * @param managersUsersIn Collection<Person> 270 */ 271 public void setManagersUsers(Collection<Person> managersUsersIn) 272 { 273 this.managersUsers = managersUsersIn; 274 } 275 276 /** 277 * <html> 278 * <head> 279 * <style> 280 * p {padding:0px; margin:0px;} 281 * </style> 282 * </head> 283 * <body> 284 * <p> 285 * Personne liées aux données : utilisateur du système, ou observateurs, 286 * responsable de données, etc. 287 * </p> 288 * <p> 289 * </p> 290 * <p> 291 * Les personnes liées aux activités professionnelles de pêche sont plutôt 292 * gérer dans <i>VesselPerson</i>. 293 * </p> 294 * <p> 295 * </p> 296 * <p> 297 * Nombre de lignes : 100 298 * </p> 299 * </body> 300 * </html> 301 * @param elementToAdd Person 302 * @return <tt>true</tt> if this collection changed as a result of the 303 * call 304 */ 305 public boolean addManagersUsers(Person elementToAdd) 306 { 307 return this.managersUsers.add(elementToAdd); 308 } 309 310 /** 311 * <html> 312 * <head> 313 * <style> 314 * p {padding:0px; margin:0px;} 315 * </style> 316 * </head> 317 * <body> 318 * <p> 319 * Personne liées aux données : utilisateur du système, ou observateurs, 320 * responsable de données, etc. 321 * </p> 322 * <p> 323 * </p> 324 * <p> 325 * Les personnes liées aux activités professionnelles de pêche sont plutôt 326 * gérer dans <i>VesselPerson</i>. 327 * </p> 328 * <p> 329 * </p> 330 * <p> 331 * Nombre de lignes : 100 332 * </p> 333 * </body> 334 * </html> 335 * @param elementToRemove Person 336 * @return <tt>true</tt> if this collection changed as a result of the 337 * call 338 */ 339 public boolean removeManagersUsers(Person elementToRemove) 340 { 341 return this.managersUsers.remove(elementToRemove); 342 } 343 344 private Collection<Gear> gears = new HashSet<Gear>(); 345 346 /** 347 * <html> 348 * <head> 349 * </head> 350 * <body> 351 * <p> 352 * Défini un engin, non pas engin physique, mais au sens "classe d'engin". 353 * </p> 354 * <p> 355 * Il est possible de définir un arboresence d'engin, au sein d'une meme 356 * classification, via les liens d'engin parents/enfants. 357 * </p> 358 * <p> 359 * <br> 360 * </p> 361 * <p> 362 * Exemple, pour la classification 'Engin EU corpus' : 363 * </p> 364 * <p> 365 * * 'corpus effort de pêche'<br>- PAL Palangre de surface (Longliner)<br> 366 * </p> 367 * <p> 368 * - EP1 Engins petits pélagiques - corpus réglementaire 685/95 369 * </p> 370 * <p> 371 * * corpus 2 (...)<br>- ... 372 * </p> 373 * <p> 374 * <br> 375 * </p> 376 * <p> 377 * Exemple, pour la classification 'FAO/CISTEP' :<br>* 'chaluts' (code 378 * '03.0.0')<br> 379 * </p> 380 * <p> 381 * - 'OTB' 'chalut de fond'<br> 382 * </p> 383 * <p> 384 * - chalut pélagique 385 * </p> 386 * <p> 387 * - ...<br>* 'Filets' 388 * </p> 389 * </body> 390 * </html> 391 * @return this.gears Collection<Gear> 392 */ 393 public Collection<Gear> getGears() 394 { 395 return this.gears; 396 } 397 398 /** 399 * <html> 400 * <head> 401 * </head> 402 * <body> 403 * <p> 404 * Défini un engin, non pas engin physique, mais au sens "classe d'engin". 405 * </p> 406 * <p> 407 * Il est possible de définir un arboresence d'engin, au sein d'une meme 408 * classification, via les liens d'engin parents/enfants. 409 * </p> 410 * <p> 411 * <br> 412 * </p> 413 * <p> 414 * Exemple, pour la classification 'Engin EU corpus' : 415 * </p> 416 * <p> 417 * * 'corpus effort de pêche'<br>- PAL Palangre de surface (Longliner)<br> 418 * </p> 419 * <p> 420 * - EP1 Engins petits pélagiques - corpus réglementaire 685/95 421 * </p> 422 * <p> 423 * * corpus 2 (...)<br>- ... 424 * </p> 425 * <p> 426 * <br> 427 * </p> 428 * <p> 429 * Exemple, pour la classification 'FAO/CISTEP' :<br>* 'chaluts' (code 430 * '03.0.0')<br> 431 * </p> 432 * <p> 433 * - 'OTB' 'chalut de fond'<br> 434 * </p> 435 * <p> 436 * - chalut pélagique 437 * </p> 438 * <p> 439 * - ...<br>* 'Filets' 440 * </p> 441 * </body> 442 * </html> 443 * @param gearsIn Collection<Gear> 444 */ 445 public void setGears(Collection<Gear> gearsIn) 446 { 447 this.gears = gearsIn; 448 } 449 450 /** 451 * <html> 452 * <head> 453 * </head> 454 * <body> 455 * <p> 456 * Défini un engin, non pas engin physique, mais au sens "classe d'engin". 457 * </p> 458 * <p> 459 * Il est possible de définir un arboresence d'engin, au sein d'une meme 460 * classification, via les liens d'engin parents/enfants. 461 * </p> 462 * <p> 463 * <br> 464 * </p> 465 * <p> 466 * Exemple, pour la classification 'Engin EU corpus' : 467 * </p> 468 * <p> 469 * * 'corpus effort de pêche'<br>- PAL Palangre de surface (Longliner)<br> 470 * </p> 471 * <p> 472 * - EP1 Engins petits pélagiques - corpus réglementaire 685/95 473 * </p> 474 * <p> 475 * * corpus 2 (...)<br>- ... 476 * </p> 477 * <p> 478 * <br> 479 * </p> 480 * <p> 481 * Exemple, pour la classification 'FAO/CISTEP' :<br>* 'chaluts' (code 482 * '03.0.0')<br> 483 * </p> 484 * <p> 485 * - 'OTB' 'chalut de fond'<br> 486 * </p> 487 * <p> 488 * - chalut pélagique 489 * </p> 490 * <p> 491 * - ...<br>* 'Filets' 492 * </p> 493 * </body> 494 * </html> 495 * @param elementToAdd Gear 496 * @return <tt>true</tt> if this collection changed as a result of the 497 * call 498 */ 499 public boolean addGears(Gear elementToAdd) 500 { 501 return this.gears.add(elementToAdd); 502 } 503 504 /** 505 * <html> 506 * <head> 507 * </head> 508 * <body> 509 * <p> 510 * Défini un engin, non pas engin physique, mais au sens "classe d'engin". 511 * </p> 512 * <p> 513 * Il est possible de définir un arboresence d'engin, au sein d'une meme 514 * classification, via les liens d'engin parents/enfants. 515 * </p> 516 * <p> 517 * <br> 518 * </p> 519 * <p> 520 * Exemple, pour la classification 'Engin EU corpus' : 521 * </p> 522 * <p> 523 * * 'corpus effort de pêche'<br>- PAL Palangre de surface (Longliner)<br> 524 * </p> 525 * <p> 526 * - EP1 Engins petits pélagiques - corpus réglementaire 685/95 527 * </p> 528 * <p> 529 * * corpus 2 (...)<br>- ... 530 * </p> 531 * <p> 532 * <br> 533 * </p> 534 * <p> 535 * Exemple, pour la classification 'FAO/CISTEP' :<br>* 'chaluts' (code 536 * '03.0.0')<br> 537 * </p> 538 * <p> 539 * - 'OTB' 'chalut de fond'<br> 540 * </p> 541 * <p> 542 * - chalut pélagique 543 * </p> 544 * <p> 545 * - ...<br>* 'Filets' 546 * </p> 547 * </body> 548 * </html> 549 * @param elementToRemove Gear 550 * @return <tt>true</tt> if this collection changed as a result of the 551 * call 552 */ 553 public boolean removeGears(Gear elementToRemove) 554 { 555 return this.gears.remove(elementToRemove); 556 } 557 558 private Collection<PmfmStrategy> pmfmStrategies = new HashSet<PmfmStrategy>(); 559 560 /** 561 * 562 * @return this.pmfmStrategies Collection<PmfmStrategy> 563 */ 564 public Collection<PmfmStrategy> getPmfmStrategies() 565 { 566 return this.pmfmStrategies; 567 } 568 569 /** 570 * 571 * @param pmfmStrategiesIn Collection<PmfmStrategy> 572 */ 573 public void setPmfmStrategies(Collection<PmfmStrategy> pmfmStrategiesIn) 574 { 575 this.pmfmStrategies = pmfmStrategiesIn; 576 } 577 578 /** 579 * 580 * @param elementToAdd PmfmStrategy 581 * @return <tt>true</tt> if this collection changed as a result of the 582 * call 583 */ 584 public boolean addPmfmStrategies(PmfmStrategy elementToAdd) 585 { 586 return this.pmfmStrategies.add(elementToAdd); 587 } 588 589 /** 590 * 591 * @param elementToRemove PmfmStrategy 592 * @return <tt>true</tt> if this collection changed as a result of the 593 * call 594 */ 595 public boolean removePmfmStrategies(PmfmStrategy elementToRemove) 596 { 597 return this.pmfmStrategies.remove(elementToRemove); 598 } 599 600 private Program program; 601 602 /** 603 * Programme d'observation à l'origine d'une collecte de données. 604 * Désigne les activités qui sont à l'origine de la collecte d'un ensemble cohérent de données, 605 * que ce 606 * soit pour des collectes continues (marées observées en mer, SIPA) ou pour des études limitées 607 * dans 608 * le temps. La quantité de données rattachées à un programme peut être variable, selon qu'il 609 * s'agit 610 * d'une activité longue ou intensive, ou d'une opération plus ponctuelle (étude) mais toujours 611 * mise en 612 * œuvre selon un schéma décidé à l'avance. 613 * Exemple de programmes d'observations : 614 * - SIH-OBSMER (marées observées en mer) 615 * - SIH-STATPECHE (enquete d'activité et d'effort...) 616 * - SIPA : données déclaratives transmises par la DPMA 617 * - VMS : données satellitaires 618 * - OFIMER : données du SI de l'OFIMER 619 * @return this.program Program 620 */ 621 public Program getProgram() 622 { 623 return this.program; 624 } 625 626 /** 627 * Programme d'observation à l'origine d'une collecte de données. 628 * Désigne les activités qui sont à l'origine de la collecte d'un ensemble cohérent de données, 629 * que ce 630 * soit pour des collectes continues (marées observées en mer, SIPA) ou pour des études limitées 631 * dans 632 * le temps. La quantité de données rattachées à un programme peut être variable, selon qu'il 633 * s'agit 634 * d'une activité longue ou intensive, ou d'une opération plus ponctuelle (étude) mais toujours 635 * mise en 636 * œuvre selon un schéma décidé à l'avance. 637 * Exemple de programmes d'observations : 638 * - SIH-OBSMER (marées observées en mer) 639 * - SIH-STATPECHE (enquete d'activité et d'effort...) 640 * - SIPA : données déclaratives transmises par la DPMA 641 * - VMS : données satellitaires 642 * - OFIMER : données du SI de l'OFIMER 643 * @param programIn Program 644 */ 645 public void setProgram(Program programIn) 646 { 647 this.program = programIn; 648 } 649 650 private Collection<AppliedStrategy> appliedStrategies = new HashSet<AppliedStrategy>(); 651 652 /** 653 * Une stratégie applicable est la stratégie qui s'applique pour un lieu de surveillance donné 654 * durant 655 * un interval de dates défini. 656 * @return this.appliedStrategies Collection<AppliedStrategy> 657 */ 658 public Collection<AppliedStrategy> getAppliedStrategies() 659 { 660 return this.appliedStrategies; 661 } 662 663 /** 664 * Une stratégie applicable est la stratégie qui s'applique pour un lieu de surveillance donné 665 * durant 666 * un interval de dates défini. 667 * @param appliedStrategiesIn Collection<AppliedStrategy> 668 */ 669 public void setAppliedStrategies(Collection<AppliedStrategy> appliedStrategiesIn) 670 { 671 this.appliedStrategies = appliedStrategiesIn; 672 } 673 674 /** 675 * Une stratégie applicable est la stratégie qui s'applique pour un lieu de surveillance donné 676 * durant 677 * un interval de dates défini. 678 * @param elementToAdd AppliedStrategy 679 * @return <tt>true</tt> if this collection changed as a result of the 680 * call 681 */ 682 public boolean addAppliedStrategies(AppliedStrategy elementToAdd) 683 { 684 return this.appliedStrategies.add(elementToAdd); 685 } 686 687 /** 688 * Une stratégie applicable est la stratégie qui s'applique pour un lieu de surveillance donné 689 * durant 690 * un interval de dates défini. 691 * @param elementToRemove AppliedStrategy 692 * @return <tt>true</tt> if this collection changed as a result of the 693 * call 694 */ 695 public boolean removeAppliedStrategies(AppliedStrategy elementToRemove) 696 { 697 return this.appliedStrategies.remove(elementToRemove); 698 } 699 700 /** 701 * Returns <code>true</code> if the argument is an Strategy instance and all identifiers for this entity 702 * equal the identifiers of the argument entity. Returns <code>false</code> otherwise. 703 */ 704 @Override 705 public boolean equals(Object object) 706 { 707 if (this == object) 708 { 709 return true; 710 } 711 if (!(object instanceof Strategy)) 712 { 713 return false; 714 } 715 final Strategy that = (Strategy)object; 716 if (this.id == null || that.getId() == null || !this.id.equals(that.getId())) 717 { 718 return false; 719 } 720 return true; 721 } 722 723 /** 724 * Returns a hash code based on this entity's identifiers. 725 */ 726 @Override 727 public int hashCode() 728 { 729 int hashCode = 0; 730 hashCode = 29 * hashCode + (this.id == null ? 0 : this.id.hashCode()); 731 732 return hashCode; 733 } 734 735 /** 736 * Constructs new instances of {@link Strategy}. 737 */ 738 public static final class Factory 739 { 740 /** 741 * Constructs a new instance of {@link Strategy}. 742 * @return new StrategyImpl() 743 */ 744 public static Strategy newInstance() 745 { 746 return new StrategyImpl(); 747 } 748 749 /** 750 * Constructs a new instance of {@link Strategy}, taking all required and/or 751 * read-only properties as arguments, except for identifiers. 752 * @param name String 753 * @param description String 754 * @param creationDate Date 755 * @param updateDate Timestamp 756 * @param managersUsers Collection<Person> 757 * @param program Program 758 * @return newInstance 759 */ 760 public static Strategy newInstance(String name, String description, Date creationDate, Timestamp updateDate, Collection<Person> managersUsers, Program program) 761 { 762 final Strategy entity = new StrategyImpl(); 763 entity.setName(name); 764 entity.setDescription(description); 765 entity.setCreationDate(creationDate); 766 entity.setUpdateDate(updateDate); 767 entity.setManagersUsers(managersUsers); 768 entity.setProgram(program); 769 return entity; 770 } 771 772 /** 773 * Constructs a new instance of {@link Strategy}, taking all possible properties 774 * (except the identifier(s))as arguments. 775 * @param name String 776 * @param description String 777 * @param creationDate Date 778 * @param updateDate Timestamp 779 * @param referenceTaxonStrategies Collection<ReferenceTaxonStrategy> 780 * @param managersUsers Collection<Person> 781 * @param gears Collection<Gear> 782 * @param pmfmStrategies Collection<PmfmStrategy> 783 * @param program Program 784 * @param appliedStrategies Collection<AppliedStrategy> 785 * @return newInstance Strategy 786 */ 787 public static Strategy newInstance(String name, String description, Date creationDate, Timestamp updateDate, Collection<ReferenceTaxonStrategy> referenceTaxonStrategies, Collection<Person> managersUsers, Collection<Gear> gears, Collection<PmfmStrategy> pmfmStrategies, Program program, Collection<AppliedStrategy> appliedStrategies) 788 { 789 final Strategy entity = new StrategyImpl(); 790 entity.setName(name); 791 entity.setDescription(description); 792 entity.setCreationDate(creationDate); 793 entity.setUpdateDate(updateDate); 794 entity.setReferenceTaxonStrategies(referenceTaxonStrategies); 795 entity.setManagersUsers(managersUsers); 796 entity.setGears(gears); 797 entity.setPmfmStrategies(pmfmStrategies); 798 entity.setProgram(program); 799 entity.setAppliedStrategies(appliedStrategies); 800 return entity; 801 } 802 } 803 804 /** 805 * @see Comparable#compareTo 806 */ 807 public int compareTo(Strategy o) 808 { 809 int cmp = 0; 810 if (this.getId() != null) 811 { 812 cmp = this.getId().compareTo(o.getId()); 813 } 814 else 815 { 816 if (this.getName() != null) 817 { 818 cmp = (cmp != 0 ? cmp : this.getName().compareTo(o.getName())); 819 } 820 if (this.getDescription() != null) 821 { 822 cmp = (cmp != 0 ? cmp : this.getDescription().compareTo(o.getDescription())); 823 } 824 if (this.getCreationDate() != null) 825 { 826 cmp = (cmp != 0 ? cmp : this.getCreationDate().compareTo(o.getCreationDate())); 827 } 828 if (this.getUpdateDate() != null) 829 { 830 cmp = (cmp != 0 ? cmp : this.getUpdateDate().compareTo(o.getUpdateDate())); 831 } 832 } 833 return cmp; 834 } 835// HibernateEntity.vsl merge-point 836// Strategy.java merge-point 837}