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