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