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