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.administration.user;
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.referential.Status;
31 import fr.ifremer.quadrige2.core.vo.administration.user.DepartmentVO;
32 import java.sql.Timestamp;
33 import java.util.Collection;
34 import java.util.Date;
35 import java.util.Set;
36 import org.andromda.spring.PaginationResult;
37
38 /**
39 * Liste les départements ou services auxquels sont rattachés les agents
40 * @see Department
41 */
42 public interface DepartmentDao
43 {
44 /**
45 * This constant is used as a transformation flag; entities can be converted automatically into value objects
46 * or other types, different methods in a class implementing this interface support this feature: look for
47 * an <code>int</code> parameter called <code>transform</code>.
48 * <p>
49 * This specific flag denotes no transformation will occur.
50 */
51 public static final int TRANSFORM_NONE = 0;
52
53
54 /**
55 * Transforms the given results to a collection of {@link Department}
56 * instances (this is useful when the returned results contains a row of data and you want just entities only).
57 *
58 * @param results the query results.
59 */
60 public void toEntities(final Collection<?> results);
61
62 /**
63 * This constant is used as a transformation flag; entities can be converted automatically into value objects
64 * or other types, different methods in a class implementing this interface support this feature: look for
65 * an <code>int</code> parameter called <code>transform</code>.
66 * <p>
67 * This specific flag denotes entities must be transformed into objects of type
68 * {@link DepartmentVO}.
69 */
70 public static final int TRANSFORM_DEPARTMENTVO = 1;
71
72 /**
73 * Copies the fields of the specified entity to the target value object. This method is similar to
74 * toDepartmentVO(), but it does not handle any attributes in the target
75 * value object that are "read-only" (as those do not have setter methods exposed).
76 * @param source
77 * @param target
78 */
79 public void toDepartmentVO(
80 Department source,
81 DepartmentVO target);
82
83 /**
84 * Converts this DAO's entity to an object of type {@link DepartmentVO}.
85 * @param entity
86 * @return DepartmentVO
87 */
88 public DepartmentVO toDepartmentVO(Department entity);
89
90 /**
91 * Converts this DAO's entity to a Collection of instances of type {@link DepartmentVO}.
92 * @param entities
93 */
94 public Collection<DepartmentVO> toDepartmentVOCollection(Collection<?> entities);
95
96 /**
97 * Converts this DAO's entity to an array of instances of type {@link DepartmentVO}.
98 * @param entities
99 * @return DepartmentVO[]
100 */
101 public DepartmentVO[] toDepartmentVOArray(Collection<?> entities);
102
103 /**
104 * Copies the fields of {@link DepartmentVO} to the specified entity.
105 * @param source
106 * @param target
107 * @param copyIfNull If FALSE, the value object's field will not be copied to the entity if the value is NULL. If TRUE,
108 * it will be copied regardless of its value.
109 */
110 public void departmentVOToEntity(
111 DepartmentVO source,
112 Department target,
113 boolean copyIfNull);
114
115 /**
116 * Converts an instance of type {@link DepartmentVO} to this DAO's entity.
117 * @param departmentVO
118 * @return Department
119 */
120 public Department departmentVOToEntity(DepartmentVO departmentVO);
121
122 /**
123 * Converts a Collection of instances of type {@link DepartmentVO} to this
124 * DAO's entity.
125 * @param instances
126 */
127 public void departmentVOToEntityCollection(Collection<?> instances);
128
129 /**
130 * Gets an instance of Department from the persistent store.
131 * @param depId
132 * @return Department
133 */
134 public Department get(Integer depId);
135
136 /**
137 * <p>
138 * Does the same thing as {@link #get(Integer)} with an
139 * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
140 * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
141 * defined in this class then the result <strong>WILL BE</strong> passed through an operation which can
142 * optionally transform the entity (into a value object for example). By default, transformation does
143 * not occur.
144 * </p>
145 *
146 * @param transform flag to determine transformation type.
147 * @param depId the identifier of the entity to get.
148 * @return either the entity or the object transformed from the entity.
149 */
150 public Object get(int transform, Integer depId);
151
152 /**
153 * Loads an instance of Department from the persistent store.
154 * @param depId
155 * @return Department
156 */
157 public Department load(Integer depId);
158
159 /**
160 * <p>
161 * Does the same thing as {@link #load(Integer)} with an
162 * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
163 * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
164 * defined in this class then the result <strong>WILL BE</strong> passed through an operation which can
165 * optionally transform the entity (into a value object for example). By default, transformation does
166 * not occur.
167 * </p>
168 *
169 * @param transform flag to determine transformation type.
170 * @param depId the identifier of the entity to load.
171 * @return either the entity or the object transformed from the entity.
172 */
173 public Object load(int transform, Integer depId);
174
175 /**
176 * Loads all entities of type {@link Department}.
177 *
178 * @return the loaded entities.
179 */
180 public Collection<Department> loadAll();
181
182 /**
183 * <p>
184 * Does the same thing as {@link #loadAll()} with an
185 * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
186 * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
187 * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
188 * transform the entity (into a value object for example). By default, transformation does
189 * not occur.
190 * </p>
191 *
192 * @param transform the flag indicating what transformation to use.
193 * @return the loaded entities.
194 */
195 public Collection<?> loadAll(final int transform);
196
197 /**
198 * <p>
199 * Does the same thing as {@link #loadAll()} with an
200 * additional two arguments called <code>pageNumber</code> and <code>pageSize</code>. The <code>pageNumber</code>
201 * 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
202 * page retrieved.
203 * </p>
204 *
205 * @param pageNumber the page number to retrieve when paging results.
206 * @param pageSize the size of the page to retrieve when paging results.
207 * @return the loaded entities.
208 */
209 public Collection<?> loadAll(final int pageNumber, final int pageSize);
210
211 /**
212 * <p>
213 * Does the same thing as {@link #loadAll(int)} with an
214 * additional two arguments called <code>pageNumber</code> and <code>pageSize</code>. The <code>pageNumber</code>
215 * 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
216 * page retrieved.
217 * </p>
218 *
219 * @param transform the flag indicating what transformation to use.
220 * @param pageNumber the page number to retrieve when paging results.
221 * @param pageSize the size of the page to retrieve when paging results.
222 * @return the loaded entities.
223 */
224 public Collection<?> loadAll(final int transform, final int pageNumber, final int pageSize);
225
226 /**
227 * Creates an instance of Department and adds it to the persistent store.
228 * @param department
229 * @return Department
230 */
231 public Department create(Department department);
232
233 /**
234 * <p>
235 * Does the same thing as {@link #create(Department)} 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 department
244 * @return Object
245 */
246 public Object create(int transform, Department department);
247
248 /**
249 * Creates a new instance of Department and adds
250 * from the passed in <code>entities</code> collection
251 *
252 * @param entities the collection of Department
253 * instances to create.
254 *
255 * @return the created instances.
256 */
257 public Collection<Department> create(Collection<Department> entities);
258
259 /**
260 * <p>
261 * Does the same thing as {@link #create(Department)} with an
262 * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
263 * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
264 * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
265 * transform the entities (into value objects for example). By default, transformation does
266 * not occur.
267 * </p>
268 * @param transform
269 * @param entities
270 * @return Collection
271 */
272 public Collection<?> create(int transform, Collection<Department> entities);
273
274 /**
275 * <p>
276 * Creates a new <code>Department</code>
277 * instance from <strong>all</strong> attributes and adds it to
278 * the persistent store.
279 * </p>
280 * @param depCd Code (sigle dans LDAP : identifie de manière unique un service dans LDAP, attribut obligatoire dans
281 LDAP).
282 * @param depNm Libellé du service issue de l'intitulé dans le LDAP si existant (taillé comme une description car
283 les infos venant de LDAP dépassent les 100 caractères)
284 * @param depDc Description issue de l'activité LDAP
285 * @param depEMail Mail associé au service
286 * @param depAddress Adresse du site dans le LDAP, ou informations sur l'adresse de l'utilisateur.
287 * @param depPhone Les téléphones du service.
288 * @param depLdapPresent Oui, si le service est présent dans le LDAP
289 * @param depCreationDt Date de création de l'objet
290 * @param updateDt Date de modification de l'objet
291 * @return Department
292 */
293 public Department create(
294 String depCd,
295 String depNm,
296 String depDc,
297 String depEMail,
298 String depAddress,
299 String depPhone,
300 String depLdapPresent,
301 Date depCreationDt,
302 Timestamp updateDt);
303
304 /**
305 * <p>
306 * Does the same thing as {@link #create(String, String, String, String, String, String, String, Date, 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
314 * @param depCd Code (sigle dans LDAP : identifie de manière unique un service dans LDAP, attribut obligatoire dans
315 LDAP).
316 * @param depNm Libellé du service issue de l'intitulé dans le LDAP si existant (taillé comme une description car
317 les infos venant de LDAP dépassent les 100 caractères)
318 * @param depDc Description issue de l'activité LDAP
319 * @param depEMail Mail associé au service
320 * @param depAddress Adresse du site dans le LDAP, ou informations sur l'adresse de l'utilisateur.
321 * @param depPhone Les téléphones du service.
322 * @param depLdapPresent Oui, si le service est présent dans le LDAP
323 * @param depCreationDt Date de création de l'objet
324 * @param updateDt Date de modification de l'objet
325 * @return Department
326 */
327 public Object create(
328 int transform,
329 String depCd,
330 String depNm,
331 String depDc,
332 String depEMail,
333 String depAddress,
334 String depPhone,
335 String depLdapPresent,
336 Date depCreationDt,
337 Timestamp updateDt);
338
339 /**
340 * <p>
341 * Creates a new <code>Department</code>
342 * instance from only <strong>required</strong> properties (attributes
343 * and association ends) and adds it to the persistent store.
344 * </p>
345 * @param depCd
346 * @param depNm
347 * @param updateDt
348 * @param status
349 * @return Department
350 */
351 public Department create(
352 String depCd,
353 String depNm,
354 Timestamp updateDt,
355 Status status);
356
357 /**
358 * <p>
359 * Does the same thing as {@link #create(String, String, Timestamp)} with an
360 * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
361 * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
362 * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
363 * transform the entity (into a value object for example). By default, transformation does
364 * not occur.
365 * </p>
366 * @param transform flag to determine transformation type.
367 * @param depCd
368 * @param depNm
369 * @param updateDt
370 * @param status
371 * @return Object
372 */
373 public Object create(
374 int transform,
375 String depCd,
376 String depNm,
377 Timestamp updateDt,
378 Status status);
379
380 /**
381 * Updates the <code>department</code> instance in the persistent store.
382 * @param department
383 */
384 public void update(Department department);
385
386 /**
387 * Updates all instances in the <code>entities</code> collection in the persistent store.
388 * @param entities
389 */
390 public void update(Collection<Department> entities);
391
392 /**
393 * Removes the instance of Department from the persistent store.
394 * @param department
395 */
396 public void remove(Department department);
397
398 /**
399 * Removes the instance of Department having the given
400 * <code>identifier</code> from the persistent store.
401 * @param depId
402 */
403 public void remove(Integer depId);
404
405 /**
406 * Removes all entities in the given <code>entities</code> collection.
407 * @param entities
408 */
409 public void remove(Collection<Department> entities);
410
411
412 /**
413 * Does the same thing as {@link #search(int, Search)} but with an
414 * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
415 * limit your data to a specified page number and size.
416 *
417 * @param transform the transformation flag.
418 * @param pageNumber the page number in the data to retrieve
419 * @param pageSize the size of the page to retrieve.
420 * @param search the search object which provides the search parameters and pagination specification.
421 * @return any found results from the search wrapped in a {@link PaginationResult} instance.
422 */
423 public PaginationResult search(final int transform, final int pageNumber, final int pageSize, final Search search);
424
425 /**
426 * Does the same thing as {@link #search(Search)} but with an
427 * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
428 * limit your data to a specified page number and size.
429 *
430 * @param pageNumber the page number in the data to retrieve
431 * @param pageSize the size of the page to retrieve.
432 * @param search the search object which provides the search parameters and pagination specification.
433 * @return any found results from the search wrapped in a {@link PaginationResult} instance.
434 */
435 public PaginationResult search(final int pageNumber, final int pageSize, final Search search);
436
437 /**
438 * Does the same thing as {@link #search(Search)} but with an
439 * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
440 * finder results will <strong>NOT</strong> be transformed during retrieval.
441 * If this flag is any of the other constants defined here
442 * then results <strong>WILL BE</strong> passed through an operation which can optionally
443 * transform the entities (into value objects for example). By default, transformation does
444 * not occur.
445 *
446 * @param transform the transformation flag.
447 * @param search the search object which provides the search parameters and pagination specification.
448 * @return any found results from the search.
449 */
450 public Set<?> search(final int transform, final Search search);
451
452 /**
453 * Performs a search using the parameters specified in the given <code>search</code> object.
454 *
455 * @param search the search object which provides the search parameters and pagination specification.
456 * @return any found results from the search.
457 */
458 public Set<Department> search(final Search search);
459
460 /**
461 * Allows transformation of entities into value objects
462 * (or something else for that matter), when the <code>transform</code>
463 * flag is set to one of the constants defined in <code>fr.ifremer.quadrige2.core.dao.administration.user.DepartmentDao</code>, please note
464 * that the {@link #TRANSFORM_NONE} constant denotes no transformation, so the entity itself
465 * will be returned.
466 * <p>
467 * This method will return instances of these types:
468 * <ul>
469 * <li>{@link Department} - {@link #TRANSFORM_NONE}</li>
470 * <li>{@link DepartmentVO} - {@link #TRANSFORM_DEPARTMENTVO}</li>
471 * </ul>
472 *
473 * If the integer argument value is unknown {@link #TRANSFORM_NONE} is assumed.
474 *
475 * @param transform one of the constants declared in {@link fr.ifremer.quadrige2.core.dao.administration.user.DepartmentDao}
476 * @param entity an entity that was found
477 * @return the transformed entity (i.e. new value object, etc)
478 * @see #transformEntities(int,Collection)
479 */
480 public Object transformEntity(final int transform, final Department entity);
481
482 /**
483 * Transforms a collection of entities using the
484 * {@link #transformEntity(int,Department)}
485 * method. This method does not instantiate a new collection.
486 * <p>
487 * This method is to be used internally only.
488 *
489 * @param transform one of the constants declared in <code>fr.ifremer.quadrige2.core.dao.administration.user.DepartmentDao</code>
490 * @param entities the collection of entities to transform
491 * @see #transformEntity(int,Department)
492 */
493 public void transformEntities(final int transform, final Collection<?> entities);
494
495 // spring-dao merge-point
496 }