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.quadrige3.core.dao.referential.taxon;
7   
8   /*-
9    * #%L
10   * Quadrige3 Core :: Client API
11   * %%
12   * Copyright (C) 2017 - 2024 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  import fr.ifremer.quadrige3.core.dao.Search;
29  import fr.ifremer.quadrige3.core.dao.referential.Status;
30  import fr.ifremer.quadrige3.core.dao.referential.TaxonGroupType;
31  import java.sql.Timestamp;
32  import java.util.Collection;
33  import java.util.Date;
34  import java.util.Set;
35  import org.andromda.spring.PaginationResult;
36  
37  /**
38   * Liste l'ensemble de taxons ayant les mêmes caractéristiques pour le critère pris en compte.
39   * @see TaxonGroup
40   */
41  public interface TaxonGroupDao
42  {
43      /**
44       * This constant is used as a transformation flag; entities can be converted automatically into value objects
45       * or other types, different methods in a class implementing this interface support this feature: look for
46       * an <code>int</code> parameter called <code>transform</code>.
47       * <p>
48       * This specific flag denotes no transformation will occur.
49       */
50      public static final int TRANSFORM_NONE = 0;
51  
52  
53      /**
54       * Transforms the given results to a collection of {@link TaxonGroup}
55       * instances (this is useful when the returned results contains a row of data and you want just entities only).
56       *
57       * @param results the query results.
58       */
59      public void toEntities(final Collection<?> results);
60  
61      /**
62       * Gets an instance of TaxonGroup from the persistent store.
63       * @param taxonGroupId
64       * @return TaxonGroup
65       */
66      public TaxonGroup get(Integer taxonGroupId);
67  
68      /**
69       * <p>
70       * Does the same thing as {@link #get(Integer)} with an
71       * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
72       * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
73       * defined in this class then the result <strong>WILL BE</strong> passed through an operation which can
74       * optionally transform the entity (into a value object for example). By default, transformation does
75       * not occur.
76       * </p>
77       *
78       * @param transform flag to determine transformation type.
79       * @param taxonGroupId the identifier of the entity to get.
80       * @return either the entity or the object transformed from the entity.
81       */
82      public Object get(int transform, Integer taxonGroupId);
83  
84      /**
85       * Loads an instance of TaxonGroup from the persistent store.
86       * @param taxonGroupId
87       * @return TaxonGroup
88       */
89      public TaxonGroup load(Integer taxonGroupId);
90  
91      /**
92       * <p>
93       * Does the same thing as {@link #load(Integer)} with an
94       * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
95       * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
96       * defined in this class then the result <strong>WILL BE</strong> passed through an operation which can
97       * optionally transform the entity (into a value object for example). By default, transformation does
98       * not occur.
99       * </p>
100      *
101      * @param transform flag to determine transformation type.
102      * @param taxonGroupId the identifier of the entity to load.
103      * @return either the entity or the object transformed from the entity.
104      */
105     public Object load(int transform, Integer taxonGroupId);
106 
107     /**
108      * Loads all entities of type {@link TaxonGroup}.
109      *
110      * @return the loaded entities.
111      */
112     public Collection<TaxonGroup> loadAll();
113 
114     /**
115      * <p>
116      * Does the same thing as {@link #loadAll()} with an
117      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
118      * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
119      * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
120      * transform the entity (into a value object for example). By default, transformation does
121      * not occur.
122      * </p>
123      *
124      * @param transform the flag indicating what transformation to use.
125      * @return the loaded entities.
126      */
127     public Collection<?> loadAll(final int transform);
128 
129     /**
130      * <p>
131      * Does the same thing as {@link #loadAll()} with an
132      * additional two arguments called <code>pageNumber</code> and <code>pageSize</code>. The <code>pageNumber</code>
133      * 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
134      * page retrieved.
135      * </p>
136      *
137      * @param pageNumber the page number to retrieve when paging results.
138      * @param pageSize the size of the page to retrieve when paging results.
139      * @return the loaded entities.
140      */
141     public Collection<?> loadAll(final int pageNumber, final int pageSize);
142 
143     /**
144      * <p>
145      * Does the same thing as {@link #loadAll(int)} with an
146      * additional two arguments called <code>pageNumber</code> and <code>pageSize</code>. The <code>pageNumber</code>
147      * 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
148      * page retrieved.
149      * </p>
150      *
151      * @param transform the flag indicating what transformation to use.
152      * @param pageNumber the page number to retrieve when paging results.
153      * @param pageSize the size of the page to retrieve when paging results.
154      * @return the loaded entities.
155      */
156     public Collection<?> loadAll(final int transform, final int pageNumber, final int pageSize);
157 
158     /**
159      * Creates an instance of TaxonGroup and adds it to the persistent store.
160      * @param taxonGroup
161      * @return TaxonGroup
162      */
163     public TaxonGroup create(TaxonGroup taxonGroup);
164 
165     /**
166      * <p>
167      * Does the same thing as {@link #create(TaxonGroup)} with an
168      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
169      * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
170      * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
171      * transform the entity (into a value object for example). By default, transformation does
172      * not occur.
173      * </p>
174      * @param transform
175      * @param taxonGroup
176      * @return Object
177      */
178     public Object create(int transform, TaxonGroup taxonGroup);
179 
180     /**
181      * Creates a new instance of TaxonGroup and adds
182      * from the passed in <code>entities</code> collection
183      *
184      * @param entities the collection of TaxonGroup
185      * instances to create.
186      *
187      * @return the created instances.
188      */
189     public Collection<TaxonGroup> create(Collection<TaxonGroup> entities);
190 
191     /**
192      * <p>
193      * Does the same thing as {@link #create(TaxonGroup)} with an
194      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
195      * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
196      * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
197      * transform the entities (into value objects for example). By default, transformation does
198      * not occur.
199      * </p>
200      * @param transform
201      * @param entities
202      * @return Collection
203      */
204     public Collection<?> create(int transform, Collection<TaxonGroup> entities);
205 
206     /**
207      * <p>
208      * Creates a new <code>TaxonGroup</code>
209      * instance from <strong>all</strong> attributes and adds it to
210      * the persistent store.
211      * </p>
212      * @param taxonGroupNm Nom officiel du groupe de taxon (euryhalin, sténohalin, mobile, ...)
213      * @param taxonGroupLb Chaine de caractère permettant la recherche du taxon.
214      * @param taxonGroupCm Commentaire sur le groupe de taxon
215      * @param taxonGroupExclus Indique si les groupes de taxons fils sont exclusifs ou non. Par défaut, les fils ne sont pas
216 exclusifs. S'ils sont exclusifs, un même taxon ne pourra pas faire parti de plusieurs groupes du
217 taxon père porteur de cette information.
218      * @param taxonGroupUpdate Indique si un groupe de taxons est modifiable ou non dans l'interface de mise à jour. Pour le
219 benthos, les groupes de type descriptif sont systématiquement définis comme non modifiables.
220      * @param taxonGroupCreationDt Date de création de l'objet
221      * @param updateDt Date de maj de l'objet
222      * @return TaxonGroup
223      */
224     public TaxonGroup create(
225         String taxonGroupNm,
226         String taxonGroupLb,
227         String taxonGroupCm,
228         String taxonGroupExclus,
229         String taxonGroupUpdate,
230         Date taxonGroupCreationDt,
231         Timestamp updateDt);
232 
233     /**
234      * <p>
235      * Does the same thing as {@link #create(String, String, String, String, String, Date, Timestamp)} with an
236      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
237      * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
238      * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
239      * transform the entity (into a value object for example). By default, transformation does
240      * not occur.
241      * </p>
242      * @param transform
243      * @param taxonGroupNm Nom officiel du groupe de taxon (euryhalin, sténohalin, mobile, ...)
244      * @param taxonGroupLb Chaine de caractère permettant la recherche du taxon.
245      * @param taxonGroupCm Commentaire sur le groupe de taxon
246      * @param taxonGroupExclus Indique si les groupes de taxons fils sont exclusifs ou non. Par défaut, les fils ne sont pas
247 exclusifs. S'ils sont exclusifs, un même taxon ne pourra pas faire parti de plusieurs groupes du
248 taxon père porteur de cette information.
249      * @param taxonGroupUpdate Indique si un groupe de taxons est modifiable ou non dans l'interface de mise à jour. Pour le
250 benthos, les groupes de type descriptif sont systématiquement définis comme non modifiables.
251      * @param taxonGroupCreationDt Date de création de l'objet
252      * @param updateDt Date de maj de l'objet
253      * @return TaxonGroup
254      */
255     public Object create(
256         int transform,
257         String taxonGroupNm,
258         String taxonGroupLb,
259         String taxonGroupCm,
260         String taxonGroupExclus,
261         String taxonGroupUpdate,
262         Date taxonGroupCreationDt,
263         Timestamp updateDt);
264 
265     /**
266      * <p>
267      * Creates a new <code>TaxonGroup</code>
268      * instance from only <strong>required</strong> properties (attributes
269      * and association ends) and adds it to the persistent store.
270      * </p>
271      * @param taxonGroupNm
272      * @param taxonGroupType
273      * @param status
274      * @return TaxonGroup
275      */
276     public TaxonGroup create(
277         String taxonGroupNm,
278         TaxonGroupType taxonGroupType,
279         Status status);
280 
281     /**
282      * <p>
283      * Does the same thing as {@link #create(String)} with an
284      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
285      * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
286      * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
287      * transform the entity (into a value object for example). By default, transformation does
288      * not occur.
289      * </p>
290      * @param transform flag to determine transformation type.
291      * @param taxonGroupNm
292      * @param taxonGroupType
293      * @param status
294      * @return Object
295      */
296     public Object create(
297         int transform,
298         String taxonGroupNm,
299         TaxonGroupType taxonGroupType,
300         Status status);
301 
302     /**
303      * Updates the <code>taxonGroup</code> instance in the persistent store.
304      * @param taxonGroup
305      */
306     public void update(TaxonGroup taxonGroup);
307 
308     /**
309      * Updates all instances in the <code>entities</code> collection in the persistent store.
310      * @param entities
311      */
312     public void update(Collection<TaxonGroup> entities);
313 
314     /**
315      * Removes the instance of TaxonGroup from the persistent store.
316      * @param taxonGroup
317      */
318     public void remove(TaxonGroup taxonGroup);
319 
320     /**
321      * Removes the instance of TaxonGroup having the given
322      * <code>identifier</code> from the persistent store.
323      * @param taxonGroupId
324      */
325     public void remove(Integer taxonGroupId);
326 
327     /**
328      * Removes all entities in the given <code>entities</code> collection.
329      * @param entities
330      */
331     public void remove(Collection<TaxonGroup> entities);
332 
333 
334     /**
335      * Does the same thing as {@link #search(int, Search)} but with an
336      * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
337      * limit your data to a specified page number and size.
338      *
339      * @param transform the transformation flag.
340      * @param pageNumber the page number in the data to retrieve
341      * @param pageSize the size of the page to retrieve.
342      * @param search the search object which provides the search parameters and pagination specification.
343      * @return any found results from the search wrapped in a {@link PaginationResult} instance.
344      */
345     public PaginationResult search(final int transform, final int pageNumber, final int pageSize, final Search search);
346 
347     /**
348      * Does the same thing as {@link #search(Search)} but with an
349      * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
350      * limit your data to a specified page number and size.
351      *
352      * @param pageNumber the page number in the data to retrieve
353      * @param pageSize the size of the page to retrieve.
354      * @param search the search object which provides the search parameters and pagination specification.
355      * @return any found results from the search wrapped in a {@link PaginationResult} instance.
356      */
357     public PaginationResult search(final int pageNumber, final int pageSize, final Search search);
358 
359     /**
360      * Does the same thing as {@link #search(Search)} but with an
361      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
362      * finder results will <strong>NOT</strong> be transformed during retrieval.
363      * If this flag is any of the other constants defined here
364      * then results <strong>WILL BE</strong> passed through an operation which can optionally
365      * transform the entities (into value objects for example). By default, transformation does
366      * not occur.
367      *
368      * @param transform the transformation flag.
369      * @param search the search object which provides the search parameters and pagination specification.
370      * @return any found results from the search.
371      */
372     public Set<?> search(final int transform, final Search search);
373 
374     /**
375      * Performs a search using the parameters specified in the given <code>search</code> object.
376      *
377      * @param search the search object which provides the search parameters and pagination specification.
378      * @return any found results from the search.
379      */
380     public Set<TaxonGroup> search(final Search search);
381 
382     /**
383      * Allows transformation of entities into value objects
384      * (or something else for that matter), when the <code>transform</code>
385      * flag is set to one of the constants defined in <code>fr.ifremer.quadrige3.core.dao.referential.taxon.TaxonGroupDao</code>, please note
386      * that the {@link #TRANSFORM_NONE} constant denotes no transformation, so the entity itself
387      * will be returned.
388      *
389      * If the integer argument value is unknown {@link #TRANSFORM_NONE} is assumed.
390      *
391      * @param transform one of the constants declared in {@link fr.ifremer.quadrige3.core.dao.referential.taxon.TaxonGroupDao}
392      * @param entity an entity that was found
393      * @return the transformed entity (i.e. new value object, etc)
394      * @see #transformEntities(int,Collection)
395      */
396     public Object transformEntity(final int transform, final TaxonGroup entity);
397 
398     /**
399      * Transforms a collection of entities using the
400      * {@link #transformEntity(int,TaxonGroup)}
401      * method. This method does not instantiate a new collection.
402      * <p>
403      * This method is to be used internally only.
404      *
405      * @param transform one of the constants declared in <code>fr.ifremer.quadrige3.core.dao.referential.taxon.TaxonGroupDao</code>
406      * @param entities the collection of entities to transform
407      * @see #transformEntity(int,TaxonGroup)
408      */
409     public void transformEntities(final int transform, final Collection<?> entities);
410 
411     // spring-dao merge-point
412 }