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.data.survey;
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.administration.user.Department;
30  import fr.ifremer.quadrige3.core.dao.administration.user.Quser;
31  import fr.ifremer.quadrige3.core.vo.data.survey.CampaignVO;
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 des campagnes.
40   * @see Campaign
41   */
42  public interface CampaignDao
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 Campaign}
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 CampaignVO}.
69       */
70      public static final int TRANSFORM_CAMPAIGNVO = 1;
71  
72      /**
73       * Copies the fields of the specified entity to the target value object. This method is similar to
74       * toCampaignVO(), 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 toCampaignVO(
80          Campaign source,
81          CampaignVO target);
82  
83      /**
84       * Converts this DAO's entity to an object of type {@link CampaignVO}.
85       * @param entity
86       * @return CampaignVO
87       */
88      public CampaignVO toCampaignVO(Campaign entity);
89  
90      /**
91       * Converts this DAO's entity to a Collection of instances of type {@link CampaignVO}.
92       * @param entities
93       */
94      public Collection<CampaignVO> toCampaignVOCollection(Collection<?> entities);
95  
96      /**
97       * Converts this DAO's entity to an array of instances of type {@link CampaignVO}.
98       * @param entities
99       * @return CampaignVO[]
100      */
101     public CampaignVO[] toCampaignVOArray(Collection<?> entities);
102 
103     /**
104      * Copies the fields of {@link CampaignVO} 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 campaignVOToEntity(
111         CampaignVO source,
112         Campaign target,
113         boolean copyIfNull);
114 
115     /**
116      * Converts an instance of type {@link CampaignVO} to this DAO's entity.
117      * @param campaignVO
118      * @return Campaign
119      */
120     public Campaign campaignVOToEntity(CampaignVO campaignVO);
121 
122     /**
123      * Converts a Collection of instances of type {@link CampaignVO} to this
124      * DAO's entity.
125      * @param instances
126      */
127     public void campaignVOToEntityCollection(Collection<?> instances);
128 
129     /**
130      * Gets an instance of Campaign from the persistent store.
131      * @param campaignId
132      * @return Campaign
133      */
134     public Campaign get(Integer campaignId);
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 campaignId 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 campaignId);
151 
152     /**
153      * Loads an instance of Campaign from the persistent store.
154      * @param campaignId
155      * @return Campaign
156      */
157     public Campaign load(Integer campaignId);
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 campaignId 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 campaignId);
174 
175     /**
176      * Loads all entities of type {@link Campaign}.
177      *
178      * @return the loaded entities.
179      */
180     public Collection<Campaign> 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 Campaign and adds it to the persistent store.
228      * @param campaign
229      * @return Campaign
230      */
231     public Campaign create(Campaign campaign);
232 
233     /**
234      * <p>
235      * Does the same thing as {@link #create(Campaign)} 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 campaign
244      * @return Object
245      */
246     public Object create(int transform, Campaign campaign);
247 
248     /**
249      * Creates a new instance of Campaign and adds
250      * from the passed in <code>entities</code> collection
251      *
252      * @param entities the collection of Campaign
253      * instances to create.
254      *
255      * @return the created instances.
256      */
257     public Collection<Campaign> create(Collection<Campaign> entities);
258 
259     /**
260      * <p>
261      * Does the same thing as {@link #create(Campaign)} 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<Campaign> entities);
273 
274     /**
275      * <p>
276      * Creates a new <code>Campaign</code>
277      * instance from <strong>all</strong> attributes and adds it to
278      * the persistent store.
279      * </p>
280      * @param campaignSismerLk Lien vers le serveur SISMER. Probablement la référence SISMER de la campagne CAM_CAMREF
281 (FI351997020020 par exemple)
282      * @param campaignStartDt Date de début de la campagne. ne pas renseigner si SISMER
283      * @param campaignEndDt Date de fin de la campagne. Ne pas renseigner si SISMER.
284      * @param campaignNm Llibellé décrivant la campagne. Ne pas renseigner si SISMER.
285      * @param campaignCm Commentaire sur la campagne. Ne pas renseigner si SISMER.
286      * @param campaignPositionCm Commentaire associé à la localisation
287      * @param updateDt Date de modification de l'objet, mise à jour par le système
288      * @param remoteId 
289      * @return Campaign
290      */
291     public Campaign create(
292         String campaignSismerLk,
293         Date campaignStartDt,
294         Date campaignEndDt,
295         String campaignNm,
296         String campaignCm,
297         String campaignPositionCm,
298         Timestamp updateDt,
299         Integer remoteId);
300 
301     /**
302      * <p>
303      * Does the same thing as {@link #create(String, Date, Date, String, String, String, Timestamp, Integer)} with an
304      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
305      * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
306      * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
307      * transform the entity (into a value object for example). By default, transformation does
308      * not occur.
309      * </p>
310      * @param transform
311      * @param campaignSismerLk Lien vers le serveur SISMER. Probablement la référence SISMER de la campagne CAM_CAMREF
312 (FI351997020020 par exemple)
313      * @param campaignStartDt Date de début de la campagne. ne pas renseigner si SISMER
314      * @param campaignEndDt Date de fin de la campagne. Ne pas renseigner si SISMER.
315      * @param campaignNm Llibellé décrivant la campagne. Ne pas renseigner si SISMER.
316      * @param campaignCm Commentaire sur la campagne. Ne pas renseigner si SISMER.
317      * @param campaignPositionCm Commentaire associé à la localisation
318      * @param updateDt Date de modification de l'objet, mise à jour par le système
319      * @param remoteId 
320      * @return Campaign
321      */
322     public Object create(
323         int transform,
324         String campaignSismerLk,
325         Date campaignStartDt,
326         Date campaignEndDt,
327         String campaignNm,
328         String campaignCm,
329         String campaignPositionCm,
330         Timestamp updateDt,
331         Integer remoteId);
332 
333     /**
334      * <p>
335      * Creates a new <code>Campaign</code>
336      * instance from only <strong>required</strong> properties (attributes
337      * and association ends) and adds it to the persistent store.
338      * </p>
339      * @param campaignNm
340      * @param campaignStartDt
341      * @param recorderDepartment
342      * @param quser
343      * @return Campaign
344      */
345     public Campaign create(
346         String campaignNm,
347         Date campaignStartDt,
348         Department recorderDepartment,
349         Quser quser);
350 
351     /**
352      * <p>
353      * Does the same thing as {@link #create(Date, String)} with an
354      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
355      * the returned entity will <strong>NOT</strong> be transformed. If this flag is any of the other constants
356      * defined here then the result <strong>WILL BE</strong> passed through an operation which can optionally
357      * transform the entity (into a value object for example). By default, transformation does
358      * not occur.
359      * </p>
360      * @param transform flag to determine transformation type.
361      * @param campaignNm
362      * @param campaignStartDt
363      * @param recorderDepartment
364      * @param quser
365      * @return Object
366      */
367     public Object create(
368         int transform,
369         String campaignNm,
370         Date campaignStartDt,
371         Department recorderDepartment,
372         Quser quser);
373 
374     /**
375      * Updates the <code>campaign</code> instance in the persistent store.
376      * @param campaign
377      */
378     public void update(Campaign campaign);
379 
380     /**
381      * Updates all instances in the <code>entities</code> collection in the persistent store.
382      * @param entities
383      */
384     public void update(Collection<Campaign> entities);
385 
386     /**
387      * Removes the instance of Campaign from the persistent store.
388      * @param campaign
389      */
390     public void remove(Campaign campaign);
391 
392     /**
393      * Removes the instance of Campaign having the given
394      * <code>identifier</code> from the persistent store.
395      * @param campaignId
396      */
397     public void remove(Integer campaignId);
398 
399     /**
400      * Removes all entities in the given <code>entities</code> collection.
401      * @param entities
402      */
403     public void remove(Collection<Campaign> entities);
404 
405     /**
406      * 
407      * @param campaign 
408      * @return CampaignVO
409      */
410     public CampaignVO save(CampaignVO campaign);
411 
412     /**
413      * 
414      * @param campaignId 
415      * @return Long
416      */
417     public Long countSurveyUsage(int campaignId);
418 
419 
420     /**
421      * Does the same thing as {@link #search(int, Search)} but with an
422      * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
423      * limit your data to a specified page number and size.
424      *
425      * @param transform the transformation flag.
426      * @param pageNumber the page number in the data to retrieve
427      * @param pageSize the size of the page to retrieve.
428      * @param search the search object which provides the search parameters and pagination specification.
429      * @return any found results from the search wrapped in a {@link PaginationResult} instance.
430      */
431     public PaginationResult search(final int transform, final int pageNumber, final int pageSize, final Search search);
432 
433     /**
434      * Does the same thing as {@link #search(Search)} but with an
435      * additional two flags called <code>pageNumber</code> and <code>pageSize</code>. These flags allow you to
436      * limit your data to a specified page number and size.
437      *
438      * @param pageNumber the page number in the data to retrieve
439      * @param pageSize the size of the page to retrieve.
440      * @param search the search object which provides the search parameters and pagination specification.
441      * @return any found results from the search wrapped in a {@link PaginationResult} instance.
442      */
443     public PaginationResult search(final int pageNumber, final int pageSize, final Search search);
444 
445     /**
446      * Does the same thing as {@link #search(Search)} but with an
447      * additional flag called <code>transform</code>. If this flag is set to <code>TRANSFORM_NONE</code> then
448      * finder results will <strong>NOT</strong> be transformed during retrieval.
449      * If this flag is any of the other constants defined here
450      * then results <strong>WILL BE</strong> passed through an operation which can optionally
451      * transform the entities (into value objects for example). By default, transformation does
452      * not occur.
453      *
454      * @param transform the transformation flag.
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<?> search(final int transform, final Search search);
459 
460     /**
461      * Performs a search using the parameters specified in the given <code>search</code> object.
462      *
463      * @param search the search object which provides the search parameters and pagination specification.
464      * @return any found results from the search.
465      */
466     public Set<Campaign> search(final Search search);
467 
468     /**
469      * Allows transformation of entities into value objects
470      * (or something else for that matter), when the <code>transform</code>
471      * flag is set to one of the constants defined in <code>fr.ifremer.quadrige3.core.dao.data.survey.CampaignDao</code>, please note
472      * that the {@link #TRANSFORM_NONE} constant denotes no transformation, so the entity itself
473      * will be returned.
474      * <p>
475      * This method will return instances of these types:
476      * <ul>
477      *   <li>{@link Campaign} - {@link #TRANSFORM_NONE}</li>
478      *   <li>{@link CampaignVO} - {@link #TRANSFORM_CAMPAIGNVO}</li>
479      * </ul>
480      *
481      * If the integer argument value is unknown {@link #TRANSFORM_NONE} is assumed.
482      *
483      * @param transform one of the constants declared in {@link fr.ifremer.quadrige3.core.dao.data.survey.CampaignDao}
484      * @param entity an entity that was found
485      * @return the transformed entity (i.e. new value object, etc)
486      * @see #transformEntities(int,Collection)
487      */
488     public Object transformEntity(final int transform, final Campaign entity);
489 
490     /**
491      * Transforms a collection of entities using the
492      * {@link #transformEntity(int,Campaign)}
493      * method. This method does not instantiate a new collection.
494      * <p>
495      * This method is to be used internally only.
496      *
497      * @param transform one of the constants declared in <code>fr.ifremer.quadrige3.core.dao.data.survey.CampaignDao</code>
498      * @param entities the collection of entities to transform
499      * @see #transformEntity(int,Campaign)
500      */
501     public void transformEntities(final int transform, final Collection<?> entities);
502 
503     // spring-dao merge-point
504 }