1
2
3
4
5
6 package fr.ifremer.quadrige2.core.dao.referential.pmfm;
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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.Status;
33 import fr.ifremer.quadrige2.core.dao.referential.Unit;
34 import fr.ifremer.quadrige2.core.dao.technical.hibernate.HibernateDaoSupport;
35 import java.security.Principal;
36 import java.sql.Timestamp;
37 import java.util.Collection;
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
52
53
54
55
56
57
58 public abstract class PmfmDaoBase
59 extends HibernateDaoSupport
60 implements PmfmDao
61 {
62
63
64
65 @Override
66 public Object get(final int transform, final Integer pmfmId)
67 {
68 if (pmfmId == null)
69 {
70 throw new IllegalArgumentException(
71 "Pmfm.get - 'pmfmId' can not be null");
72 }
73 final Pmfm entity = get(PmfmImpl.class, pmfmId);
74 return transformEntity(transform, entity);
75 }
76
77
78
79 @Override
80 public Pmfm get(Integer pmfmId)
81 {
82 return (Pmfm)this.get(TRANSFORM_NONE, pmfmId);
83 }
84
85
86
87
88 @Override
89 public Object load(final int transform, final Integer pmfmId)
90 {
91 if (pmfmId == null)
92 {
93 throw new IllegalArgumentException(
94 "Pmfm.load - 'pmfmId' can not be null");
95 }
96 final Pmfm entity = get(PmfmImpl.class, pmfmId);
97 return transformEntity(transform, entity);
98 }
99
100
101
102
103 @Override
104 public Pmfm load(Integer pmfmId)
105 {
106 return (Pmfm)this.load(TRANSFORM_NONE, pmfmId);
107 }
108
109
110
111
112 @Override
113 @SuppressWarnings({"unchecked"})
114 public Collection<Pmfm> loadAll()
115 {
116 return (Collection<Pmfm>) this.loadAll(PmfmDao.TRANSFORM_NONE);
117 }
118
119
120
121
122 @Override
123 public Collection<?> loadAll(final int transform)
124 {
125 return this.loadAll(transform, -1, -1);
126 }
127
128
129
130
131 @Override
132 public Collection<?> loadAll(final int pageNumber, final int pageSize)
133 {
134 return this.loadAll(PmfmDao.TRANSFORM_NONE, pageNumber, pageSize);
135 }
136
137
138
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(PmfmImpl.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
163
164
165
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
179
180 @Override
181 public Pmfm create(Pmfm pmfm)
182 {
183 return (Pmfm)this.create(PmfmDao.TRANSFORM_NONE, pmfm);
184 }
185
186
187
188
189 @Override
190 public Object create(final int transform, final Pmfm pmfm)
191 {
192 if (pmfm == null)
193 {
194 throw new IllegalArgumentException(
195 "Pmfm.create - 'pmfm' can not be null");
196 }
197 this.getSessionFactory().getCurrentSession().save(pmfm);
198 return this.transformEntity(transform, pmfm);
199 }
200
201
202
203
204 @Override
205 @SuppressWarnings({"unchecked"})
206 public Collection<Pmfm> create(final Collection<Pmfm> entities)
207 {
208 return (Collection<Pmfm>) create(PmfmDao.TRANSFORM_NONE, entities);
209 }
210
211
212
213
214 @Override
215 public Collection<?> create(final int transform, final Collection<Pmfm> entities)
216 {
217 if (entities == null)
218 {
219 throw new IllegalArgumentException(
220 "Pmfm.create - 'entities' can not be null");
221 }
222 for (Pmfm entity : entities)
223 {
224 create(transform, entity);
225 }
226 return entities;
227 }
228
229
230
231
232 @Override
233 public Pmfm create(
234 Float pmfmDetectionThreshold,
235 Integer pmfmMaximumNumberDecimals,
236 Integer pmfmSignifFiguresNumber,
237 Timestamp updateDt)
238 {
239 return (Pmfm)this.create(PmfmDao.TRANSFORM_NONE, pmfmDetectionThreshold, pmfmMaximumNumberDecimals, pmfmSignifFiguresNumber, updateDt);
240 }
241
242
243
244
245 @Override
246 public Object create(
247 final int transform,
248 Float pmfmDetectionThreshold,
249 Integer pmfmMaximumNumberDecimals,
250 Integer pmfmSignifFiguresNumber,
251 Timestamp updateDt)
252 {
253 Pmfm entity = new PmfmImpl();
254 entity.setPmfmDetectionThreshold(pmfmDetectionThreshold);
255 entity.setPmfmMaximumNumberDecimals(pmfmMaximumNumberDecimals);
256 entity.setPmfmSignifFiguresNumber(pmfmSignifFiguresNumber);
257 entity.setUpdateDt(updateDt);
258 return this.create(transform, entity);
259 }
260
261
262
263
264 @Override
265 public Pmfm create(
266 Timestamp updateDt,
267 Fraction fraction,
268 Matrix matrix,
269 Method method,
270 Parameter parameter,
271 Status status,
272 Unit unit)
273 {
274 return (Pmfm)this.create(PmfmDao.TRANSFORM_NONE, updateDt, fraction, matrix, method, parameter, status, unit);
275 }
276
277
278
279
280 @Override
281 public Object create(
282 final int transform,
283 Timestamp updateDt,
284 Fraction fraction,
285 Matrix matrix,
286 Method method,
287 Parameter parameter,
288 Status status,
289 Unit unit)
290 {
291 Pmfm entity = new PmfmImpl();
292 entity.setUpdateDt(updateDt);
293 entity.setFraction(fraction);
294 entity.setMatrix(matrix);
295 entity.setMethod(method);
296 entity.setParameter(parameter);
297 entity.setStatus(status);
298 entity.setUnit(unit);
299 return this.create(transform, entity);
300 }
301
302
303
304
305 @Override
306 public void update(Pmfm pmfm)
307 {
308 if (pmfm == null)
309 {
310 throw new IllegalArgumentException(
311 "Pmfm.update - 'pmfm' can not be null");
312 }
313 this.getSessionFactory().getCurrentSession().update(pmfm);
314 }
315
316
317
318
319 @Override
320 public void update(final Collection<Pmfm> entities)
321 {
322 if (entities == null)
323 {
324 throw new IllegalArgumentException(
325 "Pmfm.update - 'entities' can not be null");
326 }
327 for (Pmfm entity : entities)
328 {
329 update(entity);
330 }
331 }
332
333
334
335
336 @Override
337 public void remove(Pmfm pmfm)
338 {
339 if (pmfm == null)
340 {
341 throw new IllegalArgumentException(
342 "Pmfm.remove - 'pmfm' can not be null");
343 }
344 this.getSessionFactory().getCurrentSession().delete(pmfm);
345 }
346
347
348
349
350 @Override
351 public void remove(Integer pmfmId)
352 {
353 if (pmfmId == null)
354 {
355 throw new IllegalArgumentException(
356 "Pmfm.remove - 'pmfmId' can not be null");
357 }
358 Pmfm entity = this.get(pmfmId);
359 if (entity != null)
360 {
361 this.remove(entity);
362 }
363 }
364
365
366
367
368 @Override
369 public void remove(Collection<Pmfm> entities)
370 {
371 if (entities == null)
372 {
373 throw new IllegalArgumentException(
374 "Pmfm.remove - 'entities' can not be null");
375 }
376 deleteAll(entities);
377 }
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392 public Object transformEntity(final int transform, final Pmfm entity)
393 {
394 Object target = null;
395 if (entity != null)
396 {
397 switch (transform)
398 {
399 case PmfmDao.TRANSFORM_NONE :
400 default:
401 target = entity;
402 }
403 }
404 return target;
405 }
406
407
408
409
410 @Override
411 public void transformEntities(final int transform, final Collection<?> entities)
412 {
413 switch (transform)
414 {
415 case PmfmDao.TRANSFORM_NONE :
416 default:
417
418 }
419 }
420
421
422
423
424 public void toEntities(final Collection<?> results)
425 {
426 if (results != null)
427 {
428 CollectionUtils.transform(results, this.ENTITYTRANSFORMER);
429 }
430 }
431
432
433
434
435
436
437 private Transformer ENTITYTRANSFORMER =
438 new Transformer()
439 {
440 public Object transform(Object input)
441 {
442 Object result = null;
443 if (input instanceof Object[])
444 {
445 result = toEntity((Object[])input);
446 }
447 else if (input instanceof Pmfm)
448 {
449 result = input;
450 }
451 return result;
452 }
453 };
454
455
456
457
458
459 protected Pmfm toEntity(Object[] row)
460 {
461 Pmfm target = null;
462 if (row != null)
463 {
464 final int numberOfObjects = row.length;
465 for (int ctr = 0; ctr < numberOfObjects; ctr++)
466 {
467 final Object object = row[ctr];
468 if (object instanceof Pmfm)
469 {
470 target = (Pmfm)object;
471 break;
472 }
473 }
474 }
475 return target;
476 }
477
478
479
480
481
482
483
484 protected Principal getPrincipal()
485 {
486 return PrincipalStore.get();
487 }
488
489
490
491
492 @Override
493 @SuppressWarnings({ "unchecked" })
494 public PaginationResult search(final int transform, final int pageNumber, final int pageSize, final Search search)
495 {
496 try
497 {
498 search.setPageNumber(pageNumber);
499 search.setPageSize(pageSize);
500 final PropertySearch propertySearch = new PropertySearch(
501 this.getSession(), PmfmImpl.class, search);
502 final List results = propertySearch.executeAsList();
503 this.transformEntities(transform, results);
504 return new PaginationResult(results.toArray(new Object[results.size()]), propertySearch.getTotalCount());
505 }
506 catch (HibernateException ex)
507 {
508 throw ex;
509 }
510 }
511
512
513
514
515 @Override
516 public PaginationResult search(final int pageNumber, final int pageSize, final Search search)
517 {
518 return this.search(PmfmDao.TRANSFORM_NONE, pageNumber, pageSize, search);
519 }
520
521
522
523
524 @Override
525 public Set<?> search(final int transform, final Search search)
526 {
527 try
528 {
529 final PropertySearch propertySearch = new PropertySearch(
530 this.getSession(), PmfmImpl.class, search);
531 final Set<?> results = propertySearch.executeAsSet();
532 this.transformEntities(transform, results);
533 return results;
534 }
535 catch (HibernateException ex)
536 {
537 throw ex;
538 }
539 }
540
541
542
543
544 @Override
545 @SuppressWarnings("unchecked")
546 public Set<Pmfm> search(final Search search)
547 {
548 return (Set<Pmfm>) this.search(PmfmDao.TRANSFORM_NONE, search);
549 }
550
551
552
553
554
555
556
557
558
559 @SuppressWarnings({ "unchecked" })
560 protected PaginationResult getPaginationResult(
561 final Query queryObject,
562 final int transform, int pageNumber, int pageSize)
563 {
564 try
565 {
566 final ScrollableResults scrollableResults = queryObject.scroll();
567 scrollableResults.last();
568 int totalCount = scrollableResults.getRowNumber();
569 totalCount = totalCount >= 0 ? totalCount + 1 : 0;
570 if (pageNumber > 0 && pageSize > 0)
571 {
572 queryObject.setFirstResult(this.calculateFirstResult(pageNumber, pageSize));
573 queryObject.setMaxResults(pageSize);
574 }
575
576 Set results = new LinkedHashSet(queryObject.list());
577 transformEntities(transform, results);
578 return new PaginationResult(results.toArray(new Object[results.size()]), totalCount);
579 }
580 catch (HibernateException ex)
581 {
582 throw ex;
583 }
584 }
585
586
587 }