001// license-header java merge-point
002//
003// Attention: Generated code! Do not modify by hand!
004// Generated by: SpringDao.vsl in andromda-spring-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.Search;
032import fr.ifremer.adagio.core.dao.data.samplingScheme.SamplingStrata;
033import fr.ifremer.adagio.core.dao.referential.QualityFlag;
034import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm;
035import java.util.Collection;
036import java.util.Date;
037import java.util.Set;
038import org.andromda.spring.PaginationResult;
039
040/**
041 * Caratéristiques de la straté d'échantillonnage, en terme de valeurs sur PSFM.
042 * @since v3.2.0
043 * @see SamplingStrataMeasurement
044 */
045public interface SamplingStrataMeasurementDao
046{
047    /**
048     * This constant is used as a transformation flag; entities can be converted automatically into value objects
049     * or other types, different methods in a class implementing this interface support this feature: look for
050     * an <code>int</code> parameter called <code>transform</code>.
051     * <p>
052     * This specific flag denotes no transformation will occur.
053     */
054    public static final int TRANSFORM_NONE = 0;
055
056
057    /**
058     * Transforms the given results to a collection of {@link SamplingStrataMeasurement}
059     * instances (this is useful when the returned results contains a row of data and you want just entities only).
060     *
061     * @param results the query results.
062     */
063    public void toEntities(final Collection<?> results);
064
065    /**
066     * Gets an instance of SamplingStrataMeasurement from the persistent store.
067     * @param id
068     * @return SamplingStrataMeasurement
069     */
070    public SamplingStrataMeasurement get(Integer id);
071
072    /**
073     * <p>
074     * Does the same thing as {@link #get(Integer)} with an
075     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
076     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
077     * defined in this class then the result <strong>WILL BE</strong> passed through an operation which can
078     * optionally transform the entity (into a value object for example). By default, transformation does
079     * not occur.
080     * </p>
081     *
082     * @param transform flag to determine transformation type.
083     * @param id the identifier of the entity to get.
084     * @return either the entity or the object transformed from the entity.
085     */
086    public Object get(int transform, Integer id);
087
088    /**
089     * Loads an instance of SamplingStrataMeasurement from the persistent store.
090     * @param id
091     * @return SamplingStrataMeasurement
092     */
093    public SamplingStrataMeasurement load(Integer id);
094
095    /**
096     * <p>
097     * Does the same thing as {@link #load(Integer)} with an
098     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
099     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
100     * defined in this class then the result <strong>WILL BE</strong> passed through an operation which can
101     * optionally transform the entity (into a value object for example). By default, transformation does
102     * not occur.
103     * </p>
104     *
105     * @param transform flag to determine transformation type.
106     * @param id the identifier of the entity to load.
107     * @return either the entity or the object transformed from the entity.
108     */
109    public Object load(int transform, Integer id);
110
111    /**
112     * Loads all entities of type {@link SamplingStrataMeasurement}.
113     *
114     * @return the loaded entities.
115     */
116    public Collection<SamplingStrataMeasurement> loadAll();
117
118    /**
119     * <p>
120     * Does the same thing as {@link #loadAll()} with an
121     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
122     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
123     * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
124     * transform the entity (into a value object for example). By default, transformation does
125     * not occur.
126     * </p>
127     *
128     * @param transform the flag indicating what transformation to use.
129     * @return the loaded entities.
130     */
131    public Collection<?> loadAll(final int transform);
132
133    /**
134     * <p>
135     * Does the same thing as {@link #loadAll()} with an
136     * additional two arguments called <code>pageNumber</code> and <code>pageSize</code>. The <code>pageNumber</code>
137     * argument allows you to specify the page number when you are paging the results and the pageSize allows you to specify the size of the
138     * page retrieved.
139     * </p>
140     *
141     * @param pageNumber the page number to retrieve when paging results.
142     * @param pageSize the size of the page to retrieve when paging results.
143     * @return the loaded entities.
144     */
145    public Collection<?> loadAll(final int pageNumber, final int pageSize);
146
147    /**
148     * <p>
149     * Does the same thing as {@link #loadAll(int)} with an
150     * additional two arguments called <code>pageNumber</code> and <code>pageSize</code>. The <code>pageNumber</code>
151     * argument allows you to specify the page number when you are paging the results and the pageSize allows you to specify the size of the
152     * page retrieved.
153     * </p>
154     *
155     * @param transform the flag indicating what transformation to use.
156     * @param pageNumber the page number to retrieve when paging results.
157     * @param pageSize the size of the page to retrieve when paging results.
158     * @return the loaded entities.
159     */
160    public Collection<?> loadAll(final int transform, final int pageNumber, final int pageSize);
161
162    /**
163     * Creates an instance of SamplingStrataMeasurement and adds it to the persistent store.
164     * @param samplingStrataMeasurement
165     * @return SamplingStrataMeasurement
166     */
167    public SamplingStrataMeasurement create(SamplingStrataMeasurement samplingStrataMeasurement);
168
169    /**
170     * <p>
171     * Does the same thing as {@link #create(SamplingStrataMeasurement)} with an
172     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
173     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
174     * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
175     * transform the entity (into a value object for example). By default, transformation does
176     * not occur.
177     * </p>
178     * @param transform
179     * @param samplingStrataMeasurement
180     * @return Object
181     */
182    public Object create(int transform, SamplingStrataMeasurement samplingStrataMeasurement);
183
184    /**
185     * Creates a new instance of SamplingStrataMeasurement and adds
186     * from the passed in <code>entities</code> collection
187     *
188     * @param entities the collection of SamplingStrataMeasurement
189     * instances to create.
190     *
191     * @return the created instances.
192     */
193    public Collection<SamplingStrataMeasurement> create(Collection<SamplingStrataMeasurement> entities);
194
195    /**
196     * <p>
197     * Does the same thing as {@link #create(SamplingStrataMeasurement)} with an
198     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
199     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
200     * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
201     * transform the entities (into value objects for example). By default, transformation does
202     * not occur.
203     * </p>
204     * @param transform
205     * @param entities
206     * @return Collection
207     */
208    public Collection<?> create(int transform, Collection<SamplingStrataMeasurement> entities);
209
210    /**
211     * <p>
212     * Creates a new <code>SamplingStrataMeasurement</code>
213     * instance from <strong>all</strong> attributes and adds it to
214     * the persistent store.
215     * </p>
216     * @param numericalValue <html>
217<head>
218<title>V    </title>
219</head>
220<body>
221valeur num&#233;rique de la mesure.<br>Elle est n&#233;cessairement exprim&#233;e
222dans l'unit&#233; associ&#233; au PSFM de la mesure.
223<br>
224Renseign&#233; uniquement pour un PSFM num&#233;rique
225(PMFM.parameter.isQualitative=false)
226</body>
227</html>
228     * @param alphanumericalValue <html>
229<head>
230</head>
231<body>
232<p>
233Valeur alphanum&#233;rique de la mesure.
234<br>    </p>
235<p>
236<br>
237<u>Attention :</u> <b>Utilisation &#224; &#233;viter</b>. A utiliser
238uniquement dans des cas ou les valeurs qualitatives ne peuvent pas
239convenir (format non fixe, etc.).
240</p>
241<p>
242</p>
243<p>
244Exemples :<br>* Num&#233;ros de contrat (Ventre ERS)<br>* Type de
245dimension d'engin (logbook - flux SACAPT) &quot;2X60&quot;, &quot;2x6 dragues 75&quot;,
246&quot;13.9x2&quot;, &quot;2x7m&#178;&quot;, &quot;2x17.50&quot;, &quot;2m x 2&quot;, etc
247</p>
248</body>
249</html>
250     * @param digitCount <html>
251<head>
252</head>
253<body>
254<p>
255Nombre de digits saisis dans la valeur num&#233;rique de la mesure.
256</p>
257<p>
258</p>
259<p>
260Cela permet de stocker &quot;10.00&quot; (numericalvalue=10 et digitCount=2) et de
261pouvoir restituer la valeur sous la meme forme.
262</p>
263</body>
264</html>
265     * @param precisionValue <html>
266<head>
267</head>
268<body>
269<p>
270Pr&#233;cision de la mesure. Par exemple : precisioNValue=0.5 pour indiquer
271une pr&#233;cision &#224; + ou - &quot;0.5&quot;.
272<br>    </p>
273<p>
274</p>
275<p>
276Valeur exprim&#233;e soit dans l'unite de la mesure (ex : &quot;mm&quot;), soit en
277poucentage de la mesure (suivant la valeur de <i>PrecisionType</i>).
278</p>
279</body>
280</html>
281     * @param controlDate Date du controle de la donnée.
282Le controle est la première phase de validation de la donnée.
283Exemple :
284- Dans Allegro, ce controle est effectué lorsque l'utilisateur a achevé sa saisie et qu'il souhaite
285"Terminer la saisie", dans le but de transmettre ses données au système centrale. Les controle
286effectué par Allegro sur le poste client sont des vérifications sur les champs obligatoires, ou
287encore sur la cohérence des données (cas d'un arbre d'échantillonnage).
288     * @param validationDate Date de validation de la donnée.
289La validation est typiquement effectué par un thématicien responsable des données. Dans Allegro, il
290s'agit du superviseur du portefeuille de données qui en est responsable.
291     * @param qualificationDate Date de qualification de la donnée.
292L'étape de qualification est liée à l'affectation d'un flag qualité (bon, mauvais, etc.) sur la
293donnée.
294- la qualification n'est pas encore gérée dans Allegro, dans le sens ou il n'existe pass encore
295d'interface pour affecter le flag qualité. Par défaut, le niveau de qualité est donc à "non
296qualifiée"
297     * @param qualificationComments 
298     * @return SamplingStrataMeasurement
299     */
300    public SamplingStrataMeasurement create(
301        Float numericalValue,
302        String alphanumericalValue,
303        Integer digitCount,
304        Float precisionValue,
305        Date controlDate,
306        Date validationDate,
307        Date qualificationDate,
308        String qualificationComments);
309
310    /**
311     * <p>
312     * Does the same thing as {@link #create(Float, String, Integer, Float, Date, Date, Date, String)} with an
313     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
314     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
315     * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
316     * transform the entity (into a value object for example). By default, transformation does
317     * not occur.
318     * </p>
319     * @param transform
320     * @param numericalValue <html>
321<head>
322<title>V    </title>
323</head>
324<body>
325valeur num&#233;rique de la mesure.<br>Elle est n&#233;cessairement exprim&#233;e
326dans l'unit&#233; associ&#233; au PSFM de la mesure.
327<br>
328Renseign&#233; uniquement pour un PSFM num&#233;rique
329(PMFM.parameter.isQualitative=false)
330</body>
331</html>
332     * @param alphanumericalValue <html>
333<head>
334</head>
335<body>
336<p>
337Valeur alphanum&#233;rique de la mesure.
338<br>    </p>
339<p>
340<br>
341<u>Attention :</u> <b>Utilisation &#224; &#233;viter</b>. A utiliser
342uniquement dans des cas ou les valeurs qualitatives ne peuvent pas
343convenir (format non fixe, etc.).
344</p>
345<p>
346</p>
347<p>
348Exemples :<br>* Num&#233;ros de contrat (Ventre ERS)<br>* Type de
349dimension d'engin (logbook - flux SACAPT) &quot;2X60&quot;, &quot;2x6 dragues 75&quot;,
350&quot;13.9x2&quot;, &quot;2x7m&#178;&quot;, &quot;2x17.50&quot;, &quot;2m x 2&quot;, etc
351</p>
352</body>
353</html>
354     * @param digitCount <html>
355<head>
356</head>
357<body>
358<p>
359Nombre de digits saisis dans la valeur num&#233;rique de la mesure.
360</p>
361<p>
362</p>
363<p>
364Cela permet de stocker &quot;10.00&quot; (numericalvalue=10 et digitCount=2) et de
365pouvoir restituer la valeur sous la meme forme.
366</p>
367</body>
368</html>
369     * @param precisionValue <html>
370<head>
371</head>
372<body>
373<p>
374Pr&#233;cision de la mesure. Par exemple : precisioNValue=0.5 pour indiquer
375une pr&#233;cision &#224; + ou - &quot;0.5&quot;.
376<br>    </p>
377<p>
378</p>
379<p>
380Valeur exprim&#233;e soit dans l'unite de la mesure (ex : &quot;mm&quot;), soit en
381poucentage de la mesure (suivant la valeur de <i>PrecisionType</i>).
382</p>
383</body>
384</html>
385     * @param controlDate Date du controle de la donnée.
386Le controle est la première phase de validation de la donnée.
387Exemple :
388- Dans Allegro, ce controle est effectué lorsque l'utilisateur a achevé sa saisie et qu'il souhaite
389"Terminer la saisie", dans le but de transmettre ses données au système centrale. Les controle
390effectué par Allegro sur le poste client sont des vérifications sur les champs obligatoires, ou
391encore sur la cohérence des données (cas d'un arbre d'échantillonnage).
392     * @param validationDate Date de validation de la donnée.
393La validation est typiquement effectué par un thématicien responsable des données. Dans Allegro, il
394s'agit du superviseur du portefeuille de données qui en est responsable.
395     * @param qualificationDate Date de qualification de la donnée.
396L'étape de qualification est liée à l'affectation d'un flag qualité (bon, mauvais, etc.) sur la
397donnée.
398- la qualification n'est pas encore gérée dans Allegro, dans le sens ou il n'existe pass encore
399d'interface pour affecter le flag qualité. Par défaut, le niveau de qualité est donc à "non
400qualifiée"
401     * @param qualificationComments 
402     * @return SamplingStrataMeasurement
403     */
404    public Object create(
405        int transform,
406        Float numericalValue,
407        String alphanumericalValue,
408        Integer digitCount,
409        Float precisionValue,
410        Date controlDate,
411        Date validationDate,
412        Date qualificationDate,
413        String qualificationComments);
414
415    /**
416     * <p>
417     * Creates a new <code>SamplingStrataMeasurement</code>
418     * instance from only <strong>required</strong> properties (attributes
419     * and association ends) and adds it to the persistent store.
420     * </p>
421     * @param pmfm
422     * @param qualityFlag
423     * @param samplingStrata
424     * @return SamplingStrataMeasurement
425     */
426    public SamplingStrataMeasurement create(
427        Pmfm pmfm,
428        QualityFlag qualityFlag,
429        SamplingStrata samplingStrata);
430
431    /**
432     * <p>
433     * Does the same thing as {@link #create()} with an
434     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
435     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
436     * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
437     * transform the entity (into a value object for example). By default, transformation does
438     * not occur.
439     * </p>
440     * @param transform flag to determine transformation type.
441     * @param pmfm
442     * @param qualityFlag
443     * @param samplingStrata
444     * @return Object
445     */
446    public Object create(
447        int transform,
448        Pmfm pmfm,
449        QualityFlag qualityFlag,
450        SamplingStrata samplingStrata);
451
452    /**
453     * Updates the <code>samplingStrataMeasurement</code> instance in the persistent store.
454     * @param samplingStrataMeasurement
455     */
456    public void update(SamplingStrataMeasurement samplingStrataMeasurement);
457
458    /**
459     * Updates all instances in the <code>entities</code> collection in the persistent store.
460     * @param entities
461     */
462    public void update(Collection<SamplingStrataMeasurement> entities);
463
464    /**
465     * Removes the instance of SamplingStrataMeasurement from the persistent store.
466     * @param samplingStrataMeasurement
467     */
468    public void remove(SamplingStrataMeasurement samplingStrataMeasurement);
469
470    /**
471     * Removes the instance of SamplingStrataMeasurement having the given
472     * <code>identifier</code> from the persistent store.
473     * @param id
474     */
475    public void remove(Integer id);
476
477    /**
478     * Removes all entities in the given <code>entities</code> collection.
479     * @param entities
480     */
481    public void remove(Collection<SamplingStrataMeasurement> entities);
482
483
484    /**
485     * Does the same thing as {@link #search(int, Search)} but with an
486     * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
487     * limit your data to a specified page number and size.
488     *
489     * @param transform the transformation flag.
490     * @param pageNumber the page number in the data to retrieve
491     * @param pageSize the size of the page to retrieve.
492     * @param search the search object which provides the search parameters and pagination specification.
493     * @return any found results from the search wrapped in a {@link PaginationResult} instance.
494     */
495    public PaginationResult search(final int transform, final int pageNumber, final int pageSize, final Search search);
496
497    /**
498     * Does the same thing as {@link #search(Search)} but with an
499     * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
500     * limit your data to a specified page number and size.
501     *
502     * @param pageNumber the page number in the data to retrieve
503     * @param pageSize the size of the page to retrieve.
504     * @param search the search object which provides the search parameters and pagination specification.
505     * @return any found results from the search wrapped in a {@link PaginationResult} instance.
506     */
507    public PaginationResult search(final int pageNumber, final int pageSize, final Search search);
508
509    /**
510     * Does the same thing as {@link #search(Search)} but with an
511     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
512     * finder results will <strong>NOT</strong> be transformed during retrieval.
513     * If this flag is any of the other constants defined here
514     * then results <strong>WILL BE</strong> passed through an operation which can optionally
515     * transform the entities (into value objects for example). By default, transformation does
516     * not occur.
517     *
518     * @param transform the transformation flag.
519     * @param search the search object which provides the search parameters and pagination specification.
520     * @return any found results from the search.
521     */
522    public Set<?> search(final int transform, final Search search);
523
524    /**
525     * Performs a search using the parameters specified in the given <code>search</code> object.
526     *
527     * @param search the search object which provides the search parameters and pagination specification.
528     * @return any found results from the search.
529     */
530    public Set<SamplingStrataMeasurement> search(final Search search);
531
532    /**
533     * Allows transformation of entities into value objects
534     * (or something else for that matter), when the <code>transform</code>
535     * flag is set to one of the constants defined in <code>fr.ifremer.adagio.core.dao.data.measure.SamplingStrataMeasurementDao</code>, please note
536     * that the {@link #TRANSFORM_NONE} constant denotes no transformation, so the entity itself
537     * will be returned.
538     *
539     * If the integer argument value is unknown {@link #TRANSFORM_NONE} is assumed.
540     *
541     * @param transform one of the constants declared in {@link fr.ifremer.adagio.core.dao.data.measure.SamplingStrataMeasurementDao}
542     * @param entity an entity that was found
543     * @return the transformed entity (i.e. new value object, etc)
544     * @see #transformEntities(int,Collection)
545     */
546    public Object transformEntity(final int transform, final SamplingStrataMeasurement entity);
547
548    /**
549     * Transforms a collection of entities using the
550     * {@link #transformEntity(int,SamplingStrataMeasurement)}
551     * method. This method does not instantiate a new collection.
552     * <p>
553     * This method is to be used internally only.
554     *
555     * @param transform one of the constants declared in <code>fr.ifremer.adagio.core.dao.data.measure.SamplingStrataMeasurementDao</code>
556     * @param entities the collection of entities to transform
557     * @see #transformEntity(int,SamplingStrataMeasurement)
558     */
559    public void transformEntities(final int transform, final Collection<?> entities);
560
561    // spring-dao merge-point
562}