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.samplingScheme;
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 java.sql.Timestamp;
033import java.util.Collection;
034import java.util.Date;
035import java.util.Set;
036import org.andromda.spring.PaginationResult;
037
038/**
039 * Représente une ligne du plan d'échantillonnage.
040 * @since v3.2.0
041 * @see SamplingStrata
042 */
043public interface SamplingStrataDao
044{
045    /**
046     * This constant is used as a transformation flag; entities can be converted automatically into value objects
047     * or other types, different methods in a class implementing this interface support this feature: look for
048     * an <code>int</code> parameter called <code>transform</code>.
049     * <p>
050     * This specific flag denotes no transformation will occur.
051     */
052    public static final int TRANSFORM_NONE = 0;
053
054
055    /**
056     * Transforms the given results to a collection of {@link SamplingStrata}
057     * instances (this is useful when the returned results contains a row of data and you want just entities only).
058     *
059     * @param results the query results.
060     */
061    public void toEntities(final Collection<?> results);
062
063    /**
064     * Gets an instance of SamplingStrata from the persistent store.
065     * @param id
066     * @return SamplingStrata
067     */
068    public SamplingStrata get(Integer id);
069
070    /**
071     * <p>
072     * Does the same thing as {@link #get(Integer)} with an
073     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
074     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
075     * defined in this class then the result <strong>WILL BE</strong> passed through an operation which can
076     * optionally transform the entity (into a value object for example). By default, transformation does
077     * not occur.
078     * </p>
079     *
080     * @param transform flag to determine transformation type.
081     * @param id the identifier of the entity to get.
082     * @return either the entity or the object transformed from the entity.
083     */
084    public Object get(int transform, Integer id);
085
086    /**
087     * Loads an instance of SamplingStrata from the persistent store.
088     * @param id
089     * @return SamplingStrata
090     */
091    public SamplingStrata load(Integer id);
092
093    /**
094     * <p>
095     * Does the same thing as {@link #load(Integer)} with an
096     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
097     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
098     * defined in this class then the result <strong>WILL BE</strong> passed through an operation which can
099     * optionally transform the entity (into a value object for example). By default, transformation does
100     * not occur.
101     * </p>
102     *
103     * @param transform flag to determine transformation type.
104     * @param id the identifier of the entity to load.
105     * @return either the entity or the object transformed from the entity.
106     */
107    public Object load(int transform, Integer id);
108
109    /**
110     * Loads all entities of type {@link SamplingStrata}.
111     *
112     * @return the loaded entities.
113     */
114    public Collection<SamplingStrata> loadAll();
115
116    /**
117     * <p>
118     * Does the same thing as {@link #loadAll()} with an
119     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
120     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
121     * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
122     * transform the entity (into a value object for example). By default, transformation does
123     * not occur.
124     * </p>
125     *
126     * @param transform the flag indicating what transformation to use.
127     * @return the loaded entities.
128     */
129    public Collection<?> loadAll(final int transform);
130
131    /**
132     * <p>
133     * Does the same thing as {@link #loadAll()} with an
134     * additional two arguments called <code>pageNumber</code> and <code>pageSize</code>. The <code>pageNumber</code>
135     * 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
136     * page retrieved.
137     * </p>
138     *
139     * @param pageNumber the page number to retrieve when paging results.
140     * @param pageSize the size of the page to retrieve when paging results.
141     * @return the loaded entities.
142     */
143    public Collection<?> loadAll(final int pageNumber, final int pageSize);
144
145    /**
146     * <p>
147     * Does the same thing as {@link #loadAll(int)} with an
148     * additional two arguments called <code>pageNumber</code> and <code>pageSize</code>. The <code>pageNumber</code>
149     * 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
150     * page retrieved.
151     * </p>
152     *
153     * @param transform the flag indicating what transformation to use.
154     * @param pageNumber the page number to retrieve when paging results.
155     * @param pageSize the size of the page to retrieve when paging results.
156     * @return the loaded entities.
157     */
158    public Collection<?> loadAll(final int transform, final int pageNumber, final int pageSize);
159
160    /**
161     * Creates an instance of SamplingStrata and adds it to the persistent store.
162     * @param samplingStrata
163     * @return SamplingStrata
164     */
165    public SamplingStrata create(SamplingStrata samplingStrata);
166
167    /**
168     * <p>
169     * Does the same thing as {@link #create(SamplingStrata)} with an
170     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
171     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
172     * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
173     * transform the entity (into a value object for example). By default, transformation does
174     * not occur.
175     * </p>
176     * @param transform
177     * @param samplingStrata
178     * @return Object
179     */
180    public Object create(int transform, SamplingStrata samplingStrata);
181
182    /**
183     * Creates a new instance of SamplingStrata and adds
184     * from the passed in <code>entities</code> collection
185     *
186     * @param entities the collection of SamplingStrata
187     * instances to create.
188     *
189     * @return the created instances.
190     */
191    public Collection<SamplingStrata> create(Collection<SamplingStrata> entities);
192
193    /**
194     * <p>
195     * Does the same thing as {@link #create(SamplingStrata)} with an
196     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
197     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
198     * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
199     * transform the entities (into value objects for example). By default, transformation does
200     * not occur.
201     * </p>
202     * @param transform
203     * @param entities
204     * @return Collection
205     */
206    public Collection<?> create(int transform, Collection<SamplingStrata> entities);
207
208    /**
209     * <p>
210     * Creates a new <code>SamplingStrata</code>
211     * instance from <strong>all</strong> attributes and adds it to
212     * the persistent store.
213     * </p>
214     * @param label Mnémonique de la ligne du plan.
215Ce mnémonique doit être unique en base (clef naturelle) pour tout les plans d'échantillonnage de la
216base de données, car il s'agit d'un code fréquemment utilisé pour identifier une ligne de plan.
217     * @param startDate 
218     * @param endDate 
219     * @param description Nom de la strate.
220Dans WAO : METIER_LIBELLE
221"Chalutage hauturier à démerseaux à grand fond"
222TODO : à renommer en "name" ?
223     * @param comments Commentaires sur la strate.
224Dans WAO : PLAN_COMMENT
225     * @param updateDate 
226     * @return SamplingStrata
227     */
228    public SamplingStrata create(
229        String label,
230        Date startDate,
231        Date endDate,
232        String description,
233        String comments,
234        Timestamp updateDate);
235
236    /**
237     * <p>
238     * Does the same thing as {@link #create(String, Date, Date, String, String, Timestamp)} with an
239     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
240     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
241     * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
242     * transform the entity (into a value object for example). By default, transformation does
243     * not occur.
244     * </p>
245     * @param transform
246     * @param label Mnémonique de la ligne du plan.
247Ce mnémonique doit être unique en base (clef naturelle) pour tout les plans d'échantillonnage de la
248base de données, car il s'agit d'un code fréquemment utilisé pour identifier une ligne de plan.
249     * @param startDate 
250     * @param endDate 
251     * @param description Nom de la strate.
252Dans WAO : METIER_LIBELLE
253"Chalutage hauturier à démerseaux à grand fond"
254TODO : à renommer en "name" ?
255     * @param comments Commentaires sur la strate.
256Dans WAO : PLAN_COMMENT
257     * @param updateDate 
258     * @return SamplingStrata
259     */
260    public Object create(
261        int transform,
262        String label,
263        Date startDate,
264        Date endDate,
265        String description,
266        String comments,
267        Timestamp updateDate);
268
269    /**
270     * <p>
271     * Creates a new <code>SamplingStrata</code>
272     * instance from only <strong>required</strong> properties (attributes
273     * and association ends) and adds it to the persistent store.
274     * </p>
275     * @param label
276     * @param samplingScheme
277     * @param updateDate
278     * @return SamplingStrata
279     */
280    public SamplingStrata create(
281        String label,
282        SamplingScheme samplingScheme,
283        Timestamp updateDate);
284
285    /**
286     * <p>
287     * Does the same thing as {@link #create(String, Timestamp)} with an
288     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
289     * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
290     * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
291     * transform the entity (into a value object for example). By default, transformation does
292     * not occur.
293     * </p>
294     * @param transform flag to determine transformation type.
295     * @param label
296     * @param samplingScheme
297     * @param updateDate
298     * @return Object
299     */
300    public Object create(
301        int transform,
302        String label,
303        SamplingScheme samplingScheme,
304        Timestamp updateDate);
305
306    /**
307     * Updates the <code>samplingStrata</code> instance in the persistent store.
308     * @param samplingStrata
309     */
310    public void update(SamplingStrata samplingStrata);
311
312    /**
313     * Updates all instances in the <code>entities</code> collection in the persistent store.
314     * @param entities
315     */
316    public void update(Collection<SamplingStrata> entities);
317
318    /**
319     * Removes the instance of SamplingStrata from the persistent store.
320     * @param samplingStrata
321     */
322    public void remove(SamplingStrata samplingStrata);
323
324    /**
325     * Removes the instance of SamplingStrata having the given
326     * <code>identifier</code> from the persistent store.
327     * @param id
328     */
329    public void remove(Integer id);
330
331    /**
332     * Removes all entities in the given <code>entities</code> collection.
333     * @param entities
334     */
335    public void remove(Collection<SamplingStrata> entities);
336
337
338    /**
339     * Does the same thing as {@link #search(int, Search)} but with an
340     * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
341     * limit your data to a specified page number and size.
342     *
343     * @param transform the transformation flag.
344     * @param pageNumber the page number in the data to retrieve
345     * @param pageSize the size of the page to retrieve.
346     * @param search the search object which provides the search parameters and pagination specification.
347     * @return any found results from the search wrapped in a {@link PaginationResult} instance.
348     */
349    public PaginationResult search(final int transform, final int pageNumber, final int pageSize, final Search search);
350
351    /**
352     * Does the same thing as {@link #search(Search)} but with an
353     * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
354     * limit your data to a specified page number and size.
355     *
356     * @param pageNumber the page number in the data to retrieve
357     * @param pageSize the size of the page to retrieve.
358     * @param search the search object which provides the search parameters and pagination specification.
359     * @return any found results from the search wrapped in a {@link PaginationResult} instance.
360     */
361    public PaginationResult search(final int pageNumber, final int pageSize, final Search search);
362
363    /**
364     * Does the same thing as {@link #search(Search)} but with an
365     * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
366     * finder results will <strong>NOT</strong> be transformed during retrieval.
367     * If this flag is any of the other constants defined here
368     * then results <strong>WILL BE</strong> passed through an operation which can optionally
369     * transform the entities (into value objects for example). By default, transformation does
370     * not occur.
371     *
372     * @param transform the transformation flag.
373     * @param search the search object which provides the search parameters and pagination specification.
374     * @return any found results from the search.
375     */
376    public Set<?> search(final int transform, final Search search);
377
378    /**
379     * Performs a search using the parameters specified in the given <code>search</code> object.
380     *
381     * @param search the search object which provides the search parameters and pagination specification.
382     * @return any found results from the search.
383     */
384    public Set<SamplingStrata> search(final Search search);
385
386    /**
387     * Allows transformation of entities into value objects
388     * (or something else for that matter), when the <code>transform</code>
389     * flag is set to one of the constants defined in <code>fr.ifremer.adagio.core.dao.data.samplingScheme.SamplingStrataDao</code>, please note
390     * that the {@link #TRANSFORM_NONE} constant denotes no transformation, so the entity itself
391     * will be returned.
392     *
393     * If the integer argument value is unknown {@link #TRANSFORM_NONE} is assumed.
394     *
395     * @param transform one of the constants declared in {@link fr.ifremer.adagio.core.dao.data.samplingScheme.SamplingStrataDao}
396     * @param entity an entity that was found
397     * @return the transformed entity (i.e. new value object, etc)
398     * @see #transformEntities(int,Collection)
399     */
400    public Object transformEntity(final int transform, final SamplingStrata entity);
401
402    /**
403     * Transforms a collection of entities using the
404     * {@link #transformEntity(int,SamplingStrata)}
405     * method. This method does not instantiate a new collection.
406     * <p>
407     * This method is to be used internally only.
408     *
409     * @param transform one of the constants declared in <code>fr.ifremer.adagio.core.dao.data.samplingScheme.SamplingStrataDao</code>
410     * @param entities the collection of entities to transform
411     * @see #transformEntity(int,SamplingStrata)
412     */
413    public void transformEntities(final int transform, final Collection<?> entities);
414
415    // spring-dao merge-point
416}