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 * Un paramètre est une propriété du milieu ou d'un élément du milieu qui contribue à en apprécier
040 * les caractéristiques et/ou la qualité et/ou l'aptitude à des usages.
041 * Le paramètre se décline en trois types : quantitatif, qualitatif ou libre.
042 * Le type quantitatif se rapporte aux paramètres qui ont une infinité de résultats numériques.
043 * Le type qualitatif se rapporte aux paramètres qui ne prennent qu'un nombre limité de valeurs
044 * prédéfinies pour chacun d'eux.
045 * Le type libre, ou alphanumérique, correspond aux paramètres de valeurs alphanumériques, sans
046 * limite de valeurs possibles (hormis la longueur de la chaine : 40 max).
047 * Ces trois types sont mutuellement exclusifs.
048 * Exemple de paramètre :
049 * • Taille (numérique)
050 * • Age (numérique)
051 * • Sexe (qualitatif)
052 * • Catégorie commerciale (qualitatif)
053 * • Présentation commerciale (qualitatif)
054 * • Vrac / Hors Vrac (qualitatif)
055 * • Rejet / Débarquement (qualitatif) (Discard/Landing)
056 * • Stade de maturité (qualitatif) (Maturity stage)
057 * • Numéro de contrat (libre - alphanumérique)
058 * Cette liste n’est pas exhaustive.
059 * Nombre de lignes : 130
060 */
061// HibernateEntity.vsl annotations merge-point
062public abstract class Parameter
063    implements Serializable, Comparable<Parameter>
064{
065    /**
066     * The serial version UID of this class. Needed for serialization.
067     */
068    private static final long serialVersionUID = 5755384194357132657L;
069
070    // Generate 10 attributes
071    private String code;
072
073    /**
074     * Code du paramètre
075     * @return this.code String
076     */
077    public String getCode()
078    {
079        return this.code;
080    }
081
082    /**
083     * Code du paramètre
084     * @param codeIn String
085     */
086    public void setCode(String codeIn)
087    {
088        this.code = codeIn;
089    }
090
091    private String name;
092
093    /**
094     * Libellé du paramètre
095     * @return this.name String
096     */
097    public String getName()
098    {
099        return this.name;
100    }
101
102    /**
103     * Libellé du paramètre
104     * @param nameIn String
105     */
106    public void setName(String nameIn)
107    {
108        this.name = nameIn;
109    }
110
111    private String description;
112
113    /**
114     * Description du paramètre
115     * @return this.description String
116     */
117    public String getDescription()
118    {
119        return this.description;
120    }
121
122    /**
123     * Description du paramètre
124     * @param descriptionIn String
125     */
126    public void setDescription(String descriptionIn)
127    {
128        this.description = descriptionIn;
129    }
130
131    private Boolean isQualitative;
132
133    /**
134     * Indique si pour le paramètre on saisit des valeurs numérique ou si on choisit dans une liste
135     * de valeurs qualitatives
136     * @return this.isQualitative Boolean
137     */
138    public Boolean isIsQualitative()
139    {
140        return this.isQualitative;
141    }
142
143    /**
144     * Indique si pour le paramètre on saisit des valeurs numérique ou si on choisit dans une liste
145     * de valeurs qualitatives
146     * @param isQualitativeIn Boolean
147     */
148    public void setIsQualitative(Boolean isQualitativeIn)
149    {
150        this.isQualitative = isQualitativeIn;
151    }
152
153    private Boolean isTaxinomic;
154
155    /**
156     * Indique si le paramètre est utilisé pour des mesures de dénombrement
157     * @return this.isTaxinomic Boolean
158     */
159    public Boolean isIsTaxinomic()
160    {
161        return this.isTaxinomic;
162    }
163
164    /**
165     * Indique si le paramètre est utilisé pour des mesures de dénombrement
166     * @param isTaxinomicIn Boolean
167     */
168    public void setIsTaxinomic(Boolean isTaxinomicIn)
169    {
170        this.isTaxinomic = isTaxinomicIn;
171    }
172
173    private Boolean isCalculated;
174
175    /**
176     * Indique si le paramètre est calculé
177     * @return this.isCalculated Boolean
178     */
179    public Boolean isIsCalculated()
180    {
181        return this.isCalculated;
182    }
183
184    /**
185     * Indique si le paramètre est calculé
186     * @param isCalculatedIn Boolean
187     */
188    public void setIsCalculated(Boolean isCalculatedIn)
189    {
190        this.isCalculated = isCalculatedIn;
191    }
192
193    private Boolean isAlphanumeric = Boolean.valueOf(false);
194
195    /**
196     * <html>
197     * <head>
198     * <style>
199     * p {padding:0px; margin:0px;}
200     * </style>
201     * </head>
202     * <body>
203     * <p>
204     * Indique si pour le paramètre on saisit des valeurs alphanumérique
205     * (=Vrai) ou si on choisit dans une liste de valeurs qualitatives ou si
206     * les valeurs sont numérique (=Faux - cf <i>isQualitative</i>)
207     * </p>
208     * </body>
209     * </html>
210     * @return this.isAlphanumeric Boolean
211     */
212    public Boolean isIsAlphanumeric()
213    {
214        return this.isAlphanumeric;
215    }
216
217    /**
218     * <html>
219     * <head>
220     * <style>
221     * p {padding:0px; margin:0px;}
222     * </style>
223     * </head>
224     * <body>
225     * <p>
226     * Indique si pour le paramètre on saisit des valeurs alphanumérique
227     * (=Vrai) ou si on choisit dans une liste de valeurs qualitatives ou si
228     * les valeurs sont numérique (=Faux - cf <i>isQualitative</i>)
229     * </p>
230     * </body>
231     * </html>
232     * @param isAlphanumericIn Boolean
233     */
234    public void setIsAlphanumeric(Boolean isAlphanumericIn)
235    {
236        this.isAlphanumeric = isAlphanumericIn;
237    }
238
239    private Date creationDate;
240
241    /**
242     * 
243     * @return this.creationDate Date
244     */
245    public Date getCreationDate()
246    {
247        return this.creationDate;
248    }
249
250    /**
251     * 
252     * @param creationDateIn Date
253     */
254    public void setCreationDate(Date creationDateIn)
255    {
256        this.creationDate = creationDateIn;
257    }
258
259    private Timestamp updateDate;
260
261    /**
262     * 
263     * @return this.updateDate Timestamp
264     */
265    public Timestamp getUpdateDate()
266    {
267        return this.updateDate;
268    }
269
270    /**
271     * 
272     * @param updateDateIn Timestamp
273     */
274    public void setUpdateDate(Timestamp updateDateIn)
275    {
276        this.updateDate = updateDateIn;
277    }
278
279    private String comments;
280
281    /**
282     * 
283     * @return this.comments String
284     */
285    public String getComments()
286    {
287        return this.comments;
288    }
289
290    /**
291     * 
292     * @param commentsIn String
293     */
294    public void setComments(String commentsIn)
295    {
296        this.comments = commentsIn;
297    }
298
299    // Generate 7 associations
300    private ParameterGroup parameterGroup;
301
302    /**
303     * Groupe de paramètres.
304     * Les groupes permettent le regroupement et la hiérarchisation des paramètres, par thématiques.
305     * Par
306     * exemple, on aura :
307     * - Halieutique
308     * |- Individu (paramètres : taille, sexe, ..)
309     * |- Engin (paramètres : longueur de bras, ...)
310     * |- Condition d'observation (paramètres : état de la mer...)
311     * @return this.parameterGroup ParameterGroup
312     */
313    public ParameterGroup getParameterGroup()
314    {
315        return this.parameterGroup;
316    }
317
318    /**
319     * Groupe de paramètres.
320     * Les groupes permettent le regroupement et la hiérarchisation des paramètres, par thématiques.
321     * Par
322     * exemple, on aura :
323     * - Halieutique
324     * |- Individu (paramètres : taille, sexe, ..)
325     * |- Engin (paramètres : longueur de bras, ...)
326     * |- Condition d'observation (paramètres : état de la mer...)
327     * @param parameterGroupIn ParameterGroup
328     */
329    public void setParameterGroup(ParameterGroup parameterGroupIn)
330    {
331        this.parameterGroup = parameterGroupIn;
332    }
333
334    private Status status;
335
336    /**
337     * état de l'objet (actif ou inactif)
338     * @return this.status Status
339     */
340    public Status getStatus()
341    {
342        return this.status;
343    }
344
345    /**
346     * état de l'objet (actif ou inactif)
347     * @param statusIn Status
348     */
349    public void setStatus(Status statusIn)
350    {
351        this.status = statusIn;
352    }
353
354    private Collection<QualitativeValue> qualitativeValues = new HashSet<QualitativeValue>();
355
356    /**
357     * Liste des valeurs qualitatives que peut prendre un paramètre.
358     * Par exemple :
359     * - pour le paramètre Sexe : "Mâle" et "Femelle"
360     * - pour le paramètre Présentation : "Vidé", "Entier", ...
361     * - pour le paramètre Catégorie : "Gros", "Moyen", ...
362     * @return this.qualitativeValues Collection<QualitativeValue>
363     */
364    public Collection<QualitativeValue> getQualitativeValues()
365    {
366        return this.qualitativeValues;
367    }
368
369    /**
370     * Liste des valeurs qualitatives que peut prendre un paramètre.
371     * Par exemple :
372     * - pour le paramètre Sexe : "Mâle" et "Femelle"
373     * - pour le paramètre Présentation : "Vidé", "Entier", ...
374     * - pour le paramètre Catégorie : "Gros", "Moyen", ...
375     * @param qualitativeValuesIn Collection<QualitativeValue>
376     */
377    public void setQualitativeValues(Collection<QualitativeValue> qualitativeValuesIn)
378    {
379        this.qualitativeValues = qualitativeValuesIn;
380    }
381
382    /**
383     * Liste des valeurs qualitatives que peut prendre un paramètre.
384     * Par exemple :
385     * - pour le paramètre Sexe : "Mâle" et "Femelle"
386     * - pour le paramètre Présentation : "Vidé", "Entier", ...
387     * - pour le paramètre Catégorie : "Gros", "Moyen", ...
388     * @param elementToAdd QualitativeValue
389     * @return <tt>true</tt> if this collection changed as a result of the
390     *         call
391     */
392    public boolean addQualitativeValues(QualitativeValue elementToAdd)
393    {
394        return this.qualitativeValues.add(elementToAdd);
395    }
396
397    /**
398     * Liste des valeurs qualitatives que peut prendre un paramètre.
399     * Par exemple :
400     * - pour le paramètre Sexe : "Mâle" et "Femelle"
401     * - pour le paramètre Présentation : "Vidé", "Entier", ...
402     * - pour le paramètre Catégorie : "Gros", "Moyen", ...
403     * @param elementToRemove QualitativeValue
404     * @return <tt>true</tt> if this collection changed as a result of the
405     *         call
406     */
407    public boolean removeQualitativeValues(QualitativeValue elementToRemove)
408    {
409        return this.qualitativeValues.remove(elementToRemove);
410    }
411
412    /**
413     * Returns <code>true</code> if the argument is an Parameter instance and all identifiers for this entity
414     * equal the identifiers of the argument entity. Returns <code>false</code> otherwise.
415     */
416    @Override
417    public boolean equals(Object object)
418    {
419        if (this == object)
420        {
421            return true;
422        }
423        if (!(object instanceof Parameter))
424        {
425            return false;
426        }
427        final Parameter that = (Parameter)object;
428        if (this.code == null || that.getCode() == null || !this.code.equals(that.getCode()))
429        {
430            return false;
431        }
432        return true;
433    }
434
435    /**
436     * Returns a hash code based on this entity's identifiers.
437     */
438    @Override
439    public int hashCode()
440    {
441        int hashCode = 0;
442        hashCode = 29 * hashCode + (this.code == null ? 0 : this.code.hashCode());
443
444        return hashCode;
445    }
446
447    /**
448     * Constructs new instances of {@link Parameter}.
449     */
450    public static final class Factory
451    {
452        /**
453         * Constructs a new instance of {@link Parameter}.
454         * @return new ParameterImpl()
455         */
456        public static Parameter newInstance()
457        {
458            return new ParameterImpl();
459        }
460
461        /**
462         * Constructs a new instance of {@link Parameter}, taking all required and/or
463         * read-only properties as arguments, except for identifiers.
464         * @param name String
465         * @param isQualitative Boolean
466         * @param isTaxinomic Boolean
467         * @param isCalculated Boolean
468         * @param isAlphanumeric Boolean
469         * @param creationDate Date
470         * @param updateDate Timestamp
471         * @param parameterGroup ParameterGroup
472         * @param status Status
473         * @return newInstance
474         */
475        public static Parameter newInstance(String name, Boolean isQualitative, Boolean isTaxinomic, Boolean isCalculated, Boolean isAlphanumeric, Date creationDate, Timestamp updateDate, ParameterGroup parameterGroup, Status status)
476        {
477            final Parameter entity = new ParameterImpl();
478            entity.setName(name);
479            entity.setIsQualitative(isQualitative);
480            entity.setIsTaxinomic(isTaxinomic);
481            entity.setIsCalculated(isCalculated);
482            entity.setIsAlphanumeric(isAlphanumeric);
483            entity.setCreationDate(creationDate);
484            entity.setUpdateDate(updateDate);
485            entity.setParameterGroup(parameterGroup);
486            entity.setStatus(status);
487            return entity;
488        }
489
490        /**
491         * Constructs a new instance of {@link Parameter}, taking all possible properties
492         * (except the identifier(s))as arguments.
493         * @param name String
494         * @param description String
495         * @param isQualitative Boolean
496         * @param isTaxinomic Boolean
497         * @param isCalculated Boolean
498         * @param isAlphanumeric Boolean
499         * @param creationDate Date
500         * @param updateDate Timestamp
501         * @param comments String
502         * @param parameterGroup ParameterGroup
503         * @param status Status
504         * @param qualitativeValues Collection<QualitativeValue>
505         * @return newInstance Parameter
506         */
507        public static Parameter newInstance(String name, String description, Boolean isQualitative, Boolean isTaxinomic, Boolean isCalculated, Boolean isAlphanumeric, Date creationDate, Timestamp updateDate, String comments, ParameterGroup parameterGroup, Status status, Collection<QualitativeValue> qualitativeValues)
508        {
509            final Parameter entity = new ParameterImpl();
510            entity.setName(name);
511            entity.setDescription(description);
512            entity.setIsQualitative(isQualitative);
513            entity.setIsTaxinomic(isTaxinomic);
514            entity.setIsCalculated(isCalculated);
515            entity.setIsAlphanumeric(isAlphanumeric);
516            entity.setCreationDate(creationDate);
517            entity.setUpdateDate(updateDate);
518            entity.setComments(comments);
519            entity.setParameterGroup(parameterGroup);
520            entity.setStatus(status);
521            entity.setQualitativeValues(qualitativeValues);
522            return entity;
523        }
524    }
525
526    /**
527     * @see Comparable#compareTo
528     */
529    public int compareTo(Parameter o)
530    {
531        int cmp = 0;
532        if (this.getCode() != null)
533        {
534            cmp = this.getCode().compareTo(o.getCode());
535        }
536        else
537        {
538            if (this.getName() != null)
539            {
540                cmp = (cmp != 0 ? cmp : this.getName().compareTo(o.getName()));
541            }
542            if (this.getDescription() != null)
543            {
544                cmp = (cmp != 0 ? cmp : this.getDescription().compareTo(o.getDescription()));
545            }
546            if (this.isIsQualitative() != null)
547            {
548                cmp = (cmp != 0 ? cmp : this.isIsQualitative().compareTo(o.isIsQualitative()));
549            }
550            if (this.isIsTaxinomic() != null)
551            {
552                cmp = (cmp != 0 ? cmp : this.isIsTaxinomic().compareTo(o.isIsTaxinomic()));
553            }
554            if (this.isIsCalculated() != null)
555            {
556                cmp = (cmp != 0 ? cmp : this.isIsCalculated().compareTo(o.isIsCalculated()));
557            }
558            if (this.isIsAlphanumeric() != null)
559            {
560                cmp = (cmp != 0 ? cmp : this.isIsAlphanumeric().compareTo(o.isIsAlphanumeric()));
561            }
562            if (this.getCreationDate() != null)
563            {
564                cmp = (cmp != 0 ? cmp : this.getCreationDate().compareTo(o.getCreationDate()));
565            }
566            if (this.getUpdateDate() != null)
567            {
568                cmp = (cmp != 0 ? cmp : this.getUpdateDate().compareTo(o.getUpdateDate()));
569            }
570            if (this.getComments() != null)
571            {
572                cmp = (cmp != 0 ? cmp : this.getComments().compareTo(o.getComments()));
573            }
574        }
575        return cmp;
576    }
577// HibernateEntity.vsl merge-point
578// Parameter.java merge-point
579}