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