View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: Generated code! Do not modify by hand!
4   // Generated by: hibernate/SpringHibernateDaoBase.vsl in <project>/mda/src/main/cartridge/custom/...
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.PrincipalStore;
29  import fr.ifremer.quadrige3.core.dao.PropertySearch;
30  import fr.ifremer.quadrige3.core.dao.Search;
31  import fr.ifremer.quadrige3.core.dao.referential.QualityFlag;
32  import fr.ifremer.quadrige3.core.dao.referential.eunis.EunisTypology;
33  import fr.ifremer.quadrige3.core.dao.technical.hibernate.HibernateDaoSupport;
34  import java.security.Principal;
35  import java.sql.Timestamp;
36  import java.util.Collection;
37  import java.util.Date;
38  import java.util.LinkedHashSet;
39  import java.util.List;
40  import java.util.Set;
41  import javax.annotation.Resource;
42  import org.andromda.spring.PaginationResult;
43  import org.apache.commons.collections.CollectionUtils;
44  import org.apache.commons.collections.Transformer;
45  import org.hibernate.Criteria;
46  import org.hibernate.HibernateException;
47  import org.hibernate.Query;
48  import org.hibernate.ScrollableResults;
49  
50  /**
51   * <p>
52   * Base Spring DAO Class: is able to create, update, remove, load, and find
53   * objects of type <code>ObservedHabitat</code>.
54   * </p>
55   *
56   * @see ObservedHabitat
57   */
58  public abstract class ObservedHabitatDaoBase
59      extends HibernateDaoSupport    
60      implements ObservedHabitatDao
61  {
62      /**
63       * {@inheritDoc}
64       */
65      @Override
66      public Object get(final int transform, final Integer observedHabitatId)
67      {
68          if (observedHabitatId == null)
69          {
70              throw new IllegalArgumentException(
71                  "ObservedHabitat.get - 'observedHabitatId' can not be null");
72          }
73          final ObservedHabitat entity = get(ObservedHabitatImpl.class, observedHabitatId);
74          return transformEntity(transform, entity);
75      }
76      /**
77       * {@inheritDoc}
78       */
79      @Override
80      public ObservedHabitat get(Integer observedHabitatId)
81      {
82          return (ObservedHabitat)this.get(TRANSFORM_NONE, observedHabitatId);
83      }
84  
85      /**
86       * {@inheritDoc}
87       */
88      @Override
89      public Object load(final int transform, final Integer observedHabitatId)
90      {
91          if (observedHabitatId == null)
92          {
93              throw new IllegalArgumentException(
94                  "ObservedHabitat.load - 'observedHabitatId' can not be null");
95          }
96          final ObservedHabitat entity = get(ObservedHabitatImpl.class, observedHabitatId);
97          return transformEntity(transform, entity);
98      }
99  
100     /**
101      * {@inheritDoc}
102      */
103     @Override
104     public ObservedHabitat load(Integer observedHabitatId)
105     {
106         return (ObservedHabitat)this.load(TRANSFORM_NONE, observedHabitatId);
107     }
108 
109     /**
110      * {@inheritDoc}
111      */
112     @Override
113     @SuppressWarnings({"unchecked"})
114     public Collection<ObservedHabitat> loadAll()
115     {
116         return (Collection<ObservedHabitat>) this.loadAll(ObservedHabitatDao.TRANSFORM_NONE);
117     }
118 
119     /**
120      * {@inheritDoc}
121      */
122     @Override
123     public Collection<?> loadAll(final int transform)
124     {
125         return this.loadAll(transform, -1, -1);
126     }
127 
128     /**
129      * {@inheritDoc}
130      */
131     @Override
132     public Collection<?> loadAll(final int pageNumber, final int pageSize)
133     {
134         return this.loadAll(ObservedHabitatDao.TRANSFORM_NONE, pageNumber, pageSize);
135     }
136 
137     /**
138      * {@inheritDoc}
139      */
140     @Override
141     public Collection<?> loadAll(final int transform, final int pageNumber, final int pageSize)
142     {
143         try
144         {
145             final Criteria criteria = this.getSession().createCriteria(ObservedHabitatImpl.class);
146             if (pageNumber > 0 && pageSize > 0)
147             {
148                 criteria.setFirstResult(this.calculateFirstResult(pageNumber, pageSize));
149                 criteria.setMaxResults(pageSize);
150             }
151             final Collection<?> results = criteria.list();
152             this.transformEntities(transform, results);
153             return results;
154         }
155         catch (HibernateException ex)
156         {
157             throw ex;
158         }
159     }
160 
161     /**
162      * firstResult = (pageNumber - 1) * pageSize
163      * @param pageNumber
164      * @param pageSize
165      * @return firstResult
166      */
167     protected int calculateFirstResult(int pageNumber, int pageSize)
168     {
169         int firstResult = 0;
170         if (pageNumber > 0)
171         {
172             firstResult = (pageNumber - 1) * pageSize;
173         }
174         return firstResult;
175     }
176 
177     /**
178      * {@inheritDoc}
179      */
180     @Override
181     public ObservedHabitat create(ObservedHabitat observedHabitat)
182     {
183         return (ObservedHabitat)this.create(ObservedHabitatDao.TRANSFORM_NONE, observedHabitat);
184     }
185 
186     /**
187      * {@inheritDoc}
188      */
189     @Override
190     public Object create(final int transform, final ObservedHabitat observedHabitat)
191     {
192         if (observedHabitat == null)
193         {
194             throw new IllegalArgumentException(
195                 "ObservedHabitat.create - 'observedHabitat' can not be null");
196         }
197         this.getSessionFactory().getCurrentSession().save(observedHabitat);
198         return this.transformEntity(transform, observedHabitat);
199     }
200 
201     /**
202      * {@inheritDoc}
203      */
204     @Override
205     @SuppressWarnings({"unchecked"})
206     public Collection<ObservedHabitat> create(final Collection<ObservedHabitat> entities)
207     {
208         return (Collection<ObservedHabitat>) create(ObservedHabitatDao.TRANSFORM_NONE, entities);
209     }
210 
211     /**
212      * {@inheritDoc}
213      */
214     @Override
215     public Collection<?> create(final int transform, final Collection<ObservedHabitat> entities)
216     {
217         if (entities == null)
218         {
219             throw new IllegalArgumentException(
220                 "ObservedHabitat.create - 'entities' can not be null");
221         }
222                     for (ObservedHabitat entity : entities)
223                     {
224                         create(transform, entity);
225                     }
226         return entities;
227     }
228 
229     /**
230      * {@inheritDoc}
231      */
232     @Override
233     public ObservedHabitat create(
234         String observHabCm,
235         Date observHabValidDt,
236         Date observHabQualifDt,
237         String observHabQualifCm,
238         Timestamp updateDt,
239         Integer remoteId)
240     {
241         return (ObservedHabitat)this.create(ObservedHabitatDao.TRANSFORM_NONE, observHabCm, observHabValidDt, observHabQualifDt, observHabQualifCm, updateDt, remoteId);
242     }
243 
244     /**
245      * {@inheritDoc}
246      */
247     @Override
248     public Object create(
249         final int transform,
250         String observHabCm,
251         Date observHabValidDt,
252         Date observHabQualifDt,
253         String observHabQualifCm,
254         Timestamp updateDt,
255         Integer remoteId)
256     {
257         ObservedHabitat entity = new ObservedHabitatImpl();
258         entity.setObservHabCm(observHabCm);
259         entity.setObservHabValidDt(observHabValidDt);
260         entity.setObservHabQualifDt(observHabQualifDt);
261         entity.setObservHabQualifCm(observHabQualifCm);
262         entity.setUpdateDt(updateDt);
263         entity.setRemoteId(remoteId);
264         return this.create(transform, entity);
265     }
266 
267     /**
268      * {@inheritDoc}
269      */
270     @Override
271     public ObservedHabitat create(
272         EunisTypology eunisTypology,
273         QualityFlag qualityFlag,
274         Survey survey)
275     {
276         return (ObservedHabitat)this.create(ObservedHabitatDao.TRANSFORM_NONE, eunisTypology, qualityFlag, survey);
277     }
278 
279     /**
280      * {@inheritDoc}
281      */
282     @Override
283     public Object create(
284         final int transform,
285         EunisTypology eunisTypology,
286         QualityFlag qualityFlag,
287         Survey survey)
288     {
289         ObservedHabitat entity = new ObservedHabitatImpl();
290         entity.setEunisTypology(eunisTypology);
291         entity.setQualityFlag(qualityFlag);
292         entity.setSurvey(survey);
293         return this.create(transform, entity);
294     }
295 
296     /**
297      * {@inheritDoc}
298      */
299     @Override
300     public void update(ObservedHabitat observedHabitat)
301     {
302         if (observedHabitat == null)
303         {
304             throw new IllegalArgumentException(
305                 "ObservedHabitat.update - 'observedHabitat' can not be null");
306         }
307         this.getSessionFactory().getCurrentSession().update(observedHabitat);
308     }
309 
310     /**
311      * {@inheritDoc}
312      */
313     @Override
314     public void update(final Collection<ObservedHabitat> entities)
315     {
316         if (entities == null)
317         {
318             throw new IllegalArgumentException(
319                 "ObservedHabitat.update - 'entities' can not be null");
320         }
321                     for (ObservedHabitat entity : entities)
322                     {
323                         update(entity);
324                     }
325     }
326 
327     /**
328      * {@inheritDoc}
329      */
330     @Override
331     public void remove(ObservedHabitat observedHabitat)
332     {
333         if (observedHabitat == null)
334         {
335             throw new IllegalArgumentException(
336                 "ObservedHabitat.remove - 'observedHabitat' can not be null");
337         }
338         this.getSessionFactory().getCurrentSession().delete(observedHabitat);
339     }
340 
341     /**
342      * {@inheritDoc}
343      */
344     @Override
345     public void remove(Integer observedHabitatId)
346     {
347         if (observedHabitatId == null)
348         {
349             throw new IllegalArgumentException(
350                 "ObservedHabitat.remove - 'observedHabitatId' can not be null");
351         }
352         ObservedHabitat entity = this.get(observedHabitatId);
353         if (entity != null)
354         {
355             this.remove(entity);
356         }
357     }
358 
359     /**
360      * {@inheritDoc}
361      */
362     @Override
363     public void remove(Collection<ObservedHabitat> entities)
364     {
365         if (entities == null)
366         {
367             throw new IllegalArgumentException(
368                 "ObservedHabitat.remove - 'entities' can not be null");
369         }
370         deleteAll(entities);
371     }
372     /**
373      * Allows transformation of entities into value objects
374      * (or something else for that matter), when the <code>transform</code>
375      * flag is set to one of the constants defined in <code>ObservedHabitatDao</code>, please note
376      * that the {@link #TRANSFORM_NONE} constant denotes no transformation, so the entity itself
377      * will be returned.
378      *
379      * If the integer argument value is unknown {@link #TRANSFORM_NONE} is assumed.
380      *
381      * @param transform one of the constants declared in {@link ObservedHabitatDao}
382      * @param entity an entity that was found
383      * @return the transformed entity (i.e. new value object, etc)
384      * @see ObservedHabitatDao#transformEntity(int, ObservedHabitat)
385      */
386     public Object transformEntity(final int transform, final ObservedHabitat entity)
387     {
388         Object target = null;
389         if (entity != null)
390         {
391             switch (transform)
392             {
393                 case ObservedHabitatDao.TRANSFORM_NONE : // fall-through
394                 default:
395                     target = entity;
396             }
397         }
398         return target;
399     }
400 
401     /**
402      * {@inheritDoc}
403      */
404     @Override
405     public void transformEntities(final int transform, final Collection<?> entities)
406     {
407         switch (transform)
408         {
409             case ObservedHabitatDao.TRANSFORM_NONE : // fall-through
410                 default:
411                 // do nothing;
412         }
413     }
414 
415     /**
416      * @see ObservedHabitatDao#toEntities(Collection)
417      */
418     public void toEntities(final Collection<?> results)
419     {
420         if (results != null)
421         {
422             CollectionUtils.transform(results, this.ENTITYTRANSFORMER);
423         }
424     }
425 
426     /**
427      * This anonymous transformer is designed to transform report query results
428      * (which result in an array of entities) to {@link ObservedHabitat}
429      * using the Jakarta Commons-Collections Transformation API.
430      */
431     private Transformer ENTITYTRANSFORMER =
432         new Transformer()
433         {
434             public Object transform(Object input)
435             {
436                 Object result = null;
437                 if (input instanceof Object[])
438                 {
439                     result = toEntity((Object[])input);
440                 }
441                 else if (input instanceof ObservedHabitat)
442                 {
443                     result = input;
444                 }
445                 return result;
446             }
447         };
448 
449     /**
450      * @param row
451      * @return ObservedHabitat
452      */
453     protected ObservedHabitat toEntity(Object[] row)
454     {
455         ObservedHabitat target = null;
456         if (row != null)
457         {
458             final int numberOfObjects = row.length;
459             for (int ctr = 0; ctr < numberOfObjects; ctr++)
460             {
461                 final Object object = row[ctr];
462                 if (object instanceof ObservedHabitat)
463                 {
464                     target = (ObservedHabitat)object;
465                     break;
466                 }
467             }
468         }
469         return target;
470     }
471 
472     /**
473      * Gets the current <code>principal</code> if one has been set,
474      * otherwise returns <code>null</code>.
475      *
476      * @return the current principal
477      */
478     protected Principal getPrincipal()
479     {
480         return PrincipalStore.get();
481     }
482 
483     /**
484      * {@inheritDoc}
485      */
486     @Override
487     @SuppressWarnings({ "unchecked" })
488     public PaginationResult search(final int transform, final int pageNumber, final int pageSize, final Search search)
489     {
490         try
491         {
492             search.setPageNumber(pageNumber);
493             search.setPageSize(pageSize);
494             final PropertySearch propertySearch = new PropertySearch(
495                 this.getSession(), ObservedHabitatImpl.class, search);
496             final List results = propertySearch.executeAsList();
497             this.transformEntities(transform, results);
498             return new PaginationResult(results.toArray(new Object[results.size()]), propertySearch.getTotalCount());
499         }
500         catch (HibernateException ex)
501         {
502             throw ex; /*super.convertHibernateAccessException(ex);*/
503         }
504     }
505 
506     /**
507      * {@inheritDoc}
508      */
509     @Override
510     public PaginationResult search(final int pageNumber, final int pageSize, final Search search)
511     {
512         return this.search(ObservedHabitatDao.TRANSFORM_NONE, pageNumber, pageSize, search);
513     }
514 
515     /**
516      * {@inheritDoc}
517      */
518     @Override
519     public Set<?> search(final int transform, final Search search)
520     {
521         try
522         {
523             final PropertySearch propertySearch = new PropertySearch(
524                 this.getSession(), ObservedHabitatImpl.class, search);
525             final Set<?> results = propertySearch.executeAsSet();
526             this.transformEntities(transform, results);
527             return results;
528         }
529         catch (HibernateException ex)
530         {
531             throw ex; /*super.convertHibernateAccessException(ex);*/
532         }
533     }
534 
535     /**
536      * {@inheritDoc}
537      */
538     @Override
539     @SuppressWarnings("unchecked")
540     public Set<ObservedHabitat> search(final Search search)
541     {
542         return (Set<ObservedHabitat>) this.search(ObservedHabitatDao.TRANSFORM_NONE, search);
543     }
544 
545     /**
546      * Executes and returns the given Hibernate queryObject as a {@link PaginationResult} instance.
547      * @param queryObject
548      * @param transform
549      * @param pageNumber
550      * @param pageSize
551      * @return PaginationResult
552      */
553     @SuppressWarnings({ "unchecked" })
554     protected PaginationResult getPaginationResult(
555         final Query queryObject,
556         final int transform, int pageNumber, int pageSize)
557     {
558         try
559         {
560             final ScrollableResults scrollableResults = queryObject.scroll();
561             scrollableResults.last();
562             int totalCount = scrollableResults.getRowNumber();
563             totalCount = totalCount >= 0 ? totalCount + 1 : 0;
564             if (pageNumber > 0 && pageSize > 0)
565             {
566                 queryObject.setFirstResult(this.calculateFirstResult(pageNumber, pageSize));
567                 queryObject.setMaxResults(pageSize);
568             }
569             // Unchecked transformation because Set object is reused, cannot be strongly typed.
570             Set results = new LinkedHashSet(queryObject.list());
571             transformEntities(transform, results);
572             return new PaginationResult(results.toArray(new Object[results.size()]), totalCount);
573         }
574         catch (HibernateException ex)
575         {
576             throw ex; /*super.convertHibernateAccessException(ex);*/
577         }
578     }
579 
580     // spring-hibernate-dao-base merge-point
581 }