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 fr.ifremer.adagio.core.dao.administration.programStrategy.Program;
032import fr.ifremer.adagio.core.dao.data.vessel.Vessel;
033import fr.ifremer.adagio.core.dao.referential.ObjectType;
034import java.io.Serializable;
035import java.sql.Timestamp;
036
037/**
038 * Droits calculés pour un utilisateur à partir d'autres entités implémentant la gestion des droits.
039 * Le but est l'amélioration des performances de synchronisation entre bases locale et distante. Les
040 * droits sont calculés en début d'importation des données et n'ont pas à être recalculés pour
041 * chaque donnée pour laquelle des droits sont appliqués.
042 * Créé d'après l'étude sur l'amélioration des performances V3 (cf. mantis 10528).
043 * Remplie à partir de la procédure PL/SQL F_FILL_PERSON_SESSION
044 */
045// HibernateEntity.vsl annotations merge-point
046public abstract class PersonSessionVessel
047    implements Serializable, Comparable<PersonSessionVessel>
048{
049    /**
050     * The serial version UID of this class. Needed for serialization.
051     */
052    private static final long serialVersionUID = -64174703645674439L;
053
054    // Generate 8 attributes
055    private Long id;
056
057    /**
058     * 
059     * @return this.id Long
060     */
061    public Long getId()
062    {
063        return this.id;
064    }
065
066    /**
067     * 
068     * @param idIn Long
069     */
070    public void setId(Long idIn)
071    {
072        this.id = idIn;
073    }
074
075    private Timestamp startDateTime;
076
077    /**
078     * 
079     * @return this.startDateTime Timestamp
080     */
081    public Timestamp getStartDateTime()
082    {
083        return this.startDateTime;
084    }
085
086    /**
087     * 
088     * @param startDateTimeIn Timestamp
089     */
090    public void setStartDateTime(Timestamp startDateTimeIn)
091    {
092        this.startDateTime = startDateTimeIn;
093    }
094
095    private Timestamp endDateTime;
096
097    /**
098     * Attribut obligatoire : lorsque la valeur n'est pas renseigné dans les portefeuilles on lui
099     * assigne une valeur par défaut suprérieure à toute autre date.
100     * @return this.endDateTime Timestamp
101     */
102    public Timestamp getEndDateTime()
103    {
104        return this.endDateTime;
105    }
106
107    /**
108     * Attribut obligatoire : lorsque la valeur n'est pas renseigné dans les portefeuilles on lui
109     * assigne une valeur par défaut suprérieure à toute autre date.
110     * @param endDateTimeIn Timestamp
111     */
112    public void setEndDateTime(Timestamp endDateTimeIn)
113    {
114        this.endDateTime = endDateTimeIn;
115    }
116
117    private Boolean readVessel;
118
119    /**
120     * 
121     * @return this.readVessel Boolean
122     */
123    public Boolean isReadVessel()
124    {
125        return this.readVessel;
126    }
127
128    /**
129     * 
130     * @param readVesselIn Boolean
131     */
132    public void setReadVessel(Boolean readVesselIn)
133    {
134        this.readVessel = readVesselIn;
135    }
136
137    private Boolean writeData;
138
139    /**
140     * 
141     * @return this.writeData Boolean
142     */
143    public Boolean isWriteData()
144    {
145        return this.writeData;
146    }
147
148    /**
149     * 
150     * @param writeDataIn Boolean
151     */
152    public void setWriteData(Boolean writeDataIn)
153    {
154        this.writeData = writeDataIn;
155    }
156
157    private Boolean validateData;
158
159    /**
160     * L'utilisateur a t il les droits de validation ? (renseigné à partir des privilèges sur les
161     * programmes)
162     * @return this.validateData Boolean
163     */
164    public Boolean getValidateData()
165    {
166        return this.validateData;
167    }
168
169    /**
170     * L'utilisateur a t il les droits de validation ? (renseigné à partir des privilèges sur les
171     * programmes)
172     * @param validateDataIn Boolean
173     */
174    public void setValidateData(Boolean validateDataIn)
175    {
176        this.validateData = validateDataIn;
177    }
178
179    private Boolean readData;
180
181    /**
182     * 
183     * @return this.readData Boolean
184     */
185    public Boolean isReadData()
186    {
187        return this.readData;
188    }
189
190    /**
191     * 
192     * @param readDataIn Boolean
193     */
194    public void setReadData(Boolean readDataIn)
195    {
196        this.readData = readDataIn;
197    }
198
199    private Timestamp updateDate;
200
201    /**
202     * 
203     * @return this.updateDate Timestamp
204     */
205    public Timestamp getUpdateDate()
206    {
207        return this.updateDate;
208    }
209
210    /**
211     * 
212     * @param updateDateIn Timestamp
213     */
214    public void setUpdateDate(Timestamp updateDateIn)
215    {
216        this.updateDate = updateDateIn;
217    }
218
219    // Generate 4 associations
220    private ObjectType objectType;
221
222    /**
223     * Liste des types d'objets qui peuvent etre associés à la photo ou à un fichier attaché. Cette
224     * liste
225     * ne peut pas etre modifiée par l'utilisateur.
226     * généralement, il s'agit des noms des tables (en majuscule + underscore)
227     * @return this.objectType ObjectType
228     */
229    public ObjectType getObjectType()
230    {
231        return this.objectType;
232    }
233
234    /**
235     * Liste des types d'objets qui peuvent etre associés à la photo ou à un fichier attaché. Cette
236     * liste
237     * ne peut pas etre modifiée par l'utilisateur.
238     * généralement, il s'agit des noms des tables (en majuscule + underscore)
239     * @param objectTypeIn ObjectType
240     */
241    public void setObjectType(ObjectType objectTypeIn)
242    {
243        this.objectType = objectTypeIn;
244    }
245
246    private Program program;
247
248    /**
249     * Programme d'observation à l'origine d'une collecte de données.
250     * Désigne les activités qui sont à l'origine de la collecte d'un ensemble cohérent de données,
251     * que ce
252     * soit pour des collectes continues (marées observées en mer, SIPA) ou pour des études limitées
253     * dans
254     * le temps. La quantité de données rattachées à un programme peut être variable, selon qu'il
255     * s'agit
256     * d'une activité longue ou intensive, ou d'une opération plus ponctuelle (étude) mais toujours
257     * mise en
258     * œuvre selon un schéma décidé à l'avance.
259     * Exemple de programmes d'observations :
260     * - SIH-OBSMER (marées observées en mer)
261     * - SIH-STATPECHE (enquete d'activité et d'effort...)
262     * - SIPA : données déclaratives transmises par la DPMA
263     * - VMS : données satellitaires
264     * - OFIMER : données du SI de l'OFIMER
265     * @return this.program Program
266     */
267    public Program getProgram()
268    {
269        return this.program;
270    }
271
272    /**
273     * Programme d'observation à l'origine d'une collecte de données.
274     * Désigne les activités qui sont à l'origine de la collecte d'un ensemble cohérent de données,
275     * que ce
276     * soit pour des collectes continues (marées observées en mer, SIPA) ou pour des études limitées
277     * dans
278     * le temps. La quantité de données rattachées à un programme peut être variable, selon qu'il
279     * s'agit
280     * d'une activité longue ou intensive, ou d'une opération plus ponctuelle (étude) mais toujours
281     * mise en
282     * œuvre selon un schéma décidé à l'avance.
283     * Exemple de programmes d'observations :
284     * - SIH-OBSMER (marées observées en mer)
285     * - SIH-STATPECHE (enquete d'activité et d'effort...)
286     * - SIPA : données déclaratives transmises par la DPMA
287     * - VMS : données satellitaires
288     * - OFIMER : données du SI de l'OFIMER
289     * @param programIn Program
290     */
291    public void setProgram(Program programIn)
292    {
293        this.program = programIn;
294    }
295
296    private PersonSession personSession;
297
298    /**
299     * Tête de grappe de droits calculés pour un utilisateur à partir d'autres entités implémentant
300     * la
301     * gestion des droits. Le but est l'amélioration des performances de synchronisation entre bases
302     * locale
303     * et distante. Les droits sont calculés en début d'importation des données et n'ont pas à être
304     * recalculés pour chaque donnée pour laquelle des droits sont appliqués.
305     * Créé d'après l'étude sur l'amélioration des performances V3 (cf. mantis 10528).
306     * @return this.personSession PersonSession
307     */
308    public PersonSession getPersonSession()
309    {
310        return this.personSession;
311    }
312
313    /**
314     * Tête de grappe de droits calculés pour un utilisateur à partir d'autres entités implémentant
315     * la
316     * gestion des droits. Le but est l'amélioration des performances de synchronisation entre bases
317     * locale
318     * et distante. Les droits sont calculés en début d'importation des données et n'ont pas à être
319     * recalculés pour chaque donnée pour laquelle des droits sont appliqués.
320     * Créé d'après l'étude sur l'amélioration des performances V3 (cf. mantis 10528).
321     * @param personSessionIn PersonSession
322     */
323    public void setPersonSession(PersonSession personSessionIn)
324    {
325        this.personSession = personSessionIn;
326    }
327
328    private Vessel vessel;
329
330    /**
331     * Navire, ou plus généralement un usager de la ressource.
332     * Peut etre un navire de peche professionnel ou non, un navire scientifique, un pêcheur à pied,
333     * un
334     * groupement de navires, etc.
335     * @return this.vessel Vessel
336     */
337    public Vessel getVessel()
338    {
339        return this.vessel;
340    }
341
342    /**
343     * Navire, ou plus généralement un usager de la ressource.
344     * Peut etre un navire de peche professionnel ou non, un navire scientifique, un pêcheur à pied,
345     * un
346     * groupement de navires, etc.
347     * @param vesselIn Vessel
348     */
349    public void setVessel(Vessel vesselIn)
350    {
351        this.vessel = vesselIn;
352    }
353
354    /**
355     * Returns <code>true</code> if the argument is an PersonSessionVessel instance and all identifiers for this entity
356     * equal the identifiers of the argument entity. Returns <code>false</code> otherwise.
357     */
358    @Override
359    public boolean equals(Object object)
360    {
361        if (this == object)
362        {
363            return true;
364        }
365        if (!(object instanceof PersonSessionVessel))
366        {
367            return false;
368        }
369        final PersonSessionVessel that = (PersonSessionVessel)object;
370        if (this.id == null || that.getId() == null || !this.id.equals(that.getId()))
371        {
372            return false;
373        }
374        return true;
375    }
376
377    /**
378     * Returns a hash code based on this entity's identifiers.
379     */
380    @Override
381    public int hashCode()
382    {
383        int hashCode = 0;
384        hashCode = 29 * hashCode + (this.id == null ? 0 : this.id.hashCode());
385
386        return hashCode;
387    }
388
389    /**
390     * Constructs new instances of {@link PersonSessionVessel}.
391     */
392    public static final class Factory
393    {
394        /**
395         * Constructs a new instance of {@link PersonSessionVessel}.
396         * @return new PersonSessionVesselImpl()
397         */
398        public static PersonSessionVessel newInstance()
399        {
400            return new PersonSessionVesselImpl();
401        }
402
403        /**
404         * Constructs a new instance of {@link PersonSessionVessel}, taking all required and/or
405         * read-only properties as arguments, except for identifiers.
406         * @param startDateTime Timestamp
407         * @param endDateTime Timestamp
408         * @param readVessel Boolean
409         * @param writeData Boolean
410         * @param readData Boolean
411         * @param updateDate Timestamp
412         * @param objectType ObjectType
413         * @param program Program
414         * @param personSession PersonSession
415         * @param vessel Vessel
416         * @return newInstance
417         */
418        public static PersonSessionVessel newInstance(Timestamp startDateTime, Timestamp endDateTime, Boolean readVessel, Boolean writeData, Boolean readData, Timestamp updateDate, ObjectType objectType, Program program, PersonSession personSession, Vessel vessel)
419        {
420            final PersonSessionVessel entity = new PersonSessionVesselImpl();
421            entity.setStartDateTime(startDateTime);
422            entity.setEndDateTime(endDateTime);
423            entity.setReadVessel(readVessel);
424            entity.setWriteData(writeData);
425            entity.setReadData(readData);
426            entity.setUpdateDate(updateDate);
427            entity.setObjectType(objectType);
428            entity.setProgram(program);
429            entity.setPersonSession(personSession);
430            entity.setVessel(vessel);
431            return entity;
432        }
433
434        /**
435         * Constructs a new instance of {@link PersonSessionVessel}, taking all possible properties
436         * (except the identifier(s))as arguments.
437         * @param startDateTime Timestamp
438         * @param endDateTime Timestamp
439         * @param readVessel Boolean
440         * @param writeData Boolean
441         * @param validateData Boolean
442         * @param readData Boolean
443         * @param updateDate Timestamp
444         * @param objectType ObjectType
445         * @param program Program
446         * @param personSession PersonSession
447         * @param vessel Vessel
448         * @return newInstance PersonSessionVessel
449         */
450        public static PersonSessionVessel newInstance(Timestamp startDateTime, Timestamp endDateTime, Boolean readVessel, Boolean writeData, Boolean validateData, Boolean readData, Timestamp updateDate, ObjectType objectType, Program program, PersonSession personSession, Vessel vessel)
451        {
452            final PersonSessionVessel entity = new PersonSessionVesselImpl();
453            entity.setStartDateTime(startDateTime);
454            entity.setEndDateTime(endDateTime);
455            entity.setReadVessel(readVessel);
456            entity.setWriteData(writeData);
457            entity.setValidateData(validateData);
458            entity.setReadData(readData);
459            entity.setUpdateDate(updateDate);
460            entity.setObjectType(objectType);
461            entity.setProgram(program);
462            entity.setPersonSession(personSession);
463            entity.setVessel(vessel);
464            return entity;
465        }
466    }
467
468    /**
469     * @see Comparable#compareTo
470     */
471    public int compareTo(PersonSessionVessel o)
472    {
473        int cmp = 0;
474        if (this.getId() != null)
475        {
476            cmp = this.getId().compareTo(o.getId());
477        }
478        else
479        {
480            if (this.getStartDateTime() != null)
481            {
482                cmp = (cmp != 0 ? cmp : this.getStartDateTime().compareTo(o.getStartDateTime()));
483            }
484            if (this.getEndDateTime() != null)
485            {
486                cmp = (cmp != 0 ? cmp : this.getEndDateTime().compareTo(o.getEndDateTime()));
487            }
488            if (this.isReadVessel() != null)
489            {
490                cmp = (cmp != 0 ? cmp : this.isReadVessel().compareTo(o.isReadVessel()));
491            }
492            if (this.isWriteData() != null)
493            {
494                cmp = (cmp != 0 ? cmp : this.isWriteData().compareTo(o.isWriteData()));
495            }
496            if (this.getValidateData() != null)
497            {
498                cmp = (cmp != 0 ? cmp : this.getValidateData().compareTo(o.getValidateData()));
499            }
500            if (this.isReadData() != null)
501            {
502                cmp = (cmp != 0 ? cmp : this.isReadData().compareTo(o.isReadData()));
503            }
504            if (this.getUpdateDate() != null)
505            {
506                cmp = (cmp != 0 ? cmp : this.getUpdateDate().compareTo(o.getUpdateDate()));
507            }
508        }
509        return cmp;
510    }
511// HibernateEntity.vsl merge-point
512// PersonSessionVessel.java merge-point
513}