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