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.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 }