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.referential.pmfm;
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.referential.Status;
032import java.io.Serializable;
033import java.sql.Timestamp;
034import java.util.Collection;
035import java.util.Date;
036import java.util.HashSet;
037
038/**
039 * Le support est un composant du milieu sur lequel porte l'investigation. Les supports sont, par
040 * exemple :
041 * - un engin,
042 * - la mer (ou autre environnement),
043 * - bivalve (moule, huître, coque...)
044 * - crustacé (crevette...)
045 * - poisson (merlu, sardine...)
046 * - gastéropode (bigorneau, littorine...)
047 * - echinoderme    (oursin...)
048 * - masse d'eau, eau brute
049 * - eau filtrée
050 * - ...
051 * Le support ne correspond pas au support réellement analysé. En effet, il peut s'agir d'une
052 * analyse sur une fraction du support (par exemple, pour le poisson, l'otolite,… ou pour un engin,
053 * le bras).
054 * Nombre de lignes : 20
055 */
056// HibernateEntity.vsl annotations merge-point
057public abstract class Matrix
058    implements Serializable, Comparable<Matrix>
059{
060    /**
061     * The serial version UID of this class. Needed for serialization.
062     */
063    private static final long serialVersionUID = -2762738603095957665L;
064
065    // Generate 6 attributes
066    private Integer id;
067
068    /**
069     * Identifiant numérique unique du support. Généré par le système.
070     * @return this.id Integer
071     */
072    public Integer getId()
073    {
074        return this.id;
075    }
076
077    /**
078     * Identifiant numérique unique du support. Généré par le système.
079     * @param idIn Integer
080     */
081    public void setId(Integer idIn)
082    {
083        this.id = idIn;
084    }
085
086    private String name;
087
088    /**
089     * Description courte du support.
090     * @return this.name String
091     */
092    public String getName()
093    {
094        return this.name;
095    }
096
097    /**
098     * Description courte du support.
099     * @param nameIn String
100     */
101    public void setName(String nameIn)
102    {
103        this.name = nameIn;
104    }
105
106    private String description;
107
108    /**
109     * Description longue du support.
110     * @return this.description String
111     */
112    public String getDescription()
113    {
114        return this.description;
115    }
116
117    /**
118     * Description longue du support.
119     * @param descriptionIn String
120     */
121    public void setDescription(String descriptionIn)
122    {
123        this.description = descriptionIn;
124    }
125
126    private Date creationDate;
127
128    /**
129     * Date de création système du support. Cette date est renseignée automatiquement.
130     * @return this.creationDate Date
131     */
132    public Date getCreationDate()
133    {
134        return this.creationDate;
135    }
136
137    /**
138     * Date de création système du support. Cette date est renseignée automatiquement.
139     * @param creationDateIn Date
140     */
141    public void setCreationDate(Date creationDateIn)
142    {
143        this.creationDate = creationDateIn;
144    }
145
146    private String comments;
147
148    /**
149     * 
150     * @return this.comments String
151     */
152    public String getComments()
153    {
154        return this.comments;
155    }
156
157    /**
158     * 
159     * @param commentsIn String
160     */
161    public void setComments(String commentsIn)
162    {
163        this.comments = commentsIn;
164    }
165
166    private Timestamp updateDate;
167
168    /**
169     * Date de mise à jour système du support. Cette date est renseignée automatiquement.
170     * @return this.updateDate Timestamp
171     */
172    public Timestamp getUpdateDate()
173    {
174        return this.updateDate;
175    }
176
177    /**
178     * Date de mise à jour système du support. Cette date est renseignée automatiquement.
179     * @param updateDateIn Timestamp
180     */
181    public void setUpdateDate(Timestamp updateDateIn)
182    {
183        this.updateDate = updateDateIn;
184    }
185
186    // Generate 4 associations
187    private Collection<Fraction> fractions = new HashSet<Fraction>();
188
189    /**
190     * Une fraction analysée est un composant du support sur lequel porte l'analyse.
191     * Les fractions analysées sont généralement des fractions "organiques", au sens d'une
192     * classification
193     * par partie d'un même organisme,
194     * ex : foie, écaille, reins, dents, otolithe...
195     * Elles peuvent aussi être un sous ensemble quelconque du support. Par exemple, dans le cas des
196     * engins
197     * : le bras, …
198     * Les fractions dites "systématiques", au sens d'une classification systématique (ex : poisson
199     * :
200     * Cyprinidae / Cyprinus / Cyprinus carpio...) ne sont pas considérées comme des fractions au
201     * sens de
202     * l'entité, mais comme une précision apportée sur l'individu. Représentées par les entités
203     * "taxon" et
204     * "groupe de taxon", elles ne font pas partie de la liste des fractions analysées.
205     * Etant une liste de référence, une procédure stricte pour la création de nouvelles fractions
206     * analysées pourra être mise en place (On pourra s'inspirer des procédures utilisées dans
207     * Quadrige2,
208     * qui utilisent le référentiel national du SANDRE).
209     * Nombre de lignes : 10
210     * @return this.fractions Collection<Fraction>
211     */
212    public Collection<Fraction> getFractions()
213    {
214        return this.fractions;
215    }
216
217    /**
218     * Une fraction analysée est un composant du support sur lequel porte l'analyse.
219     * Les fractions analysées sont généralement des fractions "organiques", au sens d'une
220     * classification
221     * par partie d'un même organisme,
222     * ex : foie, écaille, reins, dents, otolithe...
223     * Elles peuvent aussi être un sous ensemble quelconque du support. Par exemple, dans le cas des
224     * engins
225     * : le bras, …
226     * Les fractions dites "systématiques", au sens d'une classification systématique (ex : poisson
227     * :
228     * Cyprinidae / Cyprinus / Cyprinus carpio...) ne sont pas considérées comme des fractions au
229     * sens de
230     * l'entité, mais comme une précision apportée sur l'individu. Représentées par les entités
231     * "taxon" et
232     * "groupe de taxon", elles ne font pas partie de la liste des fractions analysées.
233     * Etant une liste de référence, une procédure stricte pour la création de nouvelles fractions
234     * analysées pourra être mise en place (On pourra s'inspirer des procédures utilisées dans
235     * Quadrige2,
236     * qui utilisent le référentiel national du SANDRE).
237     * Nombre de lignes : 10
238     * @param fractionsIn Collection<Fraction>
239     */
240    public void setFractions(Collection<Fraction> fractionsIn)
241    {
242        this.fractions = fractionsIn;
243    }
244
245    /**
246     * Une fraction analysée est un composant du support sur lequel porte l'analyse.
247     * Les fractions analysées sont généralement des fractions "organiques", au sens d'une
248     * classification
249     * par partie d'un même organisme,
250     * ex : foie, écaille, reins, dents, otolithe...
251     * Elles peuvent aussi être un sous ensemble quelconque du support. Par exemple, dans le cas des
252     * engins
253     * : le bras, …
254     * Les fractions dites "systématiques", au sens d'une classification systématique (ex : poisson
255     * :
256     * Cyprinidae / Cyprinus / Cyprinus carpio...) ne sont pas considérées comme des fractions au
257     * sens de
258     * l'entité, mais comme une précision apportée sur l'individu. Représentées par les entités
259     * "taxon" et
260     * "groupe de taxon", elles ne font pas partie de la liste des fractions analysées.
261     * Etant une liste de référence, une procédure stricte pour la création de nouvelles fractions
262     * analysées pourra être mise en place (On pourra s'inspirer des procédures utilisées dans
263     * Quadrige2,
264     * qui utilisent le référentiel national du SANDRE).
265     * Nombre de lignes : 10
266     * @param elementToAdd Fraction
267     * @return <tt>true</tt> if this collection changed as a result of the
268     *         call
269     */
270    public boolean addFractions(Fraction elementToAdd)
271    {
272        return this.fractions.add(elementToAdd);
273    }
274
275    /**
276     * Une fraction analysée est un composant du support sur lequel porte l'analyse.
277     * Les fractions analysées sont généralement des fractions "organiques", au sens d'une
278     * classification
279     * par partie d'un même organisme,
280     * ex : foie, écaille, reins, dents, otolithe...
281     * Elles peuvent aussi être un sous ensemble quelconque du support. Par exemple, dans le cas des
282     * engins
283     * : le bras, …
284     * Les fractions dites "systématiques", au sens d'une classification systématique (ex : poisson
285     * :
286     * Cyprinidae / Cyprinus / Cyprinus carpio...) ne sont pas considérées comme des fractions au
287     * sens de
288     * l'entité, mais comme une précision apportée sur l'individu. Représentées par les entités
289     * "taxon" et
290     * "groupe de taxon", elles ne font pas partie de la liste des fractions analysées.
291     * Etant une liste de référence, une procédure stricte pour la création de nouvelles fractions
292     * analysées pourra être mise en place (On pourra s'inspirer des procédures utilisées dans
293     * Quadrige2,
294     * qui utilisent le référentiel national du SANDRE).
295     * Nombre de lignes : 10
296     * @param elementToRemove Fraction
297     * @return <tt>true</tt> if this collection changed as a result of the
298     *         call
299     */
300    public boolean removeFractions(Fraction elementToRemove)
301    {
302        return this.fractions.remove(elementToRemove);
303    }
304
305    private Status status;
306
307    /**
308     * Pour les données du référentiel, information permettant de déterminer si une donnée est
309     * valide,
310     * obsolète ou temporaire.
311     * - obsolète (=inactif) : '0'
312     * - valide (=actif) : '1'
313     * - temporaire : '2'
314     * - en cours de suppression : '3'
315     * -  : '4'
316     * note : on a préfère ici 'valide' au terme 'actif' (utilisé dans Harmonie), pour ne pas
317     * confondre
318     * avec par exemple l'activité d'un navire sur un mois.
319     * @return this.status Status
320     */
321    public Status getStatus()
322    {
323        return this.status;
324    }
325
326    /**
327     * Pour les données du référentiel, information permettant de déterminer si une donnée est
328     * valide,
329     * obsolète ou temporaire.
330     * - obsolète (=inactif) : '0'
331     * - valide (=actif) : '1'
332     * - temporaire : '2'
333     * - en cours de suppression : '3'
334     * -  : '4'
335     * note : on a préfère ici 'valide' au terme 'actif' (utilisé dans Harmonie), pour ne pas
336     * confondre
337     * avec par exemple l'activité d'un navire sur un mois.
338     * @param statusIn Status
339     */
340    public void setStatus(Status statusIn)
341    {
342        this.status = statusIn;
343    }
344
345    /**
346     * Returns <code>true</code> if the argument is an Matrix instance and all identifiers for this entity
347     * equal the identifiers of the argument entity. Returns <code>false</code> otherwise.
348     */
349    @Override
350    public boolean equals(Object object)
351    {
352        if (this == object)
353        {
354            return true;
355        }
356        if (!(object instanceof Matrix))
357        {
358            return false;
359        }
360        final Matrix that = (Matrix)object;
361        if (this.id == null || that.getId() == null || !this.id.equals(that.getId()))
362        {
363            return false;
364        }
365        return true;
366    }
367
368    /**
369     * Returns a hash code based on this entity's identifiers.
370     */
371    @Override
372    public int hashCode()
373    {
374        int hashCode = 0;
375        hashCode = 29 * hashCode + (this.id == null ? 0 : this.id.hashCode());
376
377        return hashCode;
378    }
379
380    /**
381     * Constructs new instances of {@link Matrix}.
382     */
383    public static final class Factory
384    {
385        /**
386         * Constructs a new instance of {@link Matrix}.
387         * @return new MatrixImpl()
388         */
389        public static Matrix newInstance()
390        {
391            return new MatrixImpl();
392        }
393
394        /**
395         * Constructs a new instance of {@link Matrix}, taking all required and/or
396         * read-only properties as arguments, except for identifiers.
397         * @param name String
398         * @param creationDate Date
399         * @param updateDate Timestamp
400         * @param fractions Collection<Fraction>
401         * @param status Status
402         * @return newInstance
403         */
404        public static Matrix newInstance(String name, Date creationDate, Timestamp updateDate, Collection<Fraction> fractions, Status status)
405        {
406            final Matrix entity = new MatrixImpl();
407            entity.setName(name);
408            entity.setCreationDate(creationDate);
409            entity.setUpdateDate(updateDate);
410            entity.setFractions(fractions);
411            entity.setStatus(status);
412            return entity;
413        }
414
415        /**
416         * Constructs a new instance of {@link Matrix}, taking all possible properties
417         * (except the identifier(s))as arguments.
418         * @param name String
419         * @param description String
420         * @param creationDate Date
421         * @param comments String
422         * @param updateDate Timestamp
423         * @param fractions Collection<Fraction>
424         * @param status Status
425         * @return newInstance Matrix
426         */
427        public static Matrix newInstance(String name, String description, Date creationDate, String comments, Timestamp updateDate, Collection<Fraction> fractions, Status status)
428        {
429            final Matrix entity = new MatrixImpl();
430            entity.setName(name);
431            entity.setDescription(description);
432            entity.setCreationDate(creationDate);
433            entity.setComments(comments);
434            entity.setUpdateDate(updateDate);
435            entity.setFractions(fractions);
436            entity.setStatus(status);
437            return entity;
438        }
439    }
440
441    /**
442     * @see Comparable#compareTo
443     */
444    public int compareTo(Matrix o)
445    {
446        int cmp = 0;
447        if (this.getId() != null)
448        {
449            cmp = this.getId().compareTo(o.getId());
450        }
451        else
452        {
453            if (this.getName() != null)
454            {
455                cmp = (cmp != 0 ? cmp : this.getName().compareTo(o.getName()));
456            }
457            if (this.getDescription() != null)
458            {
459                cmp = (cmp != 0 ? cmp : this.getDescription().compareTo(o.getDescription()));
460            }
461            if (this.getCreationDate() != null)
462            {
463                cmp = (cmp != 0 ? cmp : this.getCreationDate().compareTo(o.getCreationDate()));
464            }
465            if (this.getComments() != null)
466            {
467                cmp = (cmp != 0 ? cmp : this.getComments().compareTo(o.getComments()));
468            }
469            if (this.getUpdateDate() != null)
470            {
471                cmp = (cmp != 0 ? cmp : this.getUpdateDate().compareTo(o.getUpdateDate()));
472            }
473        }
474        return cmp;
475    }
476// HibernateEntity.vsl merge-point
477// Matrix.java merge-point
478}