1 // license-header java merge-point
2 //
3 // Attention: Generated code! Do not modify by hand!
4 // Generated by: hibernate/HibernateEntity.vsl in andromda-hibernate-cartridge.
5 //
6 package fr.ifremer.quadrige3.core.dao.data.sample;
7
8 /*-
9 * #%L
10 * Quadrige3 Core :: Client API
11 * %%
12 * Copyright (C) 2017 - 2024 Ifremer
13 * %%
14 * This program is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Affero General Public License as published by
16 * the Free Software Foundation, either version 3 of the License, or
17 * (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU Affero General Public License
25 * along with this program. If not, see <http://www.gnu.org/licenses/>.
26 * #L%
27 */
28 import fr.ifremer.quadrige3.core.dao.administration.program.Program;
29 import fr.ifremer.quadrige3.core.dao.administration.user.Department;
30 import fr.ifremer.quadrige3.core.dao.data.samplingoperation.SamplingOperation;
31 import fr.ifremer.quadrige3.core.dao.referential.QualityFlag;
32 import fr.ifremer.quadrige3.core.dao.referential.Unit;
33 import fr.ifremer.quadrige3.core.dao.referential.pmfm.Matrix;
34 import fr.ifremer.quadrige3.core.dao.referential.taxon.ReferenceTaxon;
35 import fr.ifremer.quadrige3.core.dao.referential.taxon.TaxonGroup;
36 import java.io.Serializable;
37 import java.sql.Timestamp;
38 import java.util.Collection;
39 import java.util.Date;
40 import java.util.HashSet;
41
42 /**
43 * Liste les échantillons prélevés lors d'un passage sur un lieu de surveillance.
44 */
45 // HibernateEntity.vsl annotations merge-point
46 public abstract class Sample
47 implements Serializable, Comparable<Sample>
48 {
49 /**
50 * The serial version UID of this class. Needed for serialization.
51 */
52 private static final long serialVersionUID = -3828429413281029208L;
53
54 // Generate 13 attributes
55 private Integer sampleId;
56
57 /**
58 * Identifiant interne de l'échantillon
59 * @return this.sampleId Integer
60 */
61 public Integer getSampleId()
62 {
63 return this.sampleId;
64 }
65
66 /**
67 * Identifiant interne de l'échantillon
68 * @param sampleIdIn Integer
69 */
70 public void setSampleId(Integer sampleIdIn)
71 {
72 this.sampleId = sampleIdIn;
73 }
74
75 private String sampleLb;
76
77 /**
78 * Mmnémonique de l'échantillon
79 * @return this.sampleLb String
80 */
81 public String getSampleLb()
82 {
83 return this.sampleLb;
84 }
85
86 /**
87 * Mmnémonique de l'échantillon
88 * @param sampleLbIn String
89 */
90 public void setSampleLb(String sampleLbIn)
91 {
92 this.sampleLb = sampleLbIn;
93 }
94
95 private Integer sampleNumberIndiv;
96
97 /**
98 * Nombre d'individus constituant l'échantillon. Ce nombre permet de connaître le nombre
99 * d'individus constituant la grille de saisie.
100 * @return this.sampleNumberIndiv Integer
101 */
102 public Integer getSampleNumberIndiv()
103 {
104 return this.sampleNumberIndiv;
105 }
106
107 /**
108 * Nombre d'individus constituant l'échantillon. Ce nombre permet de connaître le nombre
109 * d'individus constituant la grille de saisie.
110 * @param sampleNumberIndivIn Integer
111 */
112 public void setSampleNumberIndiv(Integer sampleNumberIndivIn)
113 {
114 this.sampleNumberIndiv = sampleNumberIndivIn;
115 }
116
117 private Float sampleSize;
118
119 /**
120 * La taille de l'échantillon peut représenter une surface ou un volume suivant les cas. Il peut
121 * aussi s'agir du nombre d'individus entrant dans l'homogénat.
122 * @return this.sampleSize Float
123 */
124 public Float getSampleSize()
125 {
126 return this.sampleSize;
127 }
128
129 /**
130 * La taille de l'échantillon peut représenter une surface ou un volume suivant les cas. Il peut
131 * aussi s'agir du nombre d'individus entrant dans l'homogénat.
132 * @param sampleSizeIn Float
133 */
134 public void setSampleSize(Float sampleSizeIn)
135 {
136 this.sampleSize = sampleSizeIn;
137 }
138
139 private String sampleCm;
140
141 /**
142 * Commentaire de l'échantillon
143 * @return this.sampleCm String
144 */
145 public String getSampleCm()
146 {
147 return this.sampleCm;
148 }
149
150 /**
151 * Commentaire de l'échantillon
152 * @param sampleCmIn String
153 */
154 public void setSampleCm(String sampleCmIn)
155 {
156 this.sampleCm = sampleCmIn;
157 }
158
159 private Date sampleControlDt;
160
161 /**
162 * Date de contrôle de l'échantillon
163 * @return this.sampleControlDt Date
164 */
165 public Date getSampleControlDt()
166 {
167 return this.sampleControlDt;
168 }
169
170 /**
171 * Date de contrôle de l'échantillon
172 * @param sampleControlDtIn Date
173 */
174 public void setSampleControlDt(Date sampleControlDtIn)
175 {
176 this.sampleControlDt = sampleControlDtIn;
177 }
178
179 private Date sampleValidDt;
180
181 /**
182 * Date de validation de l'échantillon
183 * @return this.sampleValidDt Date
184 */
185 public Date getSampleValidDt()
186 {
187 return this.sampleValidDt;
188 }
189
190 /**
191 * Date de validation de l'échantillon
192 * @param sampleValidDtIn Date
193 */
194 public void setSampleValidDt(Date sampleValidDtIn)
195 {
196 this.sampleValidDt = sampleValidDtIn;
197 }
198
199 private Date sampleQualifDt;
200
201 /**
202 * Date de qualification de l'échantillon
203 * @return this.sampleQualifDt Date
204 */
205 public Date getSampleQualifDt()
206 {
207 return this.sampleQualifDt;
208 }
209
210 /**
211 * Date de qualification de l'échantillon
212 * @param sampleQualifDtIn Date
213 */
214 public void setSampleQualifDt(Date sampleQualifDtIn)
215 {
216 this.sampleQualifDt = sampleQualifDtIn;
217 }
218
219 private String sampleQualifCm;
220
221 /**
222 * Commentaire de qualification
223 * @return this.sampleQualifCm String
224 */
225 public String getSampleQualifCm()
226 {
227 return this.sampleQualifCm;
228 }
229
230 /**
231 * Commentaire de qualification
232 * @param sampleQualifCmIn String
233 */
234 public void setSampleQualifCm(String sampleQualifCmIn)
235 {
236 this.sampleQualifCm = sampleQualifCmIn;
237 }
238
239 private String sampleScope;
240
241 /**
242 * Vrai si l'étape de qualification est globale, faux si des éléments fils ou résultats n'ont
243 * pas la même étape
244 * @return this.sampleScope String
245 */
246 public String getSampleScope()
247 {
248 return this.sampleScope;
249 }
250
251 /**
252 * Vrai si l'étape de qualification est globale, faux si des éléments fils ou résultats n'ont
253 * pas la même étape
254 * @param sampleScopeIn String
255 */
256 public void setSampleScope(String sampleScopeIn)
257 {
258 this.sampleScope = sampleScopeIn;
259 }
260
261 private String sampleHasMeas;
262
263 /**
264 * Vrai si l'élément a des résultats de mesure, dénombrement ou fichier
265 * @return this.sampleHasMeas String
266 */
267 public String getSampleHasMeas()
268 {
269 return this.sampleHasMeas;
270 }
271
272 /**
273 * Vrai si l'élément a des résultats de mesure, dénombrement ou fichier
274 * @param sampleHasMeasIn String
275 */
276 public void setSampleHasMeas(String sampleHasMeasIn)
277 {
278 this.sampleHasMeas = sampleHasMeasIn;
279 }
280
281 private Timestamp updateDt;
282
283 /**
284 * Date de modification de l'objet, mise à jour par le système
285 * @return this.updateDt Timestamp
286 */
287 public Timestamp getUpdateDt()
288 {
289 return this.updateDt;
290 }
291
292 /**
293 * Date de modification de l'objet, mise à jour par le système
294 * @param updateDtIn Timestamp
295 */
296 public void setUpdateDt(Timestamp updateDtIn)
297 {
298 this.updateDt = updateDtIn;
299 }
300
301 private Integer remoteId;
302
303 /**
304 *
305 * @return this.remoteId Integer
306 */
307 public Integer getRemoteId()
308 {
309 return this.remoteId;
310 }
311
312 /**
313 *
314 * @param remoteIdIn Integer
315 */
316 public void setRemoteId(Integer remoteIdIn)
317 {
318 this.remoteId = remoteIdIn;
319 }
320
321 // Generate 12 associations
322 private QualityFlag qualityFlag;
323
324 /**
325 * Liste des niveaux de qualification.
326 * @return this.qualityFlag QualityFlag
327 */
328 public QualityFlag getQualityFlag()
329 {
330 return this.qualityFlag;
331 }
332
333 /**
334 * Liste des niveaux de qualification.
335 * @param qualityFlagIn QualityFlag
336 */
337 public void setQualityFlag(QualityFlag qualityFlagIn)
338 {
339 this.qualityFlag = qualityFlagIn;
340 }
341
342 private TaxonGroup taxonGroup;
343
344 /**
345 * Liste l'ensemble de taxons ayant les mêmes caractéristiques pour le critère pris en compte.
346 * @return this.taxonGroup TaxonGroup
347 */
348 public TaxonGroup getTaxonGroup()
349 {
350 return this.taxonGroup;
351 }
352
353 /**
354 * Liste l'ensemble de taxons ayant les mêmes caractéristiques pour le critère pris en compte.
355 * @param taxonGroupIn TaxonGroup
356 */
357 public void setTaxonGroup(TaxonGroup taxonGroupIn)
358 {
359 this.taxonGroup = taxonGroupIn;
360 }
361
362 private Unit sizeUnit;
363
364 /**
365 * Liste l'ensemble des unités de mesure.
366 * @return this.sizeUnit Unit
367 */
368 public Unit getSizeUnit()
369 {
370 return this.sizeUnit;
371 }
372
373 /**
374 * Liste l'ensemble des unités de mesure.
375 * @param sizeUnitIn Unit
376 */
377 public void setSizeUnit(Unit sizeUnitIn)
378 {
379 this.sizeUnit = sizeUnitIn;
380 }
381
382 private Collection<Program> programs = new HashSet<Program>();
383
384 /**
385 * Activités à l'origine de la collecte d'un ensemble cohérent de données.
386 * @return this.programs Collection<Program>
387 */
388 public Collection<Program> getPrograms()
389 {
390 return this.programs;
391 }
392
393 /**
394 * Activités à l'origine de la collecte d'un ensemble cohérent de données.
395 * @param programsIn Collection<Program>
396 */
397 public void setPrograms(Collection<Program> programsIn)
398 {
399 this.programs = programsIn;
400 }
401
402 /**
403 * Activités à l'origine de la collecte d'un ensemble cohérent de données.
404 * @param elementToAdd Program
405 * @return <tt>true</tt> if this collection changed as a result of the
406 * call
407 */
408 public boolean addPrograms(Program elementToAdd)
409 {
410 return this.programs.add(elementToAdd);
411 }
412
413 /**
414 * Activités à l'origine de la collecte d'un ensemble cohérent de données.
415 * @param elementToRemove Program
416 * @return <tt>true</tt> if this collection changed as a result of the
417 * call
418 */
419 public boolean removePrograms(Program elementToRemove)
420 {
421 return this.programs.remove(elementToRemove);
422 }
423
424 private Department recorderDepartment;
425
426 /**
427 * Liste les départements ou services auxquels sont rattachés les agents
428 * @return this.recorderDepartment Department
429 */
430 public Department getRecorderDepartment()
431 {
432 return this.recorderDepartment;
433 }
434
435 /**
436 * Liste les départements ou services auxquels sont rattachés les agents
437 * @param recorderDepartmentIn Department
438 */
439 public void setRecorderDepartment(Department recorderDepartmentIn)
440 {
441 this.recorderDepartment = recorderDepartmentIn;
442 }
443
444 private SamplingOperation samplingOperation;
445
446 /**
447 * Liste les prélévements effectués lors d'un passage.
448 * @return this.samplingOperation SamplingOperation
449 */
450 public SamplingOperation getSamplingOperation()
451 {
452 return this.samplingOperation;
453 }
454
455 /**
456 * Liste les prélévements effectués lors d'un passage.
457 * @param samplingOperationIn SamplingOperation
458 */
459 public void setSamplingOperation(SamplingOperation samplingOperationIn)
460 {
461 this.samplingOperation = samplingOperationIn;
462 }
463
464 private Matrix matrix;
465
466 /**
467 * Support utilisé pour mesurer un paramètre.
468 * @return this.matrix Matrix
469 */
470 public Matrix getMatrix()
471 {
472 return this.matrix;
473 }
474
475 /**
476 * Support utilisé pour mesurer un paramètre.
477 * @param matrixIn Matrix
478 */
479 public void setMatrix(Matrix matrixIn)
480 {
481 this.matrix = matrixIn;
482 }
483
484 private ReferenceTaxon referenceTaxon;
485
486 /**
487 * Liste des taxons qui sont la référence.
488 * l'ID référent est indépendant des ID taxon car les taxons peuvent être référents à un moment
489 * et ne
490 * plus l'être par la suite.
491 * Toutes les données du système doivent donc être reliées au référent et non au taxon qui sont
492 * référents à un moment mais ne peuvent plus l'être par la suite.
493 * Le fonctionnement dans la table TAXON_NAME est le suivant :
494 * - REF_TAXON_ID est toujours renseigné
495 * - si TAXON_NAME_IS_REFER est à vrai, il s'agit d'un taxon référent (toujours le cas s'il
496 * s'agit d'un
497 * taxon virtuel)
498 * - sinon c'est un synonyme
499 * Un taxon référent qui devient synonyme voit donc son statut TAXON_NAME_IS_REFER changer et le
500 * nouveau taxon référent qui le remplace récupère l'information REF_TAXON_ID
501 * NB : c'était le comportement initialement prévu.
502 * En réalité, lorsqu'un taxon référent T1-R1 devient synonyme d'un nouveau taxon référent T2,
503 * le taxon
504 * T2 prend un nouveau code référent R2 et donc le taxon T1 est lié à R2 (et tous les synonymes
505 * et les
506 * résultats qu'il pouvait avoir).
507 * Ce mécanisme a été adopté car il fallait distinguer 2 cas :
508 * 1- cas d'un taxon référent T1-R1 qui devient synonyme d'un référent qu'on crée T2 : on aurait
509 * alors
510 * pu utiliser le même REF_TAXON_ID R1 au lieu d'en créer un et ne pas mettre à jour les autres
511 * synonymes, résultats...
512 * 2- cas d'un taxon référent T1-R1 qui devient synonyme d'un référent qui existe déjà T2-R2 (et
513 * qui
514 * aurait déjà d'autres synonymes, résultats...), dans ce cas le remplacement de la référence R1
515 * pour
516 * R2 est nécessaire
517 * La modélisation pourrait être revue car la table REFENCE_TAXON ne se justifie alors plus, on
518 * pourrait directement utiliser une référence à la colonne TAXON_NAME_ID pour désigner les
519 * référents
520 * @return this.referenceTaxon ReferenceTaxon
521 */
522 public ReferenceTaxon getReferenceTaxon()
523 {
524 return this.referenceTaxon;
525 }
526
527 /**
528 * Liste des taxons qui sont la référence.
529 * l'ID référent est indépendant des ID taxon car les taxons peuvent être référents à un moment
530 * et ne
531 * plus l'être par la suite.
532 * Toutes les données du système doivent donc être reliées au référent et non au taxon qui sont
533 * référents à un moment mais ne peuvent plus l'être par la suite.
534 * Le fonctionnement dans la table TAXON_NAME est le suivant :
535 * - REF_TAXON_ID est toujours renseigné
536 * - si TAXON_NAME_IS_REFER est à vrai, il s'agit d'un taxon référent (toujours le cas s'il
537 * s'agit d'un
538 * taxon virtuel)
539 * - sinon c'est un synonyme
540 * Un taxon référent qui devient synonyme voit donc son statut TAXON_NAME_IS_REFER changer et le
541 * nouveau taxon référent qui le remplace récupère l'information REF_TAXON_ID
542 * NB : c'était le comportement initialement prévu.
543 * En réalité, lorsqu'un taxon référent T1-R1 devient synonyme d'un nouveau taxon référent T2,
544 * le taxon
545 * T2 prend un nouveau code référent R2 et donc le taxon T1 est lié à R2 (et tous les synonymes
546 * et les
547 * résultats qu'il pouvait avoir).
548 * Ce mécanisme a été adopté car il fallait distinguer 2 cas :
549 * 1- cas d'un taxon référent T1-R1 qui devient synonyme d'un référent qu'on crée T2 : on aurait
550 * alors
551 * pu utiliser le même REF_TAXON_ID R1 au lieu d'en créer un et ne pas mettre à jour les autres
552 * synonymes, résultats...
553 * 2- cas d'un taxon référent T1-R1 qui devient synonyme d'un référent qui existe déjà T2-R2 (et
554 * qui
555 * aurait déjà d'autres synonymes, résultats...), dans ce cas le remplacement de la référence R1
556 * pour
557 * R2 est nécessaire
558 * La modélisation pourrait être revue car la table REFENCE_TAXON ne se justifie alors plus, on
559 * pourrait directement utiliser une référence à la colonne TAXON_NAME_ID pour désigner les
560 * référents
561 * @param referenceTaxonIn ReferenceTaxon
562 */
563 public void setReferenceTaxon(ReferenceTaxon referenceTaxonIn)
564 {
565 this.referenceTaxon = referenceTaxonIn;
566 }
567
568 /**
569 * Returns <code>true</code> if the argument is an Sample instance and all identifiers for this entity
570 * equal the identifiers of the argument entity. Returns <code>false</code> otherwise.
571 */
572 @Override
573 public boolean equals(Object object)
574 {
575 if (this == object)
576 {
577 return true;
578 }
579 if (!(object instanceof Sample))
580 {
581 return false;
582 }
583 final Sample that = (Sample)object;
584 if (this.sampleId == null || that.getSampleId() == null || !this.sampleId.equals(that.getSampleId()))
585 {
586 return false;
587 }
588 return true;
589 }
590
591 /**
592 * Returns a hash code based on this entity's identifiers.
593 */
594 @Override
595 public int hashCode()
596 {
597 int hashCode = 0;
598 hashCode = 29 * hashCode + (this.sampleId == null ? 0 : this.sampleId.hashCode());
599
600 return hashCode;
601 }
602
603 /**
604 * Constructs new instances of {@link Sample}.
605 */
606 public static final class Factory
607 {
608 /**
609 * Constructs a new instance of {@link Sample}.
610 * @return new SampleImpl()
611 */
612 public static Sample newInstance()
613 {
614 return new SampleImpl();
615 }
616
617 /**
618 * Constructs a new instance of {@link Sample}, taking all required and/or
619 * read-only properties as arguments, except for identifiers.
620 * @param qualityFlag QualityFlag
621 * @param recorderDepartment Department
622 * @param samplingOperation SamplingOperation
623 * @param matrix Matrix
624 * @return newInstance
625 */
626 public static Sample newInstance(QualityFlag qualityFlag, Department recorderDepartment, SamplingOperation samplingOperation, Matrix matrix)
627 {
628 final Sample entity = new SampleImpl();
629 entity.setQualityFlag(qualityFlag);
630 entity.setRecorderDepartment(recorderDepartment);
631 entity.setSamplingOperation(samplingOperation);
632 entity.setMatrix(matrix);
633 return entity;
634 }
635
636 /**
637 * Constructs a new instance of {@link Sample}, taking all possible properties
638 * (except the identifier(s))as arguments.
639 * @param sampleLb String
640 * @param sampleNumberIndiv Integer
641 * @param sampleSize Float
642 * @param sampleCm String
643 * @param sampleControlDt Date
644 * @param sampleValidDt Date
645 * @param sampleQualifDt Date
646 * @param sampleQualifCm String
647 * @param sampleScope String
648 * @param sampleHasMeas String
649 * @param updateDt Timestamp
650 * @param remoteId Integer
651 * @param qualityFlag QualityFlag
652 * @param taxonGroup TaxonGroup
653 * @param sizeUnit Unit
654 * @param programs Collection<Program>
655 * @param recorderDepartment Department
656 * @param samplingOperation SamplingOperation
657 * @param matrix Matrix
658 * @param referenceTaxon ReferenceTaxon
659 * @return newInstance Sample
660 */
661 public static Sample newInstance(String sampleLb, Integer sampleNumberIndiv, Float sampleSize, String sampleCm, Date sampleControlDt, Date sampleValidDt, Date sampleQualifDt, String sampleQualifCm, String sampleScope, String sampleHasMeas, Timestamp updateDt, Integer remoteId, QualityFlag qualityFlag, TaxonGroup taxonGroup, Unit sizeUnit, Collection<Program> programs, Department recorderDepartment, SamplingOperation samplingOperation, Matrix matrix, ReferenceTaxon referenceTaxon)
662 {
663 final Sample entity = new SampleImpl();
664 entity.setSampleLb(sampleLb);
665 entity.setSampleNumberIndiv(sampleNumberIndiv);
666 entity.setSampleSize(sampleSize);
667 entity.setSampleCm(sampleCm);
668 entity.setSampleControlDt(sampleControlDt);
669 entity.setSampleValidDt(sampleValidDt);
670 entity.setSampleQualifDt(sampleQualifDt);
671 entity.setSampleQualifCm(sampleQualifCm);
672 entity.setSampleScope(sampleScope);
673 entity.setSampleHasMeas(sampleHasMeas);
674 entity.setUpdateDt(updateDt);
675 entity.setRemoteId(remoteId);
676 entity.setQualityFlag(qualityFlag);
677 entity.setTaxonGroup(taxonGroup);
678 entity.setSizeUnit(sizeUnit);
679 entity.setPrograms(programs);
680 entity.setRecorderDepartment(recorderDepartment);
681 entity.setSamplingOperation(samplingOperation);
682 entity.setMatrix(matrix);
683 entity.setReferenceTaxon(referenceTaxon);
684 return entity;
685 }
686 }
687
688 /**
689 * @see Comparable#compareTo
690 */
691 public int compareTo(Sample o)
692 {
693 int cmp = 0;
694 if (this.getSampleId() != null)
695 {
696 cmp = this.getSampleId().compareTo(o.getSampleId());
697 }
698 else
699 {
700 if (this.getSampleLb() != null)
701 {
702 cmp = (cmp != 0 ? cmp : this.getSampleLb().compareTo(o.getSampleLb()));
703 }
704 if (this.getSampleNumberIndiv() != null)
705 {
706 cmp = (cmp != 0 ? cmp : this.getSampleNumberIndiv().compareTo(o.getSampleNumberIndiv()));
707 }
708 if (this.getSampleSize() != null)
709 {
710 cmp = (cmp != 0 ? cmp : this.getSampleSize().compareTo(o.getSampleSize()));
711 }
712 if (this.getSampleCm() != null)
713 {
714 cmp = (cmp != 0 ? cmp : this.getSampleCm().compareTo(o.getSampleCm()));
715 }
716 if (this.getSampleControlDt() != null)
717 {
718 cmp = (cmp != 0 ? cmp : this.getSampleControlDt().compareTo(o.getSampleControlDt()));
719 }
720 if (this.getSampleValidDt() != null)
721 {
722 cmp = (cmp != 0 ? cmp : this.getSampleValidDt().compareTo(o.getSampleValidDt()));
723 }
724 if (this.getSampleQualifDt() != null)
725 {
726 cmp = (cmp != 0 ? cmp : this.getSampleQualifDt().compareTo(o.getSampleQualifDt()));
727 }
728 if (this.getSampleQualifCm() != null)
729 {
730 cmp = (cmp != 0 ? cmp : this.getSampleQualifCm().compareTo(o.getSampleQualifCm()));
731 }
732 if (this.getSampleScope() != null)
733 {
734 cmp = (cmp != 0 ? cmp : this.getSampleScope().compareTo(o.getSampleScope()));
735 }
736 if (this.getSampleHasMeas() != null)
737 {
738 cmp = (cmp != 0 ? cmp : this.getSampleHasMeas().compareTo(o.getSampleHasMeas()));
739 }
740 if (this.getUpdateDt() != null)
741 {
742 cmp = (cmp != 0 ? cmp : this.getUpdateDt().compareTo(o.getUpdateDt()));
743 }
744 if (this.getRemoteId() != null)
745 {
746 cmp = (cmp != 0 ? cmp : this.getRemoteId().compareTo(o.getRemoteId()));
747 }
748 }
749 return cmp;
750 }
751 // HibernateEntity.vsl merge-point
752 // Sample.java merge-point
753 }