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 }