View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: Generated code! Do not modify by hand!
4   // Generated by: SpringDao.vsl in andromda-spring-cartridge.
5   //
6   package fr.ifremer.quadrige2.core.dao.data.sample;
7   
8   /*-
9    * #%L
10   * Quadrige2 Core :: Server API
11   * %%
12   * Copyright (C) 2017 Ifremer
13   * %%
14   * This program is free software: you can redistribute it and/or modify
15   * it under the terms of the GNU Affero General Public License as published by
16   * the Free Software Foundation, either version 3 of the License, or
17   * (at your option) any later version.
18   * 
19   * This program is distributed in the hope that it will be useful,
20   * but WITHOUT ANY WARRANTY; without even the implied warranty of
21   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22   * GNU General Public License for more details.
23   * 
24   * You should have received a copy of the GNU Affero General Public License
25   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
26   * #L%
27   */
28  
29  import fr.ifremer.quadrige2.core.dao.Search;
30  import fr.ifremer.quadrige2.core.dao.administration.user.Department;
31  import fr.ifremer.quadrige2.core.dao.data.samplingoperation.SamplingOperation;
32  import fr.ifremer.quadrige2.core.dao.referential.QualityFlag;
33  import fr.ifremer.quadrige2.core.dao.referential.pmfm.Matrix;
34  import java.sql.Timestamp;
35  import java.util.Collection;
36  import java.util.Date;
37  import java.util.Set;
38  import org.andromda.spring.PaginationResult;
39  
40  /**
41   * Liste les échantillons prélevés lors d'un passage sur un lieu de surveillance.
42   * @see Sample
43   */
44  public interface SampleDao
45  {
46      /**
47       * This constant is used as a transformation flag; entities can be converted automatically into value objects
48       * or other types, different methods in a class implementing this interface support this feature: look for
49       * an <code>int</code> parameter called <code>transform</code>.
50       * <p>
51       * This specific flag denotes no transformation will occur.
52       */
53      public static final int TRANSFORM_NONE = 0;
54  
55  
56      /**
57       * Transforms the given results to a collection of {@link Sample}
58       * instances (this is useful when the returned results contains a row of data and you want just entities only).
59       *
60       * @param results the query results.
61       */
62      public void toEntities(final Collection<?> results);
63  
64      /**
65       * Gets an instance of Sample from the persistent store.
66       * @param sampleId
67       * @return Sample
68       */
69      public Sample get(Integer sampleId);
70  
71      /**
72       * <p>
73       * Does the same thing as {@link #get(Integer)} with an
74       * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
75       * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
76       * defined in this class then the result <strong>WILL BE</strong> passed through an operation which can
77       * optionally transform the entity (into a value object for example). By default, transformation does
78       * not occur.
79       * </p>
80       *
81       * @param transform flag to determine transformation type.
82       * @param sampleId the identifier of the entity to get.
83       * @return either the entity or the object transformed from the entity.
84       */
85      public Object get(int transform, Integer sampleId);
86  
87      /**
88       * Loads an instance of Sample from the persistent store.
89       * @param sampleId
90       * @return Sample
91       */
92      public Sample load(Integer sampleId);
93  
94      /**
95       * <p>
96       * Does the same thing as {@link #load(Integer)} with an
97       * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
98       * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
99       * defined in this class then the result <strong>WILL BE</strong> passed through an operation which can
100      * optionally transform the entity (into a value object for example). By default, transformation does
101      * not occur.
102      * </p>
103      *
104      * @param transform flag to determine transformation type.
105      * @param sampleId the identifier of the entity to load.
106      * @return either the entity or the object transformed from the entity.
107      */
108     public Object load(int transform, Integer sampleId);
109 
110     /**
111      * Loads all entities of type {@link Sample}.
112      *
113      * @return the loaded entities.
114      */
115     public Collection<Sample> loadAll();
116 
117     /**
118      * <p>
119      * Does the same thing as {@link #loadAll()} with an
120      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
121      * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
122      * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
123      * transform the entity (into a value object for example). By default, transformation does
124      * not occur.
125      * </p>
126      *
127      * @param transform the flag indicating what transformation to use.
128      * @return the loaded entities.
129      */
130     public Collection<?> loadAll(final int transform);
131 
132     /**
133      * <p>
134      * Does the same thing as {@link #loadAll()} with an
135      * additional two arguments called <code>pageNumber</code> and <code>pageSize</code>. The <code>pageNumber</code>
136      * 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
137      * page retrieved.
138      * </p>
139      *
140      * @param pageNumber the page number to retrieve when paging results.
141      * @param pageSize the size of the page to retrieve when paging results.
142      * @return the loaded entities.
143      */
144     public Collection<?> loadAll(final int pageNumber, final int pageSize);
145 
146     /**
147      * <p>
148      * Does the same thing as {@link #loadAll(int)} with an
149      * additional two arguments called <code>pageNumber</code> and <code>pageSize</code>. The <code>pageNumber</code>
150      * 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
151      * page retrieved.
152      * </p>
153      *
154      * @param transform the flag indicating what transformation to use.
155      * @param pageNumber the page number to retrieve when paging results.
156      * @param pageSize the size of the page to retrieve when paging results.
157      * @return the loaded entities.
158      */
159     public Collection<?> loadAll(final int transform, final int pageNumber, final int pageSize);
160 
161     /**
162      * Creates an instance of Sample and adds it to the persistent store.
163      * @param sample
164      * @return Sample
165      */
166     public Sample create(Sample sample);
167 
168     /**
169      * <p>
170      * Does the same thing as {@link #create(Sample)} with an
171      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
172      * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
173      * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
174      * transform the entity (into a value object for example). By default, transformation does
175      * not occur.
176      * </p>
177      * @param transform
178      * @param sample
179      * @return Object
180      */
181     public Object create(int transform, Sample sample);
182 
183     /**
184      * Creates a new instance of Sample and adds
185      * from the passed in <code>entities</code> collection
186      *
187      * @param entities the collection of Sample
188      * instances to create.
189      *
190      * @return the created instances.
191      */
192     public Collection<Sample> create(Collection<Sample> entities);
193 
194     /**
195      * <p>
196      * Does the same thing as {@link #create(Sample)} with an
197      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
198      * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
199      * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
200      * transform the entities (into value objects for example). By default, transformation does
201      * not occur.
202      * </p>
203      * @param transform
204      * @param entities
205      * @return Collection
206      */
207     public Collection<?> create(int transform, Collection<Sample> entities);
208 
209     /**
210      * <p>
211      * Creates a new <code>Sample</code>
212      * instance from <strong>all</strong> attributes and adds it to
213      * the persistent store.
214      * </p>
215      * @param sampleLb Mmnémonique de l'échantillon
216      * @param sampleNumberIndiv Nombre d'individus constituant l'échantillon. Ce nombre permet de connaître le nombre d'individus
217 constituant la grille de saisie.
218      * @param sampleSize La taille de l'échantillon peut représenter une surface ou un volume suivant les cas. Il peut aussi
219 s'agir du nombre d'individus entrant dans l'homogénat.
220      * @param sampleCm Commentaire de l'échantillon
221      * @param sampleControlDt Date de contrôle de l'échantillon
222      * @param sampleValidDt Date de validation de l'échantillon
223      * @param sampleQualifDt Date de qualification de l'échantillon
224      * @param sampleQualifCm Commentaire de qualification
225      * @param sampleScope Vrai si l'étape de qualification est globale, faux si des éléments fils ou résultats n'ont pas la
226 même étape
227      * @param sampleHasMeas Vrai si l'élément a des résultats de mesure, dénombrement ou fichier
228      * @param updateDt Date de modification de l'objet, mise à jour par le système
229      * @return Sample
230      */
231     public Sample create(
232         String sampleLb,
233         Double sampleNumberIndiv,
234         Float sampleSize,
235         String sampleCm,
236         Date sampleControlDt,
237         Date sampleValidDt,
238         Date sampleQualifDt,
239         String sampleQualifCm,
240         String sampleScope,
241         String sampleHasMeas,
242         Timestamp updateDt);
243 
244     /**
245      * <p>
246      * Does the same thing as {@link #create(String, Double, Float, String, Date, Date, Date, String, String, String, Timestamp)} with an
247      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
248      * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
249      * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
250      * transform the entity (into a value object for example). By default, transformation does
251      * not occur.
252      * </p>
253      * @param transform
254      * @param sampleLb Mmnémonique de l'échantillon
255      * @param sampleNumberIndiv Nombre d'individus constituant l'échantillon. Ce nombre permet de connaître le nombre d'individus
256 constituant la grille de saisie.
257      * @param sampleSize La taille de l'échantillon peut représenter une surface ou un volume suivant les cas. Il peut aussi
258 s'agir du nombre d'individus entrant dans l'homogénat.
259      * @param sampleCm Commentaire de l'échantillon
260      * @param sampleControlDt Date de contrôle de l'échantillon
261      * @param sampleValidDt Date de validation de l'échantillon
262      * @param sampleQualifDt Date de qualification de l'échantillon
263      * @param sampleQualifCm Commentaire de qualification
264      * @param sampleScope Vrai si l'étape de qualification est globale, faux si des éléments fils ou résultats n'ont pas la
265 même étape
266      * @param sampleHasMeas Vrai si l'élément a des résultats de mesure, dénombrement ou fichier
267      * @param updateDt Date de modification de l'objet, mise à jour par le système
268      * @return Sample
269      */
270     public Object create(
271         int transform,
272         String sampleLb,
273         Double sampleNumberIndiv,
274         Float sampleSize,
275         String sampleCm,
276         Date sampleControlDt,
277         Date sampleValidDt,
278         Date sampleQualifDt,
279         String sampleQualifCm,
280         String sampleScope,
281         String sampleHasMeas,
282         Timestamp updateDt);
283 
284     /**
285      * <p>
286      * Creates a new <code>Sample</code>
287      * instance from only <strong>required</strong> properties (attributes
288      * and association ends) and adds it to the persistent store.
289      * </p>
290      * @param updateDt
291      * @param recorderDepartment
292      * @param matrix
293      * @param qualityFlag
294      * @param samplingOperation
295      * @return Sample
296      */
297     public Sample create(
298         Timestamp updateDt,
299         Department recorderDepartment,
300         Matrix matrix,
301         QualityFlag qualityFlag,
302         SamplingOperation samplingOperation);
303 
304     /**
305      * <p>
306      * Does the same thing as {@link #create(Timestamp)} with an
307      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
308      * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
309      * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
310      * transform the entity (into a value object for example). By default, transformation does
311      * not occur.
312      * </p>
313      * @param transform flag to determine transformation type.
314      * @param updateDt
315      * @param recorderDepartment
316      * @param matrix
317      * @param qualityFlag
318      * @param samplingOperation
319      * @return Object
320      */
321     public Object create(
322         int transform,
323         Timestamp updateDt,
324         Department recorderDepartment,
325         Matrix matrix,
326         QualityFlag qualityFlag,
327         SamplingOperation samplingOperation);
328 
329     /**
330      * Updates the <code>sample</code> instance in the persistent store.
331      * @param sample
332      */
333     public void update(Sample sample);
334 
335     /**
336      * Updates all instances in the <code>entities</code> collection in the persistent store.
337      * @param entities
338      */
339     public void update(Collection<Sample> entities);
340 
341     /**
342      * Removes the instance of Sample from the persistent store.
343      * @param sample
344      */
345     public void remove(Sample sample);
346 
347     /**
348      * Removes the instance of Sample having the given
349      * <code>identifier</code> from the persistent store.
350      * @param sampleId
351      */
352     public void remove(Integer sampleId);
353 
354     /**
355      * Removes all entities in the given <code>entities</code> collection.
356      * @param entities
357      */
358     public void remove(Collection<Sample> entities);
359 
360 
361     /**
362      * Does the same thing as {@link #search(int, Search)} but with an
363      * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
364      * limit your data to a specified page number and size.
365      *
366      * @param transform the transformation flag.
367      * @param pageNumber the page number in the data to retrieve
368      * @param pageSize the size of the page to retrieve.
369      * @param search the search object which provides the search parameters and pagination specification.
370      * @return any found results from the search wrapped in a {@link PaginationResult} instance.
371      */
372     public PaginationResult search(final int transform, final int pageNumber, final int pageSize, final Search search);
373 
374     /**
375      * Does the same thing as {@link #search(Search)} but with an
376      * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
377      * limit your data to a specified page number and size.
378      *
379      * @param pageNumber the page number in the data to retrieve
380      * @param pageSize the size of the page to retrieve.
381      * @param search the search object which provides the search parameters and pagination specification.
382      * @return any found results from the search wrapped in a {@link PaginationResult} instance.
383      */
384     public PaginationResult search(final int pageNumber, final int pageSize, final Search search);
385 
386     /**
387      * Does the same thing as {@link #search(Search)} but with an
388      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
389      * finder results will <strong>NOT</strong> be transformed during retrieval.
390      * If this flag is any of the other constants defined here
391      * then results <strong>WILL BE</strong> passed through an operation which can optionally
392      * transform the entities (into value objects for example). By default, transformation does
393      * not occur.
394      *
395      * @param transform the transformation flag.
396      * @param search the search object which provides the search parameters and pagination specification.
397      * @return any found results from the search.
398      */
399     public Set<?> search(final int transform, final Search search);
400 
401     /**
402      * Performs a search using the parameters specified in the given <code>search</code> object.
403      *
404      * @param search the search object which provides the search parameters and pagination specification.
405      * @return any found results from the search.
406      */
407     public Set<Sample> search(final Search search);
408 
409     /**
410      * Allows transformation of entities into value objects
411      * (or something else for that matter), when the <code>transform</code>
412      * flag is set to one of the constants defined in <code>fr.ifremer.quadrige2.core.dao.data.sample.SampleDao</code>, please note
413      * that the {@link #TRANSFORM_NONE} constant denotes no transformation, so the entity itself
414      * will be returned.
415      *
416      * If the integer argument value is unknown {@link #TRANSFORM_NONE} is assumed.
417      *
418      * @param transform one of the constants declared in {@link fr.ifremer.quadrige2.core.dao.data.sample.SampleDao}
419      * @param entity an entity that was found
420      * @return the transformed entity (i.e. new value object, etc)
421      * @see #transformEntities(int,Collection)
422      */
423     public Object transformEntity(final int transform, final Sample entity);
424 
425     /**
426      * Transforms a collection of entities using the
427      * {@link #transformEntity(int,Sample)}
428      * method. This method does not instantiate a new collection.
429      * <p>
430      * This method is to be used internally only.
431      *
432      * @param transform one of the constants declared in <code>fr.ifremer.quadrige2.core.dao.data.sample.SampleDao</code>
433      * @param entities the collection of entities to transform
434      * @see #transformEntity(int,Sample)
435      */
436     public void transformEntities(final int transform, final Collection<?> entities);
437 
438     // spring-dao merge-point
439 }