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.data.measure;
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.user.Department;
032import fr.ifremer.adagio.core.dao.data.sample.Sample;
033import fr.ifremer.adagio.core.dao.referential.AnalysisInstrument;
034import fr.ifremer.adagio.core.dao.referential.NumericalPrecision;
035import fr.ifremer.adagio.core.dao.referential.PrecisionType;
036import fr.ifremer.adagio.core.dao.referential.QualityFlag;
037import fr.ifremer.adagio.core.dao.referential.pmfm.AggregationLevel;
038import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm;
039import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValue;
040import java.util.Date;
041
042/**
043 * Valeur mesurée ou analysée sur un individu (résultats de mesures sur individu) appartenant à un
044 * prélèvement effectué lors d'un échantillonnage biologique, lors d'une marée, d'un vente ou d'un
045 * débarquement observé. Les observations sur le prélèvement sont souvent menées en laboratoire, à
046 * terre.
047 */
048// HibernateEntity.vsl annotations merge-point
049public abstract class SampleMeasurement
050    extends MeasurementImpl
051{
052    /**
053     * The serial version UID of this class. Needed for serialization.
054     */
055    private static final long serialVersionUID = 4164573865635600759L;
056
057    // Generate 2 attributes
058    private Short individualNumber;
059
060    /**
061     * Numéro de l'individu sur lequel est effectué la mesure.
062     * (quand plusieurs individu ont été comptés, au niveau de l'échantillon)
063     * @return this.individualNumber Short
064     */
065    public Short getIndividualNumber()
066    {
067        return this.individualNumber;
068    }
069
070    /**
071     * Numéro de l'individu sur lequel est effectué la mesure.
072     * (quand plusieurs individu ont été comptés, au niveau de l'échantillon)
073     * @param individualNumberIn Short
074     */
075    public void setIndividualNumber(Short individualNumberIn)
076    {
077        this.individualNumber = individualNumberIn;
078    }
079
080    private Boolean isReferenceMeasurement = Boolean.valueOf(true);
081
082    /**
083     * Dans le cas de plusieurs résultat de mesure au sein d'un prélèvement sur un meme individu
084     * (identifié par le numéro d'individu), cela permet de distinguer la valeur de référence (celle
085     * qu'il faudra exploiter) tout en gardant les autres mesure.
086     * Exemple :
087     * - Pour la leture d'age, plusieurs déterminations d'age sont effectuées, mais une seule est
088     * conservée.
089     * @return this.isReferenceMeasurement Boolean
090     */
091    public Boolean isIsReferenceMeasurement()
092    {
093        return this.isReferenceMeasurement;
094    }
095
096    /**
097     * Dans le cas de plusieurs résultat de mesure au sein d'un prélèvement sur un meme individu
098     * (identifié par le numéro d'individu), cela permet de distinguer la valeur de référence (celle
099     * qu'il faudra exploiter) tout en gardant les autres mesure.
100     * Exemple :
101     * - Pour la leture d'age, plusieurs déterminations d'age sont effectuées, mais une seule est
102     * conservée.
103     * @param isReferenceMeasurementIn Boolean
104     */
105    public void setIsReferenceMeasurement(Boolean isReferenceMeasurementIn)
106    {
107        this.isReferenceMeasurement = isReferenceMeasurementIn;
108    }
109
110    // Generate 1 associations
111    private Sample sample;
112
113    /**
114     * Un prélèvement représente un (et un seul) support, prélevé au cours d'une opération de peche,
115     * d'un
116     * échantillonnage au débarquement ou d'une vente. Il s'agit de la partie qui est recueillie
117     * pour
118     * analyse ou dénombrement.
119     * Un prélèvement est rattaché à une opération de peche ou un groupe d'opérations, un
120     * débarquement ou à
121     * une vente. Il peut être en plus rattaché à un des lots échantillonnés (le lot de provenance).
122     * Dans le cas des marées observées en mer, un prlèvement correspond à un individu, dont le
123     * support
124     * est, par exemple :
125     * - crustacé (crevette...)
126     * - poisson (merlu, sardine...)
127     * - gastéropode (bigorneau, littorine...)
128     * - echinoderme (oursin...)
129     * - etc.
130     * Le nombre d'individu, généralement égal à 1, permet de constituer des prélèvement de
131     * plusieurs
132     * individu (dès lors qu'il sont ne meme anture). Chaque résultat de mesure (SampleMeasurement)
133     * pourra
134     * identifié l'individu concerné par la mesure, par une numéro din'dividu.
135     * Un mnémonique, représentant généralement l'étiquette collée sur le sachet contenant le
136     * prélèvement,
137     * permet d"identifier le prélèvement de manière simple, notamment en laboratoire pour la saisie
138     * des
139     * lectures d'age, etc..
140     * Par exemple de prélèvement :
141     * - un poisson, d'une espèce donnée, sur lequel est prélevé un otholithe, et/ou des écailes
142     * afin de
143     * réaliser une lecture d'age.
144     * - un cétacé, issu d'un lot, sur lesquels doit être effectué des analyses d'age, de taille,
145     * - etc.
146     * @return this.sample Sample
147     */
148    public Sample getSample()
149    {
150        return this.sample;
151    }
152
153    /**
154     * Un prélèvement représente un (et un seul) support, prélevé au cours d'une opération de peche,
155     * d'un
156     * échantillonnage au débarquement ou d'une vente. Il s'agit de la partie qui est recueillie
157     * pour
158     * analyse ou dénombrement.
159     * Un prélèvement est rattaché à une opération de peche ou un groupe d'opérations, un
160     * débarquement ou à
161     * une vente. Il peut être en plus rattaché à un des lots échantillonnés (le lot de provenance).
162     * Dans le cas des marées observées en mer, un prlèvement correspond à un individu, dont le
163     * support
164     * est, par exemple :
165     * - crustacé (crevette...)
166     * - poisson (merlu, sardine...)
167     * - gastéropode (bigorneau, littorine...)
168     * - echinoderme (oursin...)
169     * - etc.
170     * Le nombre d'individu, généralement égal à 1, permet de constituer des prélèvement de
171     * plusieurs
172     * individu (dès lors qu'il sont ne meme anture). Chaque résultat de mesure (SampleMeasurement)
173     * pourra
174     * identifié l'individu concerné par la mesure, par une numéro din'dividu.
175     * Un mnémonique, représentant généralement l'étiquette collée sur le sachet contenant le
176     * prélèvement,
177     * permet d"identifier le prélèvement de manière simple, notamment en laboratoire pour la saisie
178     * des
179     * lectures d'age, etc..
180     * Par exemple de prélèvement :
181     * - un poisson, d'une espèce donnée, sur lequel est prélevé un otholithe, et/ou des écailes
182     * afin de
183     * réaliser une lecture d'age.
184     * - un cétacé, issu d'un lot, sur lesquels doit être effectué des analyses d'age, de taille,
185     * - etc.
186     * @param sampleIn Sample
187     */
188    public void setSample(Sample sampleIn)
189    {
190        this.sample = sampleIn;
191    }
192
193    /**
194     * This entity does not have any identifiers
195     * but since it extends the <code>MeasurementImpl</code> class
196     * it will simply delegate the call up there.
197     *
198     * @see fr.ifremer.adagio.core.dao.data.measure.Measurement#equals(Object)
199     */
200    @Override
201    public boolean equals(Object object)
202    {
203        return super.equals(object);
204    }
205
206    /**
207     * This entity does not have any identifiers
208     * but since it extends the <code>MeasurementImpl</code> class
209     * it will simply delegate the call up there.
210     *
211     * @see fr.ifremer.adagio.core.dao.data.measure.Measurement#hashCode()
212     */
213    @Override
214    public int hashCode()
215    {
216        return super.hashCode();
217    }
218
219    /**
220     * Constructs new instances of {@link SampleMeasurement}.
221     */
222    public static final class Factory
223    {
224        /**
225         * Constructs a new instance of {@link SampleMeasurement}.
226         * @return new SampleMeasurementImpl()
227         */
228        public static SampleMeasurement newInstance()
229        {
230            return new SampleMeasurementImpl();
231        }
232
233        /**
234         * Constructs a new instance of {@link SampleMeasurement}, taking all required and/or
235         * read-only properties as arguments, except for identifiers.
236         * @param qualityFlag QualityFlag
237         * @param pmfm Pmfm
238         * @param isReferenceMeasurement Boolean
239         * @param sample Sample
240         * @return newInstance
241         */
242        public static SampleMeasurement newInstance(QualityFlag qualityFlag, Pmfm pmfm, Boolean isReferenceMeasurement, Sample sample)
243        {
244            final SampleMeasurement entity = new SampleMeasurementImpl();
245            entity.setQualityFlag(qualityFlag);
246            entity.setPmfm(pmfm);
247            entity.setIsReferenceMeasurement(isReferenceMeasurement);
248            entity.setSample(sample);
249            return entity;
250        }
251
252        /**
253         * Constructs a new instance of {@link SampleMeasurement}, taking all possible properties
254         * (except the identifier(s))as arguments.
255         * @param numericalValue Float
256         * @param alphanumericalValue String
257         * @param digitCount Integer
258         * @param precisionValue Float
259         * @param controlDate Date
260         * @param validationDate Date
261         * @param qualificationDate Date
262         * @param qualificationComments String
263         * @param aggregationLevel AggregationLevel
264         * @param qualitativeValue QualitativeValue
265         * @param qualityFlag QualityFlag
266         * @param precisionType PrecisionType
267         * @param analysisInstrument AnalysisInstrument
268         * @param pmfm Pmfm
269         * @param department Department
270         * @param numericalPrecision NumericalPrecision
271         * @param individualNumber Short
272         * @param isReferenceMeasurement Boolean
273         * @param sample Sample
274         * @return newInstance SampleMeasurement
275         */
276        public static SampleMeasurement newInstance(Float numericalValue, String alphanumericalValue, Integer digitCount, Float precisionValue, Date controlDate, Date validationDate, Date qualificationDate, String qualificationComments, AggregationLevel aggregationLevel, QualitativeValue qualitativeValue, QualityFlag qualityFlag, PrecisionType precisionType, AnalysisInstrument analysisInstrument, Pmfm pmfm, Department department, NumericalPrecision numericalPrecision, Short individualNumber, Boolean isReferenceMeasurement, Sample sample)
277        {
278            final SampleMeasurement entity = new SampleMeasurementImpl();
279            entity.setNumericalValue(numericalValue);
280            entity.setAlphanumericalValue(alphanumericalValue);
281            entity.setDigitCount(digitCount);
282            entity.setPrecisionValue(precisionValue);
283            entity.setControlDate(controlDate);
284            entity.setValidationDate(validationDate);
285            entity.setQualificationDate(qualificationDate);
286            entity.setQualificationComments(qualificationComments);
287            entity.setAggregationLevel(aggregationLevel);
288            entity.setQualitativeValue(qualitativeValue);
289            entity.setQualityFlag(qualityFlag);
290            entity.setPrecisionType(precisionType);
291            entity.setAnalysisInstrument(analysisInstrument);
292            entity.setPmfm(pmfm);
293            entity.setDepartment(department);
294            entity.setNumericalPrecision(numericalPrecision);
295            entity.setIndividualNumber(individualNumber);
296            entity.setIsReferenceMeasurement(isReferenceMeasurement);
297            entity.setSample(sample);
298            return entity;
299        }
300    }
301
302    /**
303     * @see Comparable#compareTo
304     */
305    public int compareTo(SampleMeasurement o)
306    {
307        int cmp = 0;
308        if (this.getId() != null)
309        {
310            cmp = this.getId().compareTo(o.getId());
311        }
312        else
313        {
314            if (this.getIndividualNumber() != null)
315            {
316                cmp = (cmp != 0 ? cmp : this.getIndividualNumber().compareTo(o.getIndividualNumber()));
317            }
318            if (this.isIsReferenceMeasurement() != null)
319            {
320                cmp = (cmp != 0 ? cmp : this.isIsReferenceMeasurement().compareTo(o.isIsReferenceMeasurement()));
321            }
322        }
323        return cmp;
324    }
325// HibernateEntity.vsl merge-point
326// SampleMeasurement.java merge-point
327}