001// license-header java merge-point
002//
003// Attention: Generated code! Do not modify by hand!
004// Generated by: hibernate/HibernateEntity.vsl in andromda-hibernate-cartridge.
005//
006package fr.ifremer.adagio.core.dao.administration.user;
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 java.io.Serializable;
032import java.sql.Timestamp;
033import java.util.Collection;
034import java.util.HashSet;
035
036/**
037 * @deprecated  Use Program2person instead
038 * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à la
039 * place les privilèves sur les programmes)
040 * Portefeuille de navires.
041 * Il peut s'agir d'un portefeuille de différent type (enquete d'activité, marées observées en mer,
042 * campagne en mer, etc.)
043 * Gestion des droits :
044 * - Un portefeuille est géré par un seul utilisateur, qui à les droits de lecture/écriture.
045 * - Un portefeuille peut etre supervisé par une tierce personne, qui aura également les droits de
046 * lecture/écriture sur les données du portefeuille.
047 * - Un portefeuille peut avoir plusieurs utilisateurs avec des droits de consultation uniquement
048 * (lecture seule) sur ces données.
049 */
050// HibernateEntity.vsl annotations merge-point
051public abstract class ManagedData
052    implements Serializable, Comparable<ManagedData>
053{
054    /**
055     * The serial version UID of this class. Needed for serialization.
056     */
057    private static final long serialVersionUID = -1112639569822803327L;
058
059    // Generate 2 attributes
060    private Integer id;
061
062    /**
063     * Identifiant unique du portefeuille.
064     * @return this.id Integer
065     */
066    public Integer getId()
067    {
068        return this.id;
069    }
070
071    /**
072     * Identifiant unique du portefeuille.
073     * @param idIn Integer
074     */
075    public void setId(Integer idIn)
076    {
077        this.id = idIn;
078    }
079
080    private Timestamp updateDate;
081
082    /**
083     * 
084     * @return this.updateDate Timestamp
085     */
086    public Timestamp getUpdateDate()
087    {
088        return this.updateDate;
089    }
090
091    /**
092     * 
093     * @param updateDateIn Timestamp
094     */
095    public void setUpdateDate(Timestamp updateDateIn)
096    {
097        this.updateDate = updateDateIn;
098    }
099
100    // Generate 6 associations
101    private Collection<VesselManagePeriod> vesselManagePeriods = new HashSet<VesselManagePeriod>();
102
103    /**
104     * @deprecated  Use Program2person instead
105     * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à
106     * la place
107     * les privilèves sur les programmes)
108     * Définit la présence de navires sur un portefeuille pour une période début/fin.
109     * La période utilisée définit la date des données que peut saisir/modifier/visualiser
110     * l'utilisateur,
111     * en fonction de ses droits.
112     * Exemple :
113     * Si un utilisateur a un navire A dans un portefeuille pour la période du 01/01/2002 au
114     * 31/12/2002, il
115     * peut saisir des données même en 2004, si la date de donnée saisie est pendant l'année 2002.
116     * @return this.vesselManagePeriods Collection<VesselManagePeriod>
117     */
118    public Collection<VesselManagePeriod> getVesselManagePeriods()
119    {
120        return this.vesselManagePeriods;
121    }
122
123    /**
124     * @deprecated  Use Program2person instead
125     * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à
126     * la place
127     * les privilèves sur les programmes)
128     * Définit la présence de navires sur un portefeuille pour une période début/fin.
129     * La période utilisée définit la date des données que peut saisir/modifier/visualiser
130     * l'utilisateur,
131     * en fonction de ses droits.
132     * Exemple :
133     * Si un utilisateur a un navire A dans un portefeuille pour la période du 01/01/2002 au
134     * 31/12/2002, il
135     * peut saisir des données même en 2004, si la date de donnée saisie est pendant l'année 2002.
136     * @param vesselManagePeriodsIn Collection<VesselManagePeriod>
137     */
138    public void setVesselManagePeriods(Collection<VesselManagePeriod> vesselManagePeriodsIn)
139    {
140        this.vesselManagePeriods = vesselManagePeriodsIn;
141    }
142
143    /**
144     * @deprecated  Use Program2person instead
145     * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à
146     * la place
147     * les privilèves sur les programmes)
148     * Définit la présence de navires sur un portefeuille pour une période début/fin.
149     * La période utilisée définit la date des données que peut saisir/modifier/visualiser
150     * l'utilisateur,
151     * en fonction de ses droits.
152     * Exemple :
153     * Si un utilisateur a un navire A dans un portefeuille pour la période du 01/01/2002 au
154     * 31/12/2002, il
155     * peut saisir des données même en 2004, si la date de donnée saisie est pendant l'année 2002.
156     * @param elementToAdd VesselManagePeriod
157     * @return <tt>true</tt> if this collection changed as a result of the
158     *         call
159     */
160    public boolean addVesselManagePeriods(VesselManagePeriod elementToAdd)
161    {
162        return this.vesselManagePeriods.add(elementToAdd);
163    }
164
165    /**
166     * @deprecated  Use Program2person instead
167     * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à
168     * la place
169     * les privilèves sur les programmes)
170     * Définit la présence de navires sur un portefeuille pour une période début/fin.
171     * La période utilisée définit la date des données que peut saisir/modifier/visualiser
172     * l'utilisateur,
173     * en fonction de ses droits.
174     * Exemple :
175     * Si un utilisateur a un navire A dans un portefeuille pour la période du 01/01/2002 au
176     * 31/12/2002, il
177     * peut saisir des données même en 2004, si la date de donnée saisie est pendant l'année 2002.
178     * @param elementToRemove VesselManagePeriod
179     * @return <tt>true</tt> if this collection changed as a result of the
180     *         call
181     */
182    public boolean removeVesselManagePeriods(VesselManagePeriod elementToRemove)
183    {
184        return this.vesselManagePeriods.remove(elementToRemove);
185    }
186
187    private Collection<Person> viewerUsers = new HashSet<Person>();
188
189    /**
190     * <html>
191     * <head>
192     * <style>
193     * p {padding:0px; margin:0px;}
194     * </style>
195     * </head>
196     * <body>
197     * <p>
198     * Personne liées aux données : utilisateur du système, ou observateurs,
199     * responsable de données, etc.
200     * </p>
201     * <p>
202     * </p>
203     * <p>
204     * Les personnes liées aux activités professionnelles de pêche sont plutôt
205     * gérer dans <i>VesselPerson</i>.
206     * </p>
207     * <p>
208     * </p>
209     * <p>
210     * Nombre de lignes : 100
211     * </p>
212     * </body>
213     * </html>
214     * @return this.viewerUsers Collection<Person>
215     */
216    public Collection<Person> getViewerUsers()
217    {
218        return this.viewerUsers;
219    }
220
221    /**
222     * <html>
223     * <head>
224     * <style>
225     * p {padding:0px; margin:0px;}
226     * </style>
227     * </head>
228     * <body>
229     * <p>
230     * Personne liées aux données : utilisateur du système, ou observateurs,
231     * responsable de données, etc.
232     * </p>
233     * <p>
234     * </p>
235     * <p>
236     * Les personnes liées aux activités professionnelles de pêche sont plutôt
237     * gérer dans <i>VesselPerson</i>.
238     * </p>
239     * <p>
240     * </p>
241     * <p>
242     * Nombre de lignes : 100
243     * </p>
244     * </body>
245     * </html>
246     * @param viewerUsersIn Collection<Person>
247     */
248    public void setViewerUsers(Collection<Person> viewerUsersIn)
249    {
250        this.viewerUsers = viewerUsersIn;
251    }
252
253    /**
254     * <html>
255     * <head>
256     * <style>
257     * p {padding:0px; margin:0px;}
258     * </style>
259     * </head>
260     * <body>
261     * <p>
262     * Personne liées aux données : utilisateur du système, ou observateurs,
263     * responsable de données, etc.
264     * </p>
265     * <p>
266     * </p>
267     * <p>
268     * Les personnes liées aux activités professionnelles de pêche sont plutôt
269     * gérer dans <i>VesselPerson</i>.
270     * </p>
271     * <p>
272     * </p>
273     * <p>
274     * Nombre de lignes : 100
275     * </p>
276     * </body>
277     * </html>
278     * @param elementToAdd Person
279     * @return <tt>true</tt> if this collection changed as a result of the
280     *         call
281     */
282    public boolean addViewerUsers(Person elementToAdd)
283    {
284        return this.viewerUsers.add(elementToAdd);
285    }
286
287    /**
288     * <html>
289     * <head>
290     * <style>
291     * p {padding:0px; margin:0px;}
292     * </style>
293     * </head>
294     * <body>
295     * <p>
296     * Personne liées aux données : utilisateur du système, ou observateurs,
297     * responsable de données, etc.
298     * </p>
299     * <p>
300     * </p>
301     * <p>
302     * Les personnes liées aux activités professionnelles de pêche sont plutôt
303     * gérer dans <i>VesselPerson</i>.
304     * </p>
305     * <p>
306     * </p>
307     * <p>
308     * Nombre de lignes : 100
309     * </p>
310     * </body>
311     * </html>
312     * @param elementToRemove Person
313     * @return <tt>true</tt> if this collection changed as a result of the
314     *         call
315     */
316    public boolean removeViewerUsers(Person elementToRemove)
317    {
318        return this.viewerUsers.remove(elementToRemove);
319    }
320
321    private Person managerUser;
322
323    /**
324     * <html>
325     * <head>
326     * <style>
327     * p {padding:0px; margin:0px;}
328     * </style>
329     * </head>
330     * <body>
331     * <p>
332     * Personne liées aux données : utilisateur du système, ou observateurs,
333     * responsable de données, etc.
334     * </p>
335     * <p>
336     * </p>
337     * <p>
338     * Les personnes liées aux activités professionnelles de pêche sont plutôt
339     * gérer dans <i>VesselPerson</i>.
340     * </p>
341     * <p>
342     * </p>
343     * <p>
344     * Nombre de lignes : 100
345     * </p>
346     * </body>
347     * </html>
348     * @return this.managerUser Person
349     */
350    public Person getManagerUser()
351    {
352        return this.managerUser;
353    }
354
355    /**
356     * <html>
357     * <head>
358     * <style>
359     * p {padding:0px; margin:0px;}
360     * </style>
361     * </head>
362     * <body>
363     * <p>
364     * Personne liées aux données : utilisateur du système, ou observateurs,
365     * responsable de données, etc.
366     * </p>
367     * <p>
368     * </p>
369     * <p>
370     * Les personnes liées aux activités professionnelles de pêche sont plutôt
371     * gérer dans <i>VesselPerson</i>.
372     * </p>
373     * <p>
374     * </p>
375     * <p>
376     * Nombre de lignes : 100
377     * </p>
378     * </body>
379     * </html>
380     * @param managerUserIn Person
381     */
382    public void setManagerUser(Person managerUserIn)
383    {
384        this.managerUser = managerUserIn;
385    }
386
387    private Person supervisorUser;
388
389    /**
390     * <html>
391     * <head>
392     * <style>
393     * p {padding:0px; margin:0px;}
394     * </style>
395     * </head>
396     * <body>
397     * <p>
398     * Personne liées aux données : utilisateur du système, ou observateurs,
399     * responsable de données, etc.
400     * </p>
401     * <p>
402     * </p>
403     * <p>
404     * Les personnes liées aux activités professionnelles de pêche sont plutôt
405     * gérer dans <i>VesselPerson</i>.
406     * </p>
407     * <p>
408     * </p>
409     * <p>
410     * Nombre de lignes : 100
411     * </p>
412     * </body>
413     * </html>
414     * @return this.supervisorUser Person
415     */
416    public Person getSupervisorUser()
417    {
418        return this.supervisorUser;
419    }
420
421    /**
422     * <html>
423     * <head>
424     * <style>
425     * p {padding:0px; margin:0px;}
426     * </style>
427     * </head>
428     * <body>
429     * <p>
430     * Personne liées aux données : utilisateur du système, ou observateurs,
431     * responsable de données, etc.
432     * </p>
433     * <p>
434     * </p>
435     * <p>
436     * Les personnes liées aux activités professionnelles de pêche sont plutôt
437     * gérer dans <i>VesselPerson</i>.
438     * </p>
439     * <p>
440     * </p>
441     * <p>
442     * Nombre de lignes : 100
443     * </p>
444     * </body>
445     * </html>
446     * @param supervisorUserIn Person
447     */
448    public void setSupervisorUser(Person supervisorUserIn)
449    {
450        this.supervisorUser = supervisorUserIn;
451    }
452
453    private ManagedDataType managedDataType;
454
455    /**
456     * @deprecated  Use Program2person instead
457     * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à
458     * la place
459     * les privilèves sur les programmes)
460     * Type de portefeuille. C'est ce type qui permet de déterminer si un utilisateur à les droits
461     * en
462     * saisie sur une fonctionnalité.
463     * Pour la V0, on trouvera les valeurs suivantes :
464     * - Calendrier d'activité
465     * - Marées observée en mer
466     * @return this.managedDataType ManagedDataType
467     */
468    public ManagedDataType getManagedDataType()
469    {
470        return this.managedDataType;
471    }
472
473    /**
474     * @deprecated  Use Program2person instead
475     * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à
476     * la place
477     * les privilèves sur les programmes)
478     * Type de portefeuille. C'est ce type qui permet de déterminer si un utilisateur à les droits
479     * en
480     * saisie sur une fonctionnalité.
481     * Pour la V0, on trouvera les valeurs suivantes :
482     * - Calendrier d'activité
483     * - Marées observée en mer
484     * @param managedDataTypeIn ManagedDataType
485     */
486    public void setManagedDataType(ManagedDataType managedDataTypeIn)
487    {
488        this.managedDataType = managedDataTypeIn;
489    }
490
491    private Collection<ManagedDataTransfer> managedDataTransfers = new HashSet<ManagedDataTransfer>();
492
493    /**
494     * @deprecated Use Program2person instead
495     * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à
496     * la place
497     * les privilèves sur les programmes)
498     * Cette entité contient les informations indiquant qu'un portefeuille a les mêmes droit qu'un
499     * autre.
500     * Cette information est utilisée pour la saisie pour que des données saisies par un service
501     * puissent
502     * toujours être gérées lorsque le service n'existe plus et que ses agents se retrouvent dans
503     * d'autres
504     * services
505     * @return this.managedDataTransfers Collection<ManagedDataTransfer>
506     */
507    public Collection<ManagedDataTransfer> getManagedDataTransfers()
508    {
509        return this.managedDataTransfers;
510    }
511
512    /**
513     * @deprecated Use Program2person instead
514     * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à
515     * la place
516     * les privilèves sur les programmes)
517     * Cette entité contient les informations indiquant qu'un portefeuille a les mêmes droit qu'un
518     * autre.
519     * Cette information est utilisée pour la saisie pour que des données saisies par un service
520     * puissent
521     * toujours être gérées lorsque le service n'existe plus et que ses agents se retrouvent dans
522     * d'autres
523     * services
524     * @param managedDataTransfersIn Collection<ManagedDataTransfer>
525     */
526    public void setManagedDataTransfers(Collection<ManagedDataTransfer> managedDataTransfersIn)
527    {
528        this.managedDataTransfers = managedDataTransfersIn;
529    }
530
531    /**
532     * @deprecated Use Program2person instead
533     * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à
534     * la place
535     * les privilèves sur les programmes)
536     * Cette entité contient les informations indiquant qu'un portefeuille a les mêmes droit qu'un
537     * autre.
538     * Cette information est utilisée pour la saisie pour que des données saisies par un service
539     * puissent
540     * toujours être gérées lorsque le service n'existe plus et que ses agents se retrouvent dans
541     * d'autres
542     * services
543     * @param elementToAdd ManagedDataTransfer
544     * @return <tt>true</tt> if this collection changed as a result of the
545     *         call
546     */
547    public boolean addManagedDataTransfers(ManagedDataTransfer elementToAdd)
548    {
549        return this.managedDataTransfers.add(elementToAdd);
550    }
551
552    /**
553     * @deprecated Use Program2person instead
554     * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à
555     * la place
556     * les privilèves sur les programmes)
557     * Cette entité contient les informations indiquant qu'un portefeuille a les mêmes droit qu'un
558     * autre.
559     * Cette information est utilisée pour la saisie pour que des données saisies par un service
560     * puissent
561     * toujours être gérées lorsque le service n'existe plus et que ses agents se retrouvent dans
562     * d'autres
563     * services
564     * @param elementToRemove ManagedDataTransfer
565     * @return <tt>true</tt> if this collection changed as a result of the
566     *         call
567     */
568    public boolean removeManagedDataTransfers(ManagedDataTransfer elementToRemove)
569    {
570        return this.managedDataTransfers.remove(elementToRemove);
571    }
572
573    /**
574     * Returns <code>true</code> if the argument is an ManagedData instance and all identifiers for this entity
575     * equal the identifiers of the argument entity. Returns <code>false</code> otherwise.
576     */
577    @Override
578    public boolean equals(Object object)
579    {
580        if (this == object)
581        {
582            return true;
583        }
584        if (!(object instanceof ManagedData))
585        {
586            return false;
587        }
588        final ManagedData that = (ManagedData)object;
589        if (this.id == null || that.getId() == null || !this.id.equals(that.getId()))
590        {
591            return false;
592        }
593        return true;
594    }
595
596    /**
597     * Returns a hash code based on this entity's identifiers.
598     */
599    @Override
600    public int hashCode()
601    {
602        int hashCode = 0;
603        hashCode = 29 * hashCode + (this.id == null ? 0 : this.id.hashCode());
604
605        return hashCode;
606    }
607
608    /**
609     * Constructs new instances of {@link ManagedData}.
610     */
611    public static final class Factory
612    {
613        /**
614         * Constructs a new instance of {@link ManagedData}.
615         * @return new ManagedDataImpl()
616         */
617        public static ManagedData newInstance()
618        {
619            return new ManagedDataImpl();
620        }
621
622        /**
623         * Constructs a new instance of {@link ManagedData}, taking all required and/or
624         * read-only properties as arguments, except for identifiers.
625         * @param updateDate Timestamp
626         * @param managerUser Person
627         * @param managedDataType ManagedDataType
628         * @return newInstance
629         */
630        public static ManagedData newInstance(Timestamp updateDate, Person managerUser, ManagedDataType managedDataType)
631        {
632            final ManagedData entity = new ManagedDataImpl();
633            entity.setUpdateDate(updateDate);
634            entity.setManagerUser(managerUser);
635            entity.setManagedDataType(managedDataType);
636            return entity;
637        }
638
639        /**
640         * Constructs a new instance of {@link ManagedData}, taking all possible properties
641         * (except the identifier(s))as arguments.
642         * @param updateDate Timestamp
643         * @param vesselManagePeriods Collection<VesselManagePeriod>
644         * @param viewerUsers Collection<Person>
645         * @param managerUser Person
646         * @param supervisorUser Person
647         * @param managedDataType ManagedDataType
648         * @param managedDataTransfers Collection<ManagedDataTransfer>
649         * @return newInstance ManagedData
650         */
651        public static ManagedData newInstance(Timestamp updateDate, Collection<VesselManagePeriod> vesselManagePeriods, Collection<Person> viewerUsers, Person managerUser, Person supervisorUser, ManagedDataType managedDataType, Collection<ManagedDataTransfer> managedDataTransfers)
652        {
653            final ManagedData entity = new ManagedDataImpl();
654            entity.setUpdateDate(updateDate);
655            entity.setVesselManagePeriods(vesselManagePeriods);
656            entity.setViewerUsers(viewerUsers);
657            entity.setManagerUser(managerUser);
658            entity.setSupervisorUser(supervisorUser);
659            entity.setManagedDataType(managedDataType);
660            entity.setManagedDataTransfers(managedDataTransfers);
661            return entity;
662        }
663    }
664
665    /**
666     * @see Comparable#compareTo
667     */
668    public int compareTo(ManagedData o)
669    {
670        int cmp = 0;
671        if (this.getId() != null)
672        {
673            cmp = this.getId().compareTo(o.getId());
674        }
675        else
676        {
677            if (this.getUpdateDate() != null)
678            {
679                cmp = (cmp != 0 ? cmp : this.getUpdateDate().compareTo(o.getUpdateDate()));
680            }
681        }
682        return cmp;
683    }
684// HibernateEntity.vsl merge-point
685// ManagedData.java merge-point
686}