View Javadoc
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.aquaculture;
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.administration.user.Quser;
31  import fr.ifremer.quadrige3.core.dao.referential.QualityFlag;
32  import fr.ifremer.quadrige3.core.dao.referential.taxon.ReferenceTaxon;
33  import java.io.Serializable;
34  import java.sql.Timestamp;
35  import java.util.Collection;
36  import java.util.Date;
37  import java.util.HashSet;
38  
39  /**
40   * Pour les données aquacoles de nombreuses études consiste à voir les évolutions de plusieurs
41   * paramètres sur une même population de mollusques répartis en lots sur le littoral français. Cela
42   * permet de comparer les évolutions liées seulement au site. On part d'un ensemble de mollusques,
43   * que l'on appelle population initiale, au niveau national et l'on repartit cet ensemble en lots
44   * sur différents lieux de mesures.
45   */
46  // HibernateEntity.vsl annotations merge-point
47  public abstract class InitialPopulation
48      implements Serializable, Comparable<InitialPopulation>
49  {
50      /**
51       * The serial version UID of this class. Needed for serialization.
52       */
53      private static final long serialVersionUID = 8071304185305736785L;
54  
55      // Generate 12 attributes
56      private Integer initPopId;
57  
58      /**
59       * Identifiant de la population initiale
60       * @return this.initPopId Integer
61       */
62      public Integer getInitPopId()
63      {
64          return this.initPopId;
65      }
66  
67      /**
68       * Identifiant de la population initiale
69       * @param initPopIdIn Integer
70       */
71      public void setInitPopId(Integer initPopIdIn)
72      {
73          this.initPopId = initPopIdIn;
74      }
75  
76      private String initPopNm;
77  
78      /**
79       * Libellé de la population initiale
80       * @return this.initPopNm String
81       */
82      public String getInitPopNm()
83      {
84          return this.initPopNm;
85      }
86  
87      /**
88       * Libellé de la population initiale
89       * @param initPopNmIn String
90       */
91      public void setInitPopNm(String initPopNmIn)
92      {
93          this.initPopNm = initPopNmIn;
94      }
95  
96      private String initPopLb;
97  
98      /**
99       * Mnémonique de la population initiale
100      * @return this.initPopLb String
101      */
102     public String getInitPopLb()
103     {
104         return this.initPopLb;
105     }
106 
107     /**
108      * Mnémonique de la population initiale
109      * @param initPopLbIn String
110      */
111     public void setInitPopLb(String initPopLbIn)
112     {
113         this.initPopLb = initPopLbIn;
114     }
115 
116     private String initPopCm;
117 
118     /**
119      * Commentaire sur la population initiale
120      * @return this.initPopCm String
121      */
122     public String getInitPopCm()
123     {
124         return this.initPopCm;
125     }
126 
127     /**
128      * Commentaire sur la population initiale
129      * @param initPopCmIn String
130      */
131     public void setInitPopCm(String initPopCmIn)
132     {
133         this.initPopCm = initPopCmIn;
134     }
135 
136     private Date initPopQualifDt;
137 
138     /**
139      * Date de qualification de la population initiale
140      * @return this.initPopQualifDt Date
141      */
142     public Date getInitPopQualifDt()
143     {
144         return this.initPopQualifDt;
145     }
146 
147     /**
148      * Date de qualification de la population initiale
149      * @param initPopQualifDtIn Date
150      */
151     public void setInitPopQualifDt(Date initPopQualifDtIn)
152     {
153         this.initPopQualifDt = initPopQualifDtIn;
154     }
155 
156     private String initPopQualifCm;
157 
158     /**
159      * Commentaire de qualification de la population initiale
160      * @return this.initPopQualifCm String
161      */
162     public String getInitPopQualifCm()
163     {
164         return this.initPopQualifCm;
165     }
166 
167     /**
168      * Commentaire de qualification de la population initiale
169      * @param initPopQualifCmIn String
170      */
171     public void setInitPopQualifCm(String initPopQualifCmIn)
172     {
173         this.initPopQualifCm = initPopQualifCmIn;
174     }
175 
176     private Date initPopValidDt;
177 
178     /**
179      * Date de validation de la population initiale
180      * @return this.initPopValidDt Date
181      */
182     public Date getInitPopValidDt()
183     {
184         return this.initPopValidDt;
185     }
186 
187     /**
188      * Date de validation de la population initiale
189      * @param initPopValidDtIn Date
190      */
191     public void setInitPopValidDt(Date initPopValidDtIn)
192     {
193         this.initPopValidDt = initPopValidDtIn;
194     }
195 
196     private Date initPopControlDt;
197 
198     /**
199      * Date de controle de la population initiale
200      * @return this.initPopControlDt Date
201      */
202     public Date getInitPopControlDt()
203     {
204         return this.initPopControlDt;
205     }
206 
207     /**
208      * Date de controle de la population initiale
209      * @param initPopControlDtIn Date
210      */
211     public void setInitPopControlDt(Date initPopControlDtIn)
212     {
213         this.initPopControlDt = initPopControlDtIn;
214     }
215 
216     private Date initPopStartDt;
217 
218     /**
219      * Date de mise à disposition de la population initiale
220      * @return this.initPopStartDt Date
221      */
222     public Date getInitPopStartDt()
223     {
224         return this.initPopStartDt;
225     }
226 
227     /**
228      * Date de mise à disposition de la population initiale
229      * @param initPopStartDtIn Date
230      */
231     public void setInitPopStartDt(Date initPopStartDtIn)
232     {
233         this.initPopStartDt = initPopStartDtIn;
234     }
235 
236     private Integer initPopBiometricIndivNb;
237 
238     /**
239      * Nombre d'individus pour les mesures de biométrie
240      * @return this.initPopBiometricIndivNb Integer
241      */
242     public Integer getInitPopBiometricIndivNb()
243     {
244         return this.initPopBiometricIndivNb;
245     }
246 
247     /**
248      * Nombre d'individus pour les mesures de biométrie
249      * @param initPopBiometricIndivNbIn Integer
250      */
251     public void setInitPopBiometricIndivNb(Integer initPopBiometricIndivNbIn)
252     {
253         this.initPopBiometricIndivNb = initPopBiometricIndivNbIn;
254     }
255 
256     private Timestamp updateDt;
257 
258     /**
259      * Date de maj
260      * @return this.updateDt Timestamp
261      */
262     public Timestamp getUpdateDt()
263     {
264         return this.updateDt;
265     }
266 
267     /**
268      * Date de maj
269      * @param updateDtIn Timestamp
270      */
271     public void setUpdateDt(Timestamp updateDtIn)
272     {
273         this.updateDt = updateDtIn;
274     }
275 
276     private Integer remoteId;
277 
278     /**
279      * 
280      * @return this.remoteId Integer
281      */
282     public Integer getRemoteId()
283     {
284         return this.remoteId;
285     }
286 
287     /**
288      * 
289      * @param remoteIdIn Integer
290      */
291     public void setRemoteId(Integer remoteIdIn)
292     {
293         this.remoteId = remoteIdIn;
294     }
295 
296     // Generate 10 associations
297     private Ploidy ploidy;
298 
299     /**
300      * La ploïdie d'une cellule caractérise le nombre et l'organisation de ses chromosomes
301      * @return this.ploidy Ploidy
302      */
303     public Ploidy getPloidy()
304     {
305         return this.ploidy;
306     }
307 
308     /**
309      * La ploïdie d'une cellule caractérise le nombre et l'organisation de ses chromosomes
310      * @param ploidyIn Ploidy
311      */
312     public void setPloidy(Ploidy ploidyIn)
313     {
314         this.ploidy = ploidyIn;
315     }
316 
317     private Collection<Department> departments = new HashSet<Department>();
318 
319     /**
320      * Liste les départements ou services auxquels sont rattachés les agents
321      * @return this.departments Collection<Department>
322      */
323     public Collection<Department> getDepartments()
324     {
325         return this.departments;
326     }
327 
328     /**
329      * Liste les départements ou services auxquels sont rattachés les agents
330      * @param departmentsIn Collection<Department>
331      */
332     public void setDepartments(Collection<Department> departmentsIn)
333     {
334         this.departments = departmentsIn;
335     }
336 
337     /**
338      * Liste les départements ou services auxquels sont rattachés les agents
339      * @param elementToAdd Department
340      * @return <tt>true</tt> if this collection changed as a result of the
341      *         call
342      */
343     public boolean addDepartments(Department elementToAdd)
344     {
345         return this.departments.add(elementToAdd);
346     }
347 
348     /**
349      * Liste les départements ou services auxquels sont rattachés les agents
350      * @param elementToRemove Department
351      * @return <tt>true</tt> if this collection changed as a result of the
352      *         call
353      */
354     public boolean removeDepartments(Department elementToRemove)
355     {
356         return this.departments.remove(elementToRemove);
357     }
358 
359     private Collection<HistoricalAccount> historicalAccounts = new HashSet<HistoricalAccount>();
360 
361     /**
362      * Ligne d'historique
363      * Une population de mollusques a subit différents transferts avant d'être utilisée pour une
364      * étude. Ce
365      * sont ces transferts entre secteurs conchylicoles, par exemple, que l'on veut tracer. Une
366      * ligne
367      * d'historique c'est : * un lieu de surveillance ou * un secteur conchylicole  * une date de
368      * début de
369      * phase * une date de fin de phase * des caractéristiques d'élevage (système + structure) * un
370      * type de
371      * phase d'élevag
372      * @return this.historicalAccounts Collection<HistoricalAccount>
373      */
374     public Collection<HistoricalAccount> getHistoricalAccounts()
375     {
376         return this.historicalAccounts;
377     }
378 
379     /**
380      * Ligne d'historique
381      * Une population de mollusques a subit différents transferts avant d'être utilisée pour une
382      * étude. Ce
383      * sont ces transferts entre secteurs conchylicoles, par exemple, que l'on veut tracer. Une
384      * ligne
385      * d'historique c'est : * un lieu de surveillance ou * un secteur conchylicole  * une date de
386      * début de
387      * phase * une date de fin de phase * des caractéristiques d'élevage (système + structure) * un
388      * type de
389      * phase d'élevag
390      * @param historicalAccountsIn Collection<HistoricalAccount>
391      */
392     public void setHistoricalAccounts(Collection<HistoricalAccount> historicalAccountsIn)
393     {
394         this.historicalAccounts = historicalAccountsIn;
395     }
396 
397     /**
398      * Ligne d'historique
399      * Une population de mollusques a subit différents transferts avant d'être utilisée pour une
400      * étude. Ce
401      * sont ces transferts entre secteurs conchylicoles, par exemple, que l'on veut tracer. Une
402      * ligne
403      * d'historique c'est : * un lieu de surveillance ou * un secteur conchylicole  * une date de
404      * début de
405      * phase * une date de fin de phase * des caractéristiques d'élevage (système + structure) * un
406      * type de
407      * phase d'élevag
408      * @param elementToAdd HistoricalAccount
409      * @return <tt>true</tt> if this collection changed as a result of the
410      *         call
411      */
412     public boolean addHistoricalAccounts(HistoricalAccount elementToAdd)
413     {
414         return this.historicalAccounts.add(elementToAdd);
415     }
416 
417     /**
418      * Ligne d'historique
419      * Une population de mollusques a subit différents transferts avant d'être utilisée pour une
420      * étude. Ce
421      * sont ces transferts entre secteurs conchylicoles, par exemple, que l'on veut tracer. Une
422      * ligne
423      * d'historique c'est : * un lieu de surveillance ou * un secteur conchylicole  * une date de
424      * début de
425      * phase * une date de fin de phase * des caractéristiques d'élevage (système + structure) * un
426      * type de
427      * phase d'élevag
428      * @param elementToRemove HistoricalAccount
429      * @return <tt>true</tt> if this collection changed as a result of the
430      *         call
431      */
432     public boolean removeHistoricalAccounts(HistoricalAccount elementToRemove)
433     {
434         return this.historicalAccounts.remove(elementToRemove);
435     }
436 
437     private Collection<Program> programs = new HashSet<Program>();
438 
439     /**
440      * Activités à l'origine de la collecte d'un ensemble cohérent de données.
441      * @return this.programs Collection<Program>
442      */
443     public Collection<Program> getPrograms()
444     {
445         return this.programs;
446     }
447 
448     /**
449      * Activités à l'origine de la collecte d'un ensemble cohérent de données.
450      * @param programsIn Collection<Program>
451      */
452     public void setPrograms(Collection<Program> programsIn)
453     {
454         this.programs = programsIn;
455     }
456 
457     /**
458      * Activités à l'origine de la collecte d'un ensemble cohérent de données.
459      * @param elementToAdd Program
460      * @return <tt>true</tt> if this collection changed as a result of the
461      *         call
462      */
463     public boolean addPrograms(Program elementToAdd)
464     {
465         return this.programs.add(elementToAdd);
466     }
467 
468     /**
469      * Activités à l'origine de la collecte d'un ensemble cohérent de données.
470      * @param elementToRemove Program
471      * @return <tt>true</tt> if this collection changed as a result of the
472      *         call
473      */
474     public boolean removePrograms(Program elementToRemove)
475     {
476         return this.programs.remove(elementToRemove);
477     }
478 
479     private QualityFlag qualityFlag;
480 
481     /**
482      * Liste des niveaux de qualification.
483      * @return this.qualityFlag QualityFlag
484      */
485     public QualityFlag getQualityFlag()
486     {
487         return this.qualityFlag;
488     }
489 
490     /**
491      * Liste des niveaux de qualification.
492      * @param qualityFlagIn QualityFlag
493      */
494     public void setQualityFlag(QualityFlag qualityFlagIn)
495     {
496         this.qualityFlag = qualityFlagIn;
497     }
498 
499     private ReferenceTaxon referenceTaxon;
500 
501     /**
502      * Liste des taxons qui sont la référence.
503      * l'ID référent est indépendant des ID taxon car les taxons peuvent être référents à un moment
504      * et ne
505      * plus l'être par la suite.
506      * Toutes les données du système doivent donc être reliées au référent et non au taxon qui sont
507      * référents à un moment mais ne peuvent plus l'être par la suite.
508      * Le fonctionnement dans la table TAXON_NAME est le suivant :
509      * - REF_TAXON_ID est toujours renseigné
510      * - si TAXON_NAME_IS_REFER est à vrai, il s'agit d'un taxon référent (toujours le cas s'il
511      * s'agit d'un
512      * taxon virtuel)
513      * - sinon c'est un synonyme
514      * Un taxon référent qui devient synonyme voit donc son statut TAXON_NAME_IS_REFER changer et le
515      * nouveau taxon référent qui le remplace récupère l'information REF_TAXON_ID
516      * NB : c'était le comportement initialement prévu.
517      * En réalité, lorsqu'un taxon référent T1-R1 devient synonyme d'un nouveau taxon référent T2,
518      * le taxon
519      * T2 prend un nouveau code référent R2 et donc le taxon T1 est lié à R2 (et tous les synonymes
520      * et les
521      * résultats qu'il pouvait avoir).
522      * Ce mécanisme a été adopté car il fallait distinguer 2 cas :
523      * 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
524      * alors
525      * pu utiliser le même REF_TAXON_ID R1 au lieu d'en créer un et ne pas mettre à jour les autres
526      * synonymes, résultats...
527      * 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
528      * qui
529      * aurait déjà d'autres synonymes, résultats...), dans ce cas le remplacement de la référence R1
530      * pour
531      * R2 est nécessaire
532      * La modélisation pourrait être revue car la table REFENCE_TAXON ne se justifie alors plus, on
533      * pourrait directement utiliser une référence à la colonne TAXON_NAME_ID pour désigner les
534      * référents
535      * @return this.referenceTaxon ReferenceTaxon
536      */
537     public ReferenceTaxon getReferenceTaxon()
538     {
539         return this.referenceTaxon;
540     }
541 
542     /**
543      * Liste des taxons qui sont la référence.
544      * l'ID référent est indépendant des ID taxon car les taxons peuvent être référents à un moment
545      * et ne
546      * plus l'être par la suite.
547      * Toutes les données du système doivent donc être reliées au référent et non au taxon qui sont
548      * référents à un moment mais ne peuvent plus l'être par la suite.
549      * Le fonctionnement dans la table TAXON_NAME est le suivant :
550      * - REF_TAXON_ID est toujours renseigné
551      * - si TAXON_NAME_IS_REFER est à vrai, il s'agit d'un taxon référent (toujours le cas s'il
552      * s'agit d'un
553      * taxon virtuel)
554      * - sinon c'est un synonyme
555      * Un taxon référent qui devient synonyme voit donc son statut TAXON_NAME_IS_REFER changer et le
556      * nouveau taxon référent qui le remplace récupère l'information REF_TAXON_ID
557      * NB : c'était le comportement initialement prévu.
558      * En réalité, lorsqu'un taxon référent T1-R1 devient synonyme d'un nouveau taxon référent T2,
559      * le taxon
560      * T2 prend un nouveau code référent R2 et donc le taxon T1 est lié à R2 (et tous les synonymes
561      * et les
562      * résultats qu'il pouvait avoir).
563      * Ce mécanisme a été adopté car il fallait distinguer 2 cas :
564      * 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
565      * alors
566      * pu utiliser le même REF_TAXON_ID R1 au lieu d'en créer un et ne pas mettre à jour les autres
567      * synonymes, résultats...
568      * 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
569      * qui
570      * aurait déjà d'autres synonymes, résultats...), dans ce cas le remplacement de la référence R1
571      * pour
572      * R2 est nécessaire
573      * La modélisation pourrait être revue car la table REFENCE_TAXON ne se justifie alors plus, on
574      * pourrait directement utiliser une référence à la colonne TAXON_NAME_ID pour désigner les
575      * référents
576      * @param referenceTaxonIn ReferenceTaxon
577      */
578     public void setReferenceTaxon(ReferenceTaxon referenceTaxonIn)
579     {
580         this.referenceTaxon = referenceTaxonIn;
581     }
582 
583     private Collection<Batch> batches = new HashSet<Batch>();
584 
585     /**
586      * Un lot est un groupe d'animaux issu d'une même population initiale et suivi sur un même point
587      * dans
588      * des conditions d'élevage similaires  (conditions expérimentales).  Un lot est défini par : *
589      * une
590      * population initiale * un lieu de surveillance * des caractéristiques d'élevage (système +
591      * structure)
592      * * un niveau Ce lot de mollusques est positionné sur le terrain.
593      * @return this.batches Collection<Batch>
594      */
595     public Collection<Batch> getBatches()
596     {
597         return this.batches;
598     }
599 
600     /**
601      * Un lot est un groupe d'animaux issu d'une même population initiale et suivi sur un même point
602      * dans
603      * des conditions d'élevage similaires  (conditions expérimentales).  Un lot est défini par : *
604      * une
605      * population initiale * un lieu de surveillance * des caractéristiques d'élevage (système +
606      * structure)
607      * * un niveau Ce lot de mollusques est positionné sur le terrain.
608      * @param batchesIn Collection<Batch>
609      */
610     public void setBatches(Collection<Batch> batchesIn)
611     {
612         this.batches = batchesIn;
613     }
614 
615     /**
616      * Un lot est un groupe d'animaux issu d'une même population initiale et suivi sur un même point
617      * dans
618      * des conditions d'élevage similaires  (conditions expérimentales).  Un lot est défini par : *
619      * une
620      * population initiale * un lieu de surveillance * des caractéristiques d'élevage (système +
621      * structure)
622      * * un niveau Ce lot de mollusques est positionné sur le terrain.
623      * @param elementToAdd Batch
624      * @return <tt>true</tt> if this collection changed as a result of the
625      *         call
626      */
627     public boolean addBatches(Batch elementToAdd)
628     {
629         return this.batches.add(elementToAdd);
630     }
631 
632     /**
633      * Un lot est un groupe d'animaux issu d'une même population initiale et suivi sur un même point
634      * dans
635      * des conditions d'élevage similaires  (conditions expérimentales).  Un lot est défini par : *
636      * une
637      * population initiale * un lieu de surveillance * des caractéristiques d'élevage (système +
638      * structure)
639      * * un niveau Ce lot de mollusques est positionné sur le terrain.
640      * @param elementToRemove Batch
641      * @return <tt>true</tt> if this collection changed as a result of the
642      *         call
643      */
644     public boolean removeBatches(Batch elementToRemove)
645     {
646         return this.batches.remove(elementToRemove);
647     }
648 
649     private AgeGroup ageGroup;
650 
651     /**
652      * Classe d'âge d'une population initiale
653      * @return this.ageGroup AgeGroup
654      */
655     public AgeGroup getAgeGroup()
656     {
657         return this.ageGroup;
658     }
659 
660     /**
661      * Classe d'âge d'une population initiale
662      * @param ageGroupIn AgeGroup
663      */
664     public void setAgeGroup(AgeGroup ageGroupIn)
665     {
666         this.ageGroup = ageGroupIn;
667     }
668 
669     private Collection<Quser> qusers = new HashSet<Quser>();
670 
671     /**
672      * Liste l'ensemble des agents et utilisateurs du système.
673      * @return this.qusers Collection<Quser>
674      */
675     public Collection<Quser> getQusers()
676     {
677         return this.qusers;
678     }
679 
680     /**
681      * Liste l'ensemble des agents et utilisateurs du système.
682      * @param qusersIn Collection<Quser>
683      */
684     public void setQusers(Collection<Quser> qusersIn)
685     {
686         this.qusers = qusersIn;
687     }
688 
689     /**
690      * Liste l'ensemble des agents et utilisateurs du système.
691      * @param elementToAdd Quser
692      * @return <tt>true</tt> if this collection changed as a result of the
693      *         call
694      */
695     public boolean addQusers(Quser elementToAdd)
696     {
697         return this.qusers.add(elementToAdd);
698     }
699 
700     /**
701      * Liste l'ensemble des agents et utilisateurs du système.
702      * @param elementToRemove Quser
703      * @return <tt>true</tt> if this collection changed as a result of the
704      *         call
705      */
706     public boolean removeQusers(Quser elementToRemove)
707     {
708         return this.qusers.remove(elementToRemove);
709     }
710 
711     /**
712      * Returns <code>true</code> if the argument is an InitialPopulation instance and all identifiers for this entity
713      * equal the identifiers of the argument entity. Returns <code>false</code> otherwise.
714      */
715     @Override
716     public boolean equals(Object object)
717     {
718         if (this == object)
719         {
720             return true;
721         }
722         if (!(object instanceof InitialPopulation))
723         {
724             return false;
725         }
726         final InitialPopulation that = (InitialPopulation)object;
727         if (this.initPopId == null || that.getInitPopId() == null || !this.initPopId.equals(that.getInitPopId()))
728         {
729             return false;
730         }
731         return true;
732     }
733 
734     /**
735      * Returns a hash code based on this entity's identifiers.
736      */
737     @Override
738     public int hashCode()
739     {
740         int hashCode = 0;
741         hashCode = 29 * hashCode + (this.initPopId == null ? 0 : this.initPopId.hashCode());
742 
743         return hashCode;
744     }
745 
746     /**
747      * Constructs new instances of {@link InitialPopulation}.
748      */
749     public static final class Factory
750     {
751         /**
752          * Constructs a new instance of {@link InitialPopulation}.
753          * @return new InitialPopulationImpl()
754          */
755         public static InitialPopulation newInstance()
756         {
757             return new InitialPopulationImpl();
758         }
759 
760         /**
761          * Constructs a new instance of {@link InitialPopulation}, taking all required and/or
762          * read-only properties as arguments, except for identifiers.
763          * @param initPopNm String
764          * @param initPopLb String
765          * @param initPopStartDt Date
766          * @param initPopBiometricIndivNb Integer
767          * @param qualityFlag QualityFlag
768          * @param referenceTaxon ReferenceTaxon
769          * @param ageGroup AgeGroup
770          * @return newInstance
771          */
772         public static InitialPopulation newInstance(String initPopNm, String initPopLb, Date initPopStartDt, Integer initPopBiometricIndivNb, QualityFlag qualityFlag, ReferenceTaxon referenceTaxon, AgeGroup ageGroup)
773         {
774             final InitialPopulation entity = new InitialPopulationImpl();
775             entity.setInitPopNm(initPopNm);
776             entity.setInitPopLb(initPopLb);
777             entity.setInitPopStartDt(initPopStartDt);
778             entity.setInitPopBiometricIndivNb(initPopBiometricIndivNb);
779             entity.setQualityFlag(qualityFlag);
780             entity.setReferenceTaxon(referenceTaxon);
781             entity.setAgeGroup(ageGroup);
782             return entity;
783         }
784 
785         /**
786          * Constructs a new instance of {@link InitialPopulation}, taking all possible properties
787          * (except the identifier(s))as arguments.
788          * @param initPopNm String
789          * @param initPopLb String
790          * @param initPopCm String
791          * @param initPopQualifDt Date
792          * @param initPopQualifCm String
793          * @param initPopValidDt Date
794          * @param initPopControlDt Date
795          * @param initPopStartDt Date
796          * @param initPopBiometricIndivNb Integer
797          * @param updateDt Timestamp
798          * @param remoteId Integer
799          * @param ploidy Ploidy
800          * @param departments Collection<Department>
801          * @param historicalAccounts Collection<HistoricalAccount>
802          * @param programs Collection<Program>
803          * @param qualityFlag QualityFlag
804          * @param referenceTaxon ReferenceTaxon
805          * @param batches Collection<Batch>
806          * @param ageGroup AgeGroup
807          * @param qusers Collection<Quser>
808          * @return newInstance InitialPopulation
809          */
810         public static InitialPopulation newInstance(String initPopNm, String initPopLb, String initPopCm, Date initPopQualifDt, String initPopQualifCm, Date initPopValidDt, Date initPopControlDt, Date initPopStartDt, Integer initPopBiometricIndivNb, Timestamp updateDt, Integer remoteId, Ploidy ploidy, Collection<Department> departments, Collection<HistoricalAccount> historicalAccounts, Collection<Program> programs, QualityFlag qualityFlag, ReferenceTaxon referenceTaxon, Collection<Batch> batches, AgeGroup ageGroup, Collection<Quser> qusers)
811         {
812             final InitialPopulation entity = new InitialPopulationImpl();
813             entity.setInitPopNm(initPopNm);
814             entity.setInitPopLb(initPopLb);
815             entity.setInitPopCm(initPopCm);
816             entity.setInitPopQualifDt(initPopQualifDt);
817             entity.setInitPopQualifCm(initPopQualifCm);
818             entity.setInitPopValidDt(initPopValidDt);
819             entity.setInitPopControlDt(initPopControlDt);
820             entity.setInitPopStartDt(initPopStartDt);
821             entity.setInitPopBiometricIndivNb(initPopBiometricIndivNb);
822             entity.setUpdateDt(updateDt);
823             entity.setRemoteId(remoteId);
824             entity.setPloidy(ploidy);
825             entity.setDepartments(departments);
826             entity.setHistoricalAccounts(historicalAccounts);
827             entity.setPrograms(programs);
828             entity.setQualityFlag(qualityFlag);
829             entity.setReferenceTaxon(referenceTaxon);
830             entity.setBatches(batches);
831             entity.setAgeGroup(ageGroup);
832             entity.setQusers(qusers);
833             return entity;
834         }
835     }
836 
837     /**
838      * @see Comparable#compareTo
839      */
840     public int compareTo(InitialPopulation o)
841     {
842         int cmp = 0;
843         if (this.getInitPopId() != null)
844         {
845             cmp = this.getInitPopId().compareTo(o.getInitPopId());
846         }
847         else
848         {
849             if (this.getInitPopNm() != null)
850             {
851                 cmp = (cmp != 0 ? cmp : this.getInitPopNm().compareTo(o.getInitPopNm()));
852             }
853             if (this.getInitPopLb() != null)
854             {
855                 cmp = (cmp != 0 ? cmp : this.getInitPopLb().compareTo(o.getInitPopLb()));
856             }
857             if (this.getInitPopCm() != null)
858             {
859                 cmp = (cmp != 0 ? cmp : this.getInitPopCm().compareTo(o.getInitPopCm()));
860             }
861             if (this.getInitPopQualifDt() != null)
862             {
863                 cmp = (cmp != 0 ? cmp : this.getInitPopQualifDt().compareTo(o.getInitPopQualifDt()));
864             }
865             if (this.getInitPopQualifCm() != null)
866             {
867                 cmp = (cmp != 0 ? cmp : this.getInitPopQualifCm().compareTo(o.getInitPopQualifCm()));
868             }
869             if (this.getInitPopValidDt() != null)
870             {
871                 cmp = (cmp != 0 ? cmp : this.getInitPopValidDt().compareTo(o.getInitPopValidDt()));
872             }
873             if (this.getInitPopControlDt() != null)
874             {
875                 cmp = (cmp != 0 ? cmp : this.getInitPopControlDt().compareTo(o.getInitPopControlDt()));
876             }
877             if (this.getInitPopStartDt() != null)
878             {
879                 cmp = (cmp != 0 ? cmp : this.getInitPopStartDt().compareTo(o.getInitPopStartDt()));
880             }
881             if (this.getInitPopBiometricIndivNb() != null)
882             {
883                 cmp = (cmp != 0 ? cmp : this.getInitPopBiometricIndivNb().compareTo(o.getInitPopBiometricIndivNb()));
884             }
885             if (this.getUpdateDt() != null)
886             {
887                 cmp = (cmp != 0 ? cmp : this.getUpdateDt().compareTo(o.getUpdateDt()));
888             }
889             if (this.getRemoteId() != null)
890             {
891                 cmp = (cmp != 0 ? cmp : this.getRemoteId().compareTo(o.getRemoteId()));
892             }
893         }
894         return cmp;
895     }
896 // HibernateEntity.vsl merge-point
897 // InitialPopulation.java merge-point
898 }