001// license-header java merge-point
002//
003// Attention: Generated code! Do not modify by hand!
004// Generated by: hibernate/HibernateEntity.vsl in andromda-hibernate-cartridge.
005//
006package fr.ifremer.adagio.core.dao.data.transshipment;
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 com.vividsolutions.jts.geom.Point;
032import fr.ifremer.adagio.core.dao.administration.programStrategy.Program;
033import fr.ifremer.adagio.core.dao.administration.user.Department;
034import fr.ifremer.adagio.core.dao.administration.user.Person;
035import fr.ifremer.adagio.core.dao.data.measure.SurveyMeasurement;
036import fr.ifremer.adagio.core.dao.data.produce.Produce;
037import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.FishingTrip;
038import fr.ifremer.adagio.core.dao.data.vessel.Vessel;
039import fr.ifremer.adagio.core.dao.referential.QualityFlag;
040import fr.ifremer.adagio.core.dao.referential.location.Location;
041import java.io.Serializable;
042import java.sql.Timestamp;
043import java.util.Collection;
044import java.util.Date;
045import java.util.HashSet;
046
047/**
048 * Transbordement d'un produit (capturé) d'un navire à l'autre.
049 * Pour connaitre le navire d'origine des produits (celui qui les possédait avant le
050 * transbordement), il faut utiliser les liens vers FishingTrip ou MetaFishingTrip, qui possèdent un
051 * lien vers Vessel.
052 */
053// HibernateEntity.vsl annotations merge-point
054public abstract class Transshipment
055    implements Serializable, Comparable<Transshipment>
056{
057    /**
058     * The serial version UID of this class. Needed for serialization.
059     */
060    private static final long serialVersionUID = -9036633644849422358L;
061
062    // Generate 10 attributes
063    private Integer id;
064
065    /**
066     * Idenfiant interne. Généré par le système.
067     * @return this.id Integer
068     */
069    public Integer getId()
070    {
071        return this.id;
072    }
073
074    /**
075     * Idenfiant interne. Généré par le système.
076     * @param idIn Integer
077     */
078    public void setId(Integer idIn)
079    {
080        this.id = idIn;
081    }
082
083    private Date transshipmentDateTime;
084
085    /**
086     * Rang du transbordement, utilisé quand plusieurs transbordements ont eu lieu le meme jour pour
087     * une meme navire, et que l'heure de landingDateTime ne permet pas de distinguer les
088     * transbordements entre eux.
089     * Utiliser pour SACAPT : l'ordre es alors celui de présence dans le fichier d'origine.
090     * @return this.transshipmentDateTime Date
091     */
092    public Date getTransshipmentDateTime()
093    {
094        return this.transshipmentDateTime;
095    }
096
097    /**
098     * Rang du transbordement, utilisé quand plusieurs transbordements ont eu lieu le meme jour pour
099     * une meme navire, et que l'heure de landingDateTime ne permet pas de distinguer les
100     * transbordements entre eux.
101     * Utiliser pour SACAPT : l'ordre es alors celui de présence dans le fichier d'origine.
102     * @param transshipmentDateTimeIn Date
103     */
104    public void setTransshipmentDateTime(Date transshipmentDateTimeIn)
105    {
106        this.transshipmentDateTime = transshipmentDateTimeIn;
107    }
108
109    private Short rankOrder;
110
111    /**
112     * <html>
113     * <head>
114     * </head>
115     * <body>
116     * <p>
117     * Rang du transbordement, utilis&#233; quand plusieurs transbordements ont
118     * eu lieu le meme jour pour une meme navire, et que l'heure de <i>landingDateTime</i>
119     * ne permet pas de distinguer les d&#233;barquement entre eux.<br><br>Utiliser
120     * pour SACAPT : l'ordre es alors celui de pr&#233;sence dans le fichier
121     * d'origine.
122     * </p>
123     * </body>
124     * </html>
125     * @return this.rankOrder Short
126     */
127    public Short getRankOrder()
128    {
129        return this.rankOrder;
130    }
131
132    /**
133     * <html>
134     * <head>
135     * </head>
136     * <body>
137     * <p>
138     * Rang du transbordement, utilis&#233; quand plusieurs transbordements ont
139     * eu lieu le meme jour pour une meme navire, et que l'heure de <i>landingDateTime</i>
140     * ne permet pas de distinguer les d&#233;barquement entre eux.<br><br>Utiliser
141     * pour SACAPT : l'ordre es alors celui de pr&#233;sence dans le fichier
142     * d'origine.
143     * </p>
144     * </body>
145     * </html>
146     * @param rankOrderIn Short
147     */
148    public void setRankOrder(Short rankOrderIn)
149    {
150        this.rankOrder = rankOrderIn;
151    }
152
153    private String comments;
154
155    /**
156     * 
157     * @return this.comments String
158     */
159    public String getComments()
160    {
161        return this.comments;
162    }
163
164    /**
165     * 
166     * @param commentsIn String
167     */
168    public void setComments(String commentsIn)
169    {
170        this.comments = commentsIn;
171    }
172
173    private Date creationDate;
174
175    /**
176     * 
177     * @return this.creationDate Date
178     */
179    public Date getCreationDate()
180    {
181        return this.creationDate;
182    }
183
184    /**
185     * 
186     * @param creationDateIn Date
187     */
188    public void setCreationDate(Date creationDateIn)
189    {
190        this.creationDate = creationDateIn;
191    }
192
193    private Date controlDate;
194
195    /**
196     * 
197     * @return this.controlDate Date
198     */
199    public Date getControlDate()
200    {
201        return this.controlDate;
202    }
203
204    /**
205     * 
206     * @param controlDateIn Date
207     */
208    public void setControlDate(Date controlDateIn)
209    {
210        this.controlDate = controlDateIn;
211    }
212
213    private Date qualificationDate;
214
215    /**
216     * 
217     * @return this.qualificationDate Date
218     */
219    public Date getQualificationDate()
220    {
221        return this.qualificationDate;
222    }
223
224    /**
225     * 
226     * @param qualificationDateIn Date
227     */
228    public void setQualificationDate(Date qualificationDateIn)
229    {
230        this.qualificationDate = qualificationDateIn;
231    }
232
233    private String qualificationComments;
234
235    /**
236     * 
237     * @return this.qualificationComments String
238     */
239    public String getQualificationComments()
240    {
241        return this.qualificationComments;
242    }
243
244    /**
245     * 
246     * @param qualificationCommentsIn String
247     */
248    public void setQualificationComments(String qualificationCommentsIn)
249    {
250        this.qualificationComments = qualificationCommentsIn;
251    }
252
253    private Timestamp updateDate;
254
255    /**
256     * 
257     * @return this.updateDate Timestamp
258     */
259    public Timestamp getUpdateDate()
260    {
261        return this.updateDate;
262    }
263
264    /**
265     * 
266     * @param updateDateIn Timestamp
267     */
268    public void setUpdateDate(Timestamp updateDateIn)
269    {
270        this.updateDate = updateDateIn;
271    }
272
273    private Point position;
274
275    /**
276     * Geometry of the transshipment (Point)
277     * @return this.position Point
278     */
279    public Point getPosition()
280    {
281        return this.position;
282    }
283
284    /**
285     * Geometry of the transshipment (Point)
286     * @param positionIn Point
287     */
288    public void setPosition(Point positionIn)
289    {
290        this.position = positionIn;
291    }
292
293    // Generate 10 associations
294    private Vessel toVessel;
295
296    /**
297     * Navire vers lequel le transbordement a été réalisé.
298     * @return this.toVessel Vessel
299     */
300    public Vessel getToVessel()
301    {
302        return this.toVessel;
303    }
304
305    /**
306     * Navire vers lequel le transbordement a été réalisé.
307     * @param toVesselIn Vessel
308     */
309    public void setToVessel(Vessel toVesselIn)
310    {
311        this.toVessel = toVesselIn;
312    }
313
314    private Location transshipmentLocation;
315
316    /**
317     * Zone ou port dans lequel se fait le transbordement.
318     * Non renseigné dans SACAPT
319     * @return this.transshipmentLocation Location
320     */
321    public Location getTransshipmentLocation()
322    {
323        return this.transshipmentLocation;
324    }
325
326    /**
327     * Zone ou port dans lequel se fait le transbordement.
328     * Non renseigné dans SACAPT
329     * @param transshipmentLocationIn Location
330     */
331    public void setTransshipmentLocation(Location transshipmentLocationIn)
332    {
333        this.transshipmentLocation = transshipmentLocationIn;
334    }
335
336    private QualityFlag qualityFlag;
337
338    /**
339     * Indice qualité d'une donnée.
340     * Actuellement, les indices qualités identifiés sont :
341     * 0 - Non qualifiée,
342     * 1 - Bonne,
343     * 2 - Hors statistiques,
344     * 3 - Douteuse,
345     * 4 - Fausse,
346     * 5 - Corrigée,
347     * 8 - Incomplète,
348     * 9 - Absente.
349     * @return this.qualityFlag QualityFlag
350     */
351    public QualityFlag getQualityFlag()
352    {
353        return this.qualityFlag;
354    }
355
356    /**
357     * Indice qualité d'une donnée.
358     * Actuellement, les indices qualités identifiés sont :
359     * 0 - Non qualifiée,
360     * 1 - Bonne,
361     * 2 - Hors statistiques,
362     * 3 - Douteuse,
363     * 4 - Fausse,
364     * 5 - Corrigée,
365     * 8 - Incomplète,
366     * 9 - Absente.
367     * @param qualityFlagIn QualityFlag
368     */
369    public void setQualityFlag(QualityFlag qualityFlagIn)
370    {
371        this.qualityFlag = qualityFlagIn;
372    }
373
374    private Department recorderDepartment;
375
376    /**
377     * Service d'appartenance d'une personne.
378     * Il peut s'agir des départements et service de l'Ifremer, ou bien des entreprises, services
379     * extérieurs (sous-traitants, etc.).
380     * REMARQUE : nous en aurons besoin en v2, pour l'administration des personnes (rechercher une
381     * personne, gérer les sous-traitants, etc.), mais aussi pour identifier le service effectuant
382     * l’analyse d’un résultat de mesure.
383     * Nombre de lignes : 60
384     * @return this.recorderDepartment Department
385     */
386    public Department getRecorderDepartment()
387    {
388        return this.recorderDepartment;
389    }
390
391    /**
392     * Service d'appartenance d'une personne.
393     * Il peut s'agir des départements et service de l'Ifremer, ou bien des entreprises, services
394     * extérieurs (sous-traitants, etc.).
395     * REMARQUE : nous en aurons besoin en v2, pour l'administration des personnes (rechercher une
396     * personne, gérer les sous-traitants, etc.), mais aussi pour identifier le service effectuant
397     * l’analyse d’un résultat de mesure.
398     * Nombre de lignes : 60
399     * @param recorderDepartmentIn Department
400     */
401    public void setRecorderDepartment(Department recorderDepartmentIn)
402    {
403        this.recorderDepartment = recorderDepartmentIn;
404    }
405
406    private Vessel fromVessel;
407
408    /**
409     * Navire, ou plus généralement un usager de la ressource.
410     * Peut etre un navire de peche professionnel ou non, un navire scientifique, un pêcheur à pied,
411     * un
412     * groupement de navires, etc.
413     * @return this.fromVessel Vessel
414     */
415    public Vessel getFromVessel()
416    {
417        return this.fromVessel;
418    }
419
420    /**
421     * Navire, ou plus généralement un usager de la ressource.
422     * Peut etre un navire de peche professionnel ou non, un navire scientifique, un pêcheur à pied,
423     * un
424     * groupement de navires, etc.
425     * @param fromVesselIn Vessel
426     */
427    public void setFromVessel(Vessel fromVesselIn)
428    {
429        this.fromVessel = fromVesselIn;
430    }
431
432    private Person recorderPerson;
433
434    /**
435     * <html>
436     * <head>
437     * <style>
438     * p {padding:0px; margin:0px;}
439     * </style>
440     * </head>
441     * <body>
442     * <p>
443     * Personne liées aux données : utilisateur du système, ou observateurs,
444     * responsable de données, etc.
445     * </p>
446     * <p>
447     * </p>
448     * <p>
449     * Les personnes liées aux activités professionnelles de pêche sont plutôt
450     * gérer dans <i>VesselPerson</i>.
451     * </p>
452     * <p>
453     * </p>
454     * <p>
455     * Nombre de lignes : 100
456     * </p>
457     * </body>
458     * </html>
459     * @return this.recorderPerson Person
460     */
461    public Person getRecorderPerson()
462    {
463        return this.recorderPerson;
464    }
465
466    /**
467     * <html>
468     * <head>
469     * <style>
470     * p {padding:0px; margin:0px;}
471     * </style>
472     * </head>
473     * <body>
474     * <p>
475     * Personne liées aux données : utilisateur du système, ou observateurs,
476     * responsable de données, etc.
477     * </p>
478     * <p>
479     * </p>
480     * <p>
481     * Les personnes liées aux activités professionnelles de pêche sont plutôt
482     * gérer dans <i>VesselPerson</i>.
483     * </p>
484     * <p>
485     * </p>
486     * <p>
487     * Nombre de lignes : 100
488     * </p>
489     * </body>
490     * </html>
491     * @param recorderPersonIn Person
492     */
493    public void setRecorderPerson(Person recorderPersonIn)
494    {
495        this.recorderPerson = recorderPersonIn;
496    }
497
498    private Collection<SurveyMeasurement> surveyMeasurements = new HashSet<SurveyMeasurement>();
499
500    /**
501     * 
502     * @return this.surveyMeasurements Collection<SurveyMeasurement>
503     */
504    public Collection<SurveyMeasurement> getSurveyMeasurements()
505    {
506        return this.surveyMeasurements;
507    }
508
509    /**
510     * 
511     * @param surveyMeasurementsIn Collection<SurveyMeasurement>
512     */
513    public void setSurveyMeasurements(Collection<SurveyMeasurement> surveyMeasurementsIn)
514    {
515        this.surveyMeasurements = surveyMeasurementsIn;
516    }
517
518    /**
519     * 
520     * @param elementToAdd SurveyMeasurement
521     * @return <tt>true</tt> if this collection changed as a result of the
522     *         call
523     */
524    public boolean addSurveyMeasurements(SurveyMeasurement elementToAdd)
525    {
526        return this.surveyMeasurements.add(elementToAdd);
527    }
528
529    /**
530     * 
531     * @param elementToRemove SurveyMeasurement
532     * @return <tt>true</tt> if this collection changed as a result of the
533     *         call
534     */
535    public boolean removeSurveyMeasurements(SurveyMeasurement elementToRemove)
536    {
537        return this.surveyMeasurements.remove(elementToRemove);
538    }
539
540    private Collection<Produce> produces = new HashSet<Produce>();
541
542    /**
543     * Listes de produits transbordés.
544     * @return this.produces Collection<Produce>
545     */
546    public Collection<Produce> getProduces()
547    {
548        return this.produces;
549    }
550
551    /**
552     * Listes de produits transbordés.
553     * @param producesIn Collection<Produce>
554     */
555    public void setProduces(Collection<Produce> producesIn)
556    {
557        this.produces = producesIn;
558    }
559
560    /**
561     * Listes de produits transbordés.
562     * @param elementToAdd Produce
563     * @return <tt>true</tt> if this collection changed as a result of the
564     *         call
565     */
566    public boolean addProduces(Produce elementToAdd)
567    {
568        return this.produces.add(elementToAdd);
569    }
570
571    /**
572     * Listes de produits transbordés.
573     * @param elementToRemove Produce
574     * @return <tt>true</tt> if this collection changed as a result of the
575     *         call
576     */
577    public boolean removeProduces(Produce elementToRemove)
578    {
579        return this.produces.remove(elementToRemove);
580    }
581
582    private FishingTrip fishingTrip;
583
584    /**
585     * Voyage en mer, ayant pour vocation une activité de peche (peut etre une campagnes halieutique
586     * ou une
587     * marée d'un navire professionnel, etc.)
588     * Un voyage peut représenter type de données :
589     * - Une marée observée (en mer, au débarquement), qui désigne une marée de pêche
590     * professionnelle au
591     * cours de laquelle des relevés sont effectués par un observateur.
592     * - Une marée déclarée. Principalement issue du log book électronique (flux SACAPT). Une marée
593     * déclarée peut etre un ensemble de marée ou de sous-ensembles de marée (Exemple de la fiche de
594     * peche)
595     * - une sortie effectuée lors d"une campagne scientifique
596     * @return this.fishingTrip FishingTrip
597     */
598    public FishingTrip getFishingTrip()
599    {
600        return this.fishingTrip;
601    }
602
603    /**
604     * Voyage en mer, ayant pour vocation une activité de peche (peut etre une campagnes halieutique
605     * ou une
606     * marée d'un navire professionnel, etc.)
607     * Un voyage peut représenter type de données :
608     * - Une marée observée (en mer, au débarquement), qui désigne une marée de pêche
609     * professionnelle au
610     * cours de laquelle des relevés sont effectués par un observateur.
611     * - Une marée déclarée. Principalement issue du log book électronique (flux SACAPT). Une marée
612     * déclarée peut etre un ensemble de marée ou de sous-ensembles de marée (Exemple de la fiche de
613     * peche)
614     * - une sortie effectuée lors d"une campagne scientifique
615     * @param fishingTripIn FishingTrip
616     */
617    public void setFishingTrip(FishingTrip fishingTripIn)
618    {
619        this.fishingTrip = fishingTripIn;
620    }
621
622    private Program program;
623
624    /**
625     * Programme d'observation à l'origine d'une collecte de données.
626     * Désigne les activités qui sont à l'origine de la collecte d'un ensemble cohérent de données,
627     * que ce
628     * soit pour des collectes continues (marées observées en mer, SIPA) ou pour des études limitées
629     * dans
630     * le temps. La quantité de données rattachées à un programme peut être variable, selon qu'il
631     * s'agit
632     * d'une activité longue ou intensive, ou d'une opération plus ponctuelle (étude) mais toujours
633     * mise en
634     * œuvre selon un schéma décidé à l'avance.
635     * Exemple de programmes d'observations :
636     * - SIH-OBSMER (marées observées en mer)
637     * - SIH-STATPECHE (enquete d'activité et d'effort...)
638     * - SIPA : données déclaratives transmises par la DPMA
639     * - VMS : données satellitaires
640     * - OFIMER : données du SI de l'OFIMER
641     * @return this.program Program
642     */
643    public Program getProgram()
644    {
645        return this.program;
646    }
647
648    /**
649     * Programme d'observation à l'origine d'une collecte de données.
650     * Désigne les activités qui sont à l'origine de la collecte d'un ensemble cohérent de données,
651     * que ce
652     * soit pour des collectes continues (marées observées en mer, SIPA) ou pour des études limitées
653     * dans
654     * le temps. La quantité de données rattachées à un programme peut être variable, selon qu'il
655     * s'agit
656     * d'une activité longue ou intensive, ou d'une opération plus ponctuelle (étude) mais toujours
657     * mise en
658     * œuvre selon un schéma décidé à l'avance.
659     * Exemple de programmes d'observations :
660     * - SIH-OBSMER (marées observées en mer)
661     * - SIH-STATPECHE (enquete d'activité et d'effort...)
662     * - SIPA : données déclaratives transmises par la DPMA
663     * - VMS : données satellitaires
664     * - OFIMER : données du SI de l'OFIMER
665     * @param programIn Program
666     */
667    public void setProgram(Program programIn)
668    {
669        this.program = programIn;
670    }
671
672    /**
673     * Returns <code>true</code> if the argument is an Transshipment instance and all identifiers for this entity
674     * equal the identifiers of the argument entity. Returns <code>false</code> otherwise.
675     */
676    @Override
677    public boolean equals(Object object)
678    {
679        if (this == object)
680        {
681            return true;
682        }
683        if (!(object instanceof Transshipment))
684        {
685            return false;
686        }
687        final Transshipment that = (Transshipment)object;
688        if (this.id == null || that.getId() == null || !this.id.equals(that.getId()))
689        {
690            return false;
691        }
692        return true;
693    }
694
695    /**
696     * Returns a hash code based on this entity's identifiers.
697     */
698    @Override
699    public int hashCode()
700    {
701        int hashCode = 0;
702        hashCode = 29 * hashCode + (this.id == null ? 0 : this.id.hashCode());
703
704        return hashCode;
705    }
706
707    /**
708     * Constructs new instances of {@link Transshipment}.
709     */
710    public static final class Factory
711    {
712        /**
713         * Constructs a new instance of {@link Transshipment}.
714         * @return new TransshipmentImpl()
715         */
716        public static Transshipment newInstance()
717        {
718            return new TransshipmentImpl();
719        }
720
721        /**
722         * Constructs a new instance of {@link Transshipment}, taking all required and/or
723         * read-only properties as arguments, except for identifiers.
724         * @param transshipmentDateTime Date
725         * @param creationDate Date
726         * @param updateDate Timestamp
727         * @param toVessel Vessel
728         * @param qualityFlag QualityFlag
729         * @param recorderDepartment Department
730         * @param fromVessel Vessel
731         * @param program Program
732         * @return newInstance
733         */
734        public static Transshipment newInstance(Date transshipmentDateTime, Date creationDate, Timestamp updateDate, Vessel toVessel, QualityFlag qualityFlag, Department recorderDepartment, Vessel fromVessel, Program program)
735        {
736            final Transshipment entity = new TransshipmentImpl();
737            entity.setTransshipmentDateTime(transshipmentDateTime);
738            entity.setCreationDate(creationDate);
739            entity.setUpdateDate(updateDate);
740            entity.setToVessel(toVessel);
741            entity.setQualityFlag(qualityFlag);
742            entity.setRecorderDepartment(recorderDepartment);
743            entity.setFromVessel(fromVessel);
744            entity.setProgram(program);
745            return entity;
746        }
747
748        /**
749         * Constructs a new instance of {@link Transshipment}, taking all possible properties
750         * (except the identifier(s))as arguments.
751         * @param transshipmentDateTime Date
752         * @param rankOrder Short
753         * @param comments String
754         * @param creationDate Date
755         * @param controlDate Date
756         * @param qualificationDate Date
757         * @param qualificationComments String
758         * @param updateDate Timestamp
759         * @param position Point
760         * @param toVessel Vessel
761         * @param transshipmentLocation Location
762         * @param qualityFlag QualityFlag
763         * @param recorderDepartment Department
764         * @param fromVessel Vessel
765         * @param recorderPerson Person
766         * @param surveyMeasurements Collection<SurveyMeasurement>
767         * @param produces Collection<Produce>
768         * @param fishingTrip FishingTrip
769         * @param program Program
770         * @return newInstance Transshipment
771         */
772        public static Transshipment newInstance(Date transshipmentDateTime, Short rankOrder, String comments, Date creationDate, Date controlDate, Date qualificationDate, String qualificationComments, Timestamp updateDate, Point position, Vessel toVessel, Location transshipmentLocation, QualityFlag qualityFlag, Department recorderDepartment, Vessel fromVessel, Person recorderPerson, Collection<SurveyMeasurement> surveyMeasurements, Collection<Produce> produces, FishingTrip fishingTrip, Program program)
773        {
774            final Transshipment entity = new TransshipmentImpl();
775            entity.setTransshipmentDateTime(transshipmentDateTime);
776            entity.setRankOrder(rankOrder);
777            entity.setComments(comments);
778            entity.setCreationDate(creationDate);
779            entity.setControlDate(controlDate);
780            entity.setQualificationDate(qualificationDate);
781            entity.setQualificationComments(qualificationComments);
782            entity.setUpdateDate(updateDate);
783            entity.setPosition(position);
784            entity.setToVessel(toVessel);
785            entity.setTransshipmentLocation(transshipmentLocation);
786            entity.setQualityFlag(qualityFlag);
787            entity.setRecorderDepartment(recorderDepartment);
788            entity.setFromVessel(fromVessel);
789            entity.setRecorderPerson(recorderPerson);
790            entity.setSurveyMeasurements(surveyMeasurements);
791            entity.setProduces(produces);
792            entity.setFishingTrip(fishingTrip);
793            entity.setProgram(program);
794            return entity;
795        }
796    }
797
798    /**
799     * @see Comparable#compareTo
800     */
801    public int compareTo(Transshipment o)
802    {
803        int cmp = 0;
804        if (this.getId() != null)
805        {
806            cmp = this.getId().compareTo(o.getId());
807        }
808        else
809        {
810            if (this.getTransshipmentDateTime() != null)
811            {
812                cmp = (cmp != 0 ? cmp : this.getTransshipmentDateTime().compareTo(o.getTransshipmentDateTime()));
813            }
814            if (this.getRankOrder() != null)
815            {
816                cmp = (cmp != 0 ? cmp : this.getRankOrder().compareTo(o.getRankOrder()));
817            }
818            if (this.getComments() != null)
819            {
820                cmp = (cmp != 0 ? cmp : this.getComments().compareTo(o.getComments()));
821            }
822            if (this.getCreationDate() != null)
823            {
824                cmp = (cmp != 0 ? cmp : this.getCreationDate().compareTo(o.getCreationDate()));
825            }
826            if (this.getControlDate() != null)
827            {
828                cmp = (cmp != 0 ? cmp : this.getControlDate().compareTo(o.getControlDate()));
829            }
830            if (this.getQualificationDate() != null)
831            {
832                cmp = (cmp != 0 ? cmp : this.getQualificationDate().compareTo(o.getQualificationDate()));
833            }
834            if (this.getQualificationComments() != null)
835            {
836                cmp = (cmp != 0 ? cmp : this.getQualificationComments().compareTo(o.getQualificationComments()));
837            }
838            if (this.getUpdateDate() != null)
839            {
840                cmp = (cmp != 0 ? cmp : this.getUpdateDate().compareTo(o.getUpdateDate()));
841            }
842            if (this.getPosition() != null)
843            {
844                cmp = (cmp != 0 ? cmp : this.getPosition().compareTo(o.getPosition()));
845            }
846        }
847        return cmp;
848    }
849// HibernateEntity.vsl merge-point
850// Transshipment.java merge-point
851}