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