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