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