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.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.Search;
032import fr.ifremer.adagio.core.dao.referential.Status;
033import fr.ifremer.adagio.core.dao.referential.ValidityStatus;
034import java.sql.Timestamp;
035import java.util.Collection;
036import java.util.Date;
037import java.util.Set;
038import org.andromda.spring.PaginationResult;
039
040/**
041 * Quadruplet paramètre/support/méthode/fraction. Ce quadruplet est systématiquement associé aux
042 * résultats et décrit précisemment les conditions de mesure/d'analyse de ceux-ci.
043 * @see Pmfm
044 */
045public interface PmfmDao
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 Pmfm}
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 Pmfm from the persistent store.
067     * @param id
068     * @return Pmfm
069     */
070    public Pmfm 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 Pmfm from the persistent store.
090     * @param id
091     * @return Pmfm
092     */
093    public Pmfm 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 Pmfm}.
113     *
114     * @return the loaded entities.
115     */
116    public Collection<Pmfm> 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 Pmfm and adds it to the persistent store.
164     * @param pmfm
165     * @return Pmfm
166     */
167    public Pmfm create(Pmfm pmfm);
168
169    /**
170     * <p>
171     * Does the same thing as {@link #create(Pmfm)} 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 pmfm
180     * @return Object
181     */
182    public Object create(int transform, Pmfm pmfm);
183
184    /**
185     * Creates a new instance of Pmfm and adds
186     * from the passed in <code>entities</code> collection
187     *
188     * @param entities the collection of Pmfm
189     * instances to create.
190     *
191     * @return the created instances.
192     */
193    public Collection<Pmfm> create(Collection<Pmfm> entities);
194
195    /**
196     * <p>
197     * Does the same thing as {@link #create(Pmfm)} 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<Pmfm> entities);
209
210    /**
211     * <p>
212     * Creates a new <code>Pmfm</code>
213     * instance from <strong>all</strong> attributes and adds it to
214     * the persistent store.
215     * </p>
216     * @param signifFiguresNumber Nombre de chiffres significatifs en tout du résultat pour le quadruplet concerné.
217     * @param maximumNumberDecimals Nombre de décimales significatives pour le résultat mesuré/analysé suivant le quadruplet lié.
218     * @param detectionThreshold Seuil de détection des instruments de mesure et de la méthode associée.
219     * @param minValue Valeur mimimale autorisée par défaut (peut etre redéfini dans les stratégies).
220     * @param maxValue Valeur maximale autorisée par défaut (peut etre redéfini dans les stratégies).
221     * @param precision 
222     * @param defaultValue Précision de la mesure associé pour le PSFM.Typiquement, cette précision est utile lors de la saisie
223de plusieursinstruments et de la méthode associée.
224     * @param creationDate 
225     * @param description 
226     * @param comments 
227     * @param updateDate 
228     * @return Pmfm
229     */
230    public Pmfm create(
231        Integer signifFiguresNumber,
232        Integer maximumNumberDecimals,
233        Float detectionThreshold,
234        Float minValue,
235        Float maxValue,
236        Float precision,
237        Float defaultValue,
238        Date creationDate,
239        String description,
240        String comments,
241        Timestamp updateDate);
242
243    /**
244     * <p>
245     * Does the same thing as {@link #create(Integer, Integer, Float, Float, Float, Float, Float, Date, String, String, Timestamp)} with an
246     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
247     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
248     * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
249     * transform the entity (into a value object for example). By default, transformation does
250     * not occur.
251     * </p>
252     * @param transform
253     * @param signifFiguresNumber Nombre de chiffres significatifs en tout du résultat pour le quadruplet concerné.
254     * @param maximumNumberDecimals Nombre de décimales significatives pour le résultat mesuré/analysé suivant le quadruplet lié.
255     * @param detectionThreshold Seuil de détection des instruments de mesure et de la méthode associée.
256     * @param minValue Valeur mimimale autorisée par défaut (peut etre redéfini dans les stratégies).
257     * @param maxValue Valeur maximale autorisée par défaut (peut etre redéfini dans les stratégies).
258     * @param precision 
259     * @param defaultValue Précision de la mesure associé pour le PSFM.Typiquement, cette précision est utile lors de la saisie
260de plusieursinstruments et de la méthode associée.
261     * @param creationDate 
262     * @param description 
263     * @param comments 
264     * @param updateDate 
265     * @return Pmfm
266     */
267    public Object create(
268        int transform,
269        Integer signifFiguresNumber,
270        Integer maximumNumberDecimals,
271        Float detectionThreshold,
272        Float minValue,
273        Float maxValue,
274        Float precision,
275        Float defaultValue,
276        Date creationDate,
277        String description,
278        String comments,
279        Timestamp updateDate);
280
281    /**
282     * <p>
283     * Creates a new <code>Pmfm</code>
284     * instance from only <strong>required</strong> properties (attributes
285     * and association ends) and adds it to the persistent store.
286     * </p>
287     * @param aggregationLevel
288     * @param creationDate
289     * @param fraction
290     * @param matrix
291     * @param method
292     * @param parameter
293     * @param status
294     * @param unit
295     * @param updateDate
296     * @param validityStatus
297     * @return Pmfm
298     */
299    public Pmfm create(
300        AggregationLevel aggregationLevel,
301        Date creationDate,
302        Fraction fraction,
303        Matrix matrix,
304        Method method,
305        Parameter parameter,
306        Status status,
307        Unit unit,
308        Timestamp updateDate,
309        ValidityStatus validityStatus);
310
311    /**
312     * <p>
313     * Does the same thing as {@link #create(Date, Timestamp)} with an
314     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
315     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
316     * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
317     * transform the entity (into a value object for example). By default, transformation does
318     * not occur.
319     * </p>
320     * @param transform flag to determine transformation type.
321     * @param aggregationLevel
322     * @param creationDate
323     * @param fraction
324     * @param matrix
325     * @param method
326     * @param parameter
327     * @param status
328     * @param unit
329     * @param updateDate
330     * @param validityStatus
331     * @return Object
332     */
333    public Object create(
334        int transform,
335        AggregationLevel aggregationLevel,
336        Date creationDate,
337        Fraction fraction,
338        Matrix matrix,
339        Method method,
340        Parameter parameter,
341        Status status,
342        Unit unit,
343        Timestamp updateDate,
344        ValidityStatus validityStatus);
345
346    /**
347     * Updates the <code>pmfm</code> instance in the persistent store.
348     * @param pmfm
349     */
350    public void update(Pmfm pmfm);
351
352    /**
353     * Updates all instances in the <code>entities</code> collection in the persistent store.
354     * @param entities
355     */
356    public void update(Collection<Pmfm> entities);
357
358    /**
359     * Removes the instance of Pmfm from the persistent store.
360     * @param pmfm
361     */
362    public void remove(Pmfm pmfm);
363
364    /**
365     * Removes the instance of Pmfm having the given
366     * <code>identifier</code> from the persistent store.
367     * @param id
368     */
369    public void remove(Integer id);
370
371    /**
372     * Removes all entities in the given <code>entities</code> collection.
373     * @param entities
374     */
375    public void remove(Collection<Pmfm> entities);
376
377
378    /**
379     * Does the same thing as {@link #search(int, Search)} but with an
380     * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
381     * limit your data to a specified page number and size.
382     *
383     * @param transform the transformation flag.
384     * @param pageNumber the page number in the data to retrieve
385     * @param pageSize the size of the page to retrieve.
386     * @param search the search object which provides the search parameters and pagination specification.
387     * @return any found results from the search wrapped in a {@link PaginationResult} instance.
388     */
389    public PaginationResult search(final int transform, final int pageNumber, final int pageSize, final Search search);
390
391    /**
392     * Does the same thing as {@link #search(Search)} but with an
393     * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
394     * limit your data to a specified page number and size.
395     *
396     * @param pageNumber the page number in the data to retrieve
397     * @param pageSize the size of the page to retrieve.
398     * @param search the search object which provides the search parameters and pagination specification.
399     * @return any found results from the search wrapped in a {@link PaginationResult} instance.
400     */
401    public PaginationResult search(final int pageNumber, final int pageSize, final Search search);
402
403    /**
404     * Does the same thing as {@link #search(Search)} but with an
405     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
406     * finder results will <strong>NOT</strong> be transformed during retrieval.
407     * If this flag is any of the other constants defined here
408     * then results <strong>WILL BE</strong> passed through an operation which can optionally
409     * transform the entities (into value objects for example). By default, transformation does
410     * not occur.
411     *
412     * @param transform the transformation flag.
413     * @param search the search object which provides the search parameters and pagination specification.
414     * @return any found results from the search.
415     */
416    public Set<?> search(final int transform, final Search search);
417
418    /**
419     * Performs a search using the parameters specified in the given <code>search</code> object.
420     *
421     * @param search the search object which provides the search parameters and pagination specification.
422     * @return any found results from the search.
423     */
424    public Set<Pmfm> search(final Search search);
425
426    /**
427     * Allows transformation of entities into value objects
428     * (or something else for that matter), when the <code>transform</code>
429     * flag is set to one of the constants defined in <code>fr.ifremer.adagio.core.dao.referential.pmfm.PmfmDao</code>, please note
430     * that the {@link #TRANSFORM_NONE} constant denotes no transformation, so the entity itself
431     * will be returned.
432     *
433     * If the integer argument value is unknown {@link #TRANSFORM_NONE} is assumed.
434     *
435     * @param transform one of the constants declared in {@link fr.ifremer.adagio.core.dao.referential.pmfm.PmfmDao}
436     * @param entity an entity that was found
437     * @return the transformed entity (i.e. new value object, etc)
438     * @see #transformEntities(int,Collection)
439     */
440    public Object transformEntity(final int transform, final Pmfm entity);
441
442    /**
443     * Transforms a collection of entities using the
444     * {@link #transformEntity(int,Pmfm)}
445     * method. This method does not instantiate a new collection.
446     * <p>
447     * This method is to be used internally only.
448     *
449     * @param transform one of the constants declared in <code>fr.ifremer.adagio.core.dao.referential.pmfm.PmfmDao</code>
450     * @param entities the collection of entities to transform
451     * @see #transformEntity(int,Pmfm)
452     */
453    public void transformEntities(final int transform, final Collection<?> entities);
454
455    // spring-dao merge-point
456}