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.data.vessel.Vessel;
032import java.io.Serializable;
033import java.util.Date;
034
035/**
036 * @deprecated  Use Program2person instead
037 * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à la
038 * place les privilèves sur les programmes)
039 * Définit la présence de navires sur un portefeuille pour une période début/fin.
040 * La période utilisée définit la date des données que peut saisir/modifier/visualiser
041 * l'utilisateur, en fonction de ses droits.
042 * Exemple :
043 * Si un utilisateur a un navire A dans un portefeuille pour la période du 01/01/2002 au 31/12/2002,
044 * il peut saisir des données même en 2004, si la date de donnée saisie est pendant l'année 2002.
045 */
046// HibernateEntity.vsl annotations merge-point
047public abstract class VesselManagePeriod
048    implements Serializable, Comparable<VesselManagePeriod>
049{
050    /**
051     * The serial version UID of this class. Needed for serialization.
052     */
053    private static final long serialVersionUID = -3872631416617531452L;
054
055    private VesselManagePeriodPK vesselManagePeriodPk;
056
057    /**
058     * Get the composite primary key identifier class
059     * @return vesselManagePeriodPk
060     */
061    public VesselManagePeriodPK getVesselManagePeriodPk()
062    {
063        return this.vesselManagePeriodPk;
064    }
065
066    /**
067     * Set the composite primary key identifier class
068     * @param vesselManagePeriodPkIn
069     */
070    public void setVesselManagePeriodPk(VesselManagePeriodPK vesselManagePeriodPkIn) {
071        this.vesselManagePeriodPk = vesselManagePeriodPkIn;
072    }
073
074    // Generate 2 attributes
075    /**
076     * Date début d'appartenance d'un navire à un portefeuille.
077     * @return this.startDateTime Date
078     */
079    public Date getStartDateTime()
080    {
081        return this.getVesselManagePeriodPk().getStartDateTime();
082    }
083
084    /**
085     * Date début d'appartenance d'un navire à un portefeuille.
086     * @param startDateTimeIn Date
087     */
088    public void setStartDateTime(Date startDateTimeIn)
089    {
090        this.getVesselManagePeriodPk().setStartDateTime(startDateTimeIn);
091    }
092
093    private Date endDateTime;
094
095    /**
096     * Date fin d'appartenance d'un navire à un portefeuille.
097     * @return this.endDateTime Date
098     */
099    public Date getEndDateTime()
100    {
101        return this.endDateTime;
102    }
103
104    /**
105     * Date fin d'appartenance d'un navire à un portefeuille.
106     * @param endDateTimeIn Date
107     */
108    public void setEndDateTime(Date endDateTimeIn)
109    {
110        this.endDateTime = endDateTimeIn;
111    }
112
113    // Generate 2 associations
114    private Vessel vessel;
115
116    /**
117     * Navire, ou plus généralement un usager de la ressource.
118     * Peut etre un navire de peche professionnel ou non, un navire scientifique, un pêcheur à pied,
119     * un
120     * groupement de navires, etc.
121     * @return this.vessel Vessel
122     */
123    public Vessel getVessel()
124    {
125        return this.vessel;
126    }
127
128    /**
129     * Navire, ou plus généralement un usager de la ressource.
130     * Peut etre un navire de peche professionnel ou non, un navire scientifique, un pêcheur à pied,
131     * un
132     * groupement de navires, etc.
133     * @param vesselIn Vessel
134     */
135    public void setVessel(Vessel vesselIn)
136    {
137        this.vessel = vesselIn;
138    }
139
140    private ManagedData managedData;
141
142    /**
143     * @deprecated  Use Program2person instead
144     * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à
145     * la place
146     * les privilèves sur les programmes)
147     * Portefeuille de navires.
148     * Il peut s'agir d'un portefeuille de différent type (enquete d'activité, marées observées en
149     * mer,
150     * campagne en mer, etc.)
151     * Gestion des droits :
152     * - Un portefeuille est géré par un seul utilisateur, qui à les droits de lecture/écriture.
153     * - Un portefeuille peut etre supervisé par une tierce personne, qui aura également les droits
154     * de
155     * lecture/écriture sur les données du portefeuille.
156     * - Un portefeuille peut avoir plusieurs utilisateurs avec des droits de consultation
157     * uniquement
158     * (lecture seule) sur ces données.
159     * @return this.managedData ManagedData
160     */
161    public ManagedData getManagedData()
162    {
163        return this.managedData;
164    }
165
166    /**
167     * @deprecated  Use Program2person instead
168     * ATTENTION : NE PLUS UTILISER les portefeuilles dans les nouveaux développements (utiliser à
169     * la place
170     * les privilèves sur les programmes)
171     * Portefeuille de navires.
172     * Il peut s'agir d'un portefeuille de différent type (enquete d'activité, marées observées en
173     * mer,
174     * campagne en mer, etc.)
175     * Gestion des droits :
176     * - Un portefeuille est géré par un seul utilisateur, qui à les droits de lecture/écriture.
177     * - Un portefeuille peut etre supervisé par une tierce personne, qui aura également les droits
178     * de
179     * lecture/écriture sur les données du portefeuille.
180     * - Un portefeuille peut avoir plusieurs utilisateurs avec des droits de consultation
181     * uniquement
182     * (lecture seule) sur ces données.
183     * @param managedDataIn ManagedData
184     */
185    public void setManagedData(ManagedData managedDataIn)
186    {
187        this.managedData = managedDataIn;
188    }
189
190    /**
191     * Returns <code>true</code> if the argument is an VesselManagePeriod instance and all identifiers for this entity
192     * equal the identifiers of the argument entity. Returns <code>false</code> otherwise.
193     */
194    @Override
195    public boolean equals(Object object)
196    {
197        if (this == object)
198        {
199            return true;
200        }
201        if (!(object instanceof VesselManagePeriod))
202        {
203            return false;
204        }
205        final VesselManagePeriod that = (VesselManagePeriod)object;
206        if (this.vesselManagePeriodPk == null || that.vesselManagePeriodPk == null || !this.vesselManagePeriodPk.equals(that.vesselManagePeriodPk))
207        {
208            return false;
209        }
210        return true;
211    }
212
213    /**
214     * Returns a hash code based on this entity's identifiers.
215     */
216    @Override
217    public int hashCode()
218    {
219        int hashCode = 0;
220        hashCode = 29 * hashCode + (this.vesselManagePeriodPk == null ? 0 : this.vesselManagePeriodPk.hashCode());
221
222        return hashCode;
223    }
224
225    /**
226     * Constructs new instances of {@link VesselManagePeriod}.
227     */
228    public static final class Factory
229    {
230        /**
231         * Constructs a new instance of {@link VesselManagePeriod}.
232         * @return new VesselManagePeriodImpl()
233         */
234        public static VesselManagePeriod newInstance()
235        {
236            return new VesselManagePeriodImpl();
237        }
238
239        /**
240         * Constructs a new instance of {@link VesselManagePeriod}, taking all required and/or
241         * read-only properties as arguments, except for identifiers.
242         * @param vessel Vessel
243         * @param managedData ManagedData
244         * @return newInstance
245         */
246        public static VesselManagePeriod newInstance(Vessel vessel, ManagedData managedData)
247        {
248            final VesselManagePeriod entity = new VesselManagePeriodImpl();
249            entity.setVessel(vessel);
250            entity.setManagedData(managedData);
251            return entity;
252        }
253
254        /**
255         * Constructs a new instance of {@link VesselManagePeriod}, taking all possible properties
256         * (except the identifier(s))as arguments.
257         * @param endDateTime Date
258         * @param vessel Vessel
259         * @param managedData ManagedData
260         * @return newInstance VesselManagePeriod
261         */
262        public static VesselManagePeriod newInstance(Date endDateTime, Vessel vessel, ManagedData managedData)
263        {
264            final VesselManagePeriod entity = new VesselManagePeriodImpl();
265            entity.setEndDateTime(endDateTime);
266            entity.setVessel(vessel);
267            entity.setManagedData(managedData);
268            return entity;
269        }
270    }
271
272    /**
273     * @see Comparable#compareTo
274     */
275    public int compareTo(VesselManagePeriod o)
276    {
277        int cmp = 0;
278        if (this.getVesselManagePeriodPk() != null)
279        {
280            cmp = this.getVesselManagePeriodPk().compareTo(o.getVesselManagePeriodPk());
281        }
282        else
283        {
284            if (this.getEndDateTime() != null)
285            {
286                cmp = (cmp != 0 ? cmp : this.getEndDateTime().compareTo(o.getEndDateTime()));
287            }
288        }
289        return cmp;
290    }
291// HibernateEntity.vsl merge-point
292// VesselManagePeriod.java merge-point
293}