1
2
3
4
5
6 package com.hack23.cia.service.dao;
7
8 import java.util.Collection;
9 import java.util.List;
10
11 import org.hibernate.Criteria;
12 import org.hibernate.FetchMode;
13 import org.hibernate.HibernateException;
14 import org.hibernate.criterion.DetachedCriteria;
15 import org.hibernate.criterion.LogicalExpression;
16 import org.hibernate.criterion.Order;
17 import org.hibernate.criterion.Property;
18 import org.hibernate.criterion.Restrictions;
19 import org.hibernate.criterion.SimpleExpression;
20
21 import com.hack23.cia.model.sweden.impl.ParliamentMember;
22 import com.hack23.cia.model.sweden.impl.ParliamentMemberVoteCompareResult;
23 import com.hack23.cia.model.sweden.impl.Vote;
24
25 /***
26 * The Class ParliamentMemberDAOImpl.
27 */
28 public class ParliamentMemberDAOImpl extends
29 GenericHibernateDAO<ParliamentMember, Long> implements
30 ParliamentMemberDAO {
31
32 /***
33 * Instantiates a new parliament member dao impl.
34 */
35 public ParliamentMemberDAOImpl() {
36 super(ParliamentMember.class);
37 }
38
39 /***
40 * Creates the parliament member vote compare result top base critera.
41 *
42 * @return the criteria
43 */
44 private Criteria createParliamentMemberVoteCompareResultTopBaseCritera() {
45 return getSession().createCriteria(
46 ParliamentMemberVoteCompareResult.class).createAlias(
47 "opponentParliamentMember", "opponent").setCacheable(true)
48 .setMaxResults(10);
49 }
50
51
52
53
54
55
56
57 @Override
58 public final void deleteAllParliamentMemberVoteCompareResults() {
59 getHibernateTemplate().bulkUpdate(
60 "delete from ParliamentMemberVoteCompareResult");
61 }
62
63
64
65
66
67
68
69
70 @SuppressWarnings("unchecked")
71 @Override
72 public final List<Vote> findLastVotes(final Long id) {
73 try {
74 return getSession()
75 .createCriteria(Vote.class)
76 .add(Restrictions.eq("parliamentMember.id", id)).addOrder(
77 Order.desc("datum")).setMaxResults(30).setCacheable(true).list();
78 } catch (final HibernateException hibernateException) {
79 throw getHibernateTemplate().convertHibernateAccessException(
80 hibernateException);
81 }
82 }
83
84
85
86
87
88
89
90
91 @SuppressWarnings("unchecked")
92 @Override
93 public final List<Vote> findLastVotesByBallotId(final Long id) {
94 try {
95 return getSession()
96 .createCriteria(Vote.class)
97 .add(Restrictions.eq("ballot.id", id)).addOrder(
98 Order.desc("parliamentMember.id")).setFetchMode("ballot", FetchMode.JOIN)
99 .setMaxResults(349).setCacheable(true).list();
100 } catch (final HibernateException hibernateException) {
101 throw getHibernateTemplate().convertHibernateAccessException(
102 hibernateException);
103 }
104 }
105
106
107
108
109
110
111
112
113 @Override
114 public final List<ParliamentMember> findListByName(final String searchString) {
115 final DetachedCriteria findByName = DetachedCriteria
116 .forClass(ParliamentMember.class);
117 findByName.add(Restrictions.ilike("name", "%" + searchString + "%"));
118 findByName.addOrder(Order.asc("name"));
119
120 @SuppressWarnings("unchecked")
121 final
122 List<ParliamentMember> result = this.getHibernateTemplate()
123 .findByCriteria(findByName);
124
125 return result;
126 }
127
128
129
130
131
132
133
134 @SuppressWarnings("unchecked")
135 @Override
136 public final List<Vote> findVotes(final Long id) {
137 try {
138 return getSession().createCriteria(Vote.class).add(
139 Restrictions.eq("parliamentMember.id", id)).addOrder(
140 Order.desc("datum")).setCacheable(true).list();
141 } catch (final HibernateException hibernateException) {
142 throw getHibernateTemplate().convertHibernateAccessException(
143 hibernateException);
144 }
145 }
146
147
148
149
150
151
152 @Override
153 @SuppressWarnings("unchecked")
154 public final List<ParliamentMember> getCurrentList() {
155 try {
156 return getSession()
157 .createCriteria(ParliamentMember.class)
158 .createAlias("parliamentMemberBallotRecord", "parliamentMemberBallotRecord")
159 .addOrder(Order.desc("parliamentMemberBallotRecord.lastVoteDate")).setCacheable(true).setMaxResults(
160 349).list();
161 } catch (final HibernateException hibernateException) {
162 throw getHibernateTemplate().convertHibernateAccessException(
163 hibernateException);
164 }
165
166 }
167
168
169
170
171
172
173
174 @Override
175 @SuppressWarnings("unchecked")
176 public final List<ParliamentMember> getCurrentTopListAbsent(final int number) {
177 try {
178
179 return getSession().createCriteria(ParliamentMember.class)
180 .createAlias("parliamentMemberBallotRecord", "parliamentMemberBallotRecord")
181 .addOrder(Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder(
182 Order.desc("parliamentMemberBallotRecord.percentageAbsent")).setCacheable(true)
183 .setMaxResults(number).list();
184 } catch (final HibernateException hibernateException) {
185 throw getHibernateTemplate().convertHibernateAccessException(
186 hibernateException);
187 }
188
189 }
190
191
192
193
194
195
196
197
198 @Override
199 @SuppressWarnings("unchecked")
200 public final List<ParliamentMember> getCurrentTopListAbsentByParty(
201 final int i, final String party) {
202 try {
203
204 return getSession().createCriteria(ParliamentMember.class).createAlias("parliamentMemberBallotRecord", "parliamentMemberBallotRecord").add(
205 Restrictions.eq("party", party)).addOrder(
206 Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder(
207 Order.desc("parliamentMemberBallotRecord.percentageAbsent")).setCacheable(true)
208 .setMaxResults(i).list();
209 } catch (final HibernateException hibernateException) {
210 throw getHibernateTemplate().convertHibernateAccessException(
211 hibernateException);
212 }
213
214 }
215
216
217
218
219
220
221
222
223 @SuppressWarnings("unchecked")
224 @Override
225 public final List<ParliamentMember> getCurrentTopListLosers(final int i) {
226 try {
227
228 return getSession().createCriteria(ParliamentMember.class).createAlias("parliamentMemberBallotRecord", "parliamentMemberBallotRecord")
229 .addOrder(Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder(
230 Order.desc("parliamentMemberBallotRecord.opponent")).setCacheable(true)
231 .setMaxResults(i).list();
232 } catch (final HibernateException hibernateException) {
233 throw getHibernateTemplate().convertHibernateAccessException(
234 hibernateException);
235 }
236
237 }
238
239
240
241
242
243
244
245 @SuppressWarnings("unchecked")
246 @Override
247 public final List<ParliamentMember> getCurrentTopListLosersByParty(
248 final int i, final String party) {
249 try {
250
251 return getSession().createCriteria(ParliamentMember.class).createAlias("parliamentMemberBallotRecord", "parliamentMemberBallotRecord").add(
252 Restrictions.eq("party", party)).addOrder(
253 Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder(
254 Order.desc("parliamentMemberBallotRecord.opponent")).setCacheable(true)
255 .setMaxResults(i).list();
256 } catch (final HibernateException hibernateException) {
257 throw getHibernateTemplate().convertHibernateAccessException(
258 hibernateException);
259 }
260
261 }
262
263
264
265
266
267
268
269
270 @SuppressWarnings("unchecked")
271 @Override
272 public final List<ParliamentMember> getCurrentTopListLoyal(final int i) {
273 try {
274
275 return getSession().createCriteria(ParliamentMember.class).createAlias("parliamentMemberBallotRecord", "parliamentMemberBallotRecord")
276 .addOrder(Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder(
277 Order.desc("parliamentMemberBallotRecord.percentageLoyal")).setCacheable(true)
278 .setMaxResults(i).list();
279 } catch (final HibernateException hibernateException) {
280 throw getHibernateTemplate().convertHibernateAccessException(
281 hibernateException);
282 }
283
284 }
285
286
287
288
289
290
291
292
293 @SuppressWarnings("unchecked")
294 @Override
295 public final List<ParliamentMember> getCurrentTopListLoyalByParty(
296 final int i, final String party) {
297 try {
298
299 return getSession().createCriteria(ParliamentMember.class).createAlias("parliamentMemberBallotRecord", "parliamentMemberBallotRecord").add(
300 Restrictions.eq("party", party)).addOrder(
301 Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder(
302 Order.desc("parliamentMemberBallotRecord.percentageLoyal")).setCacheable(true)
303 .setMaxResults(i).list();
304 } catch (final HibernateException hibernateException) {
305 throw getHibernateTemplate().convertHibernateAccessException(
306 hibernateException);
307 }
308
309 }
310
311
312
313
314
315
316
317
318 @SuppressWarnings("unchecked")
319 @Override
320 public final List<ParliamentMember> getCurrentTopListPresent(final int i) {
321 try {
322
323 return getSession().createCriteria(ParliamentMember.class).createAlias("parliamentMemberBallotRecord", "parliamentMemberBallotRecord")
324 .addOrder(Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder(
325 Order.desc("parliamentMemberBallotRecord.percentagePresent")).setCacheable(true)
326 .setMaxResults(i).list();
327 } catch (final HibernateException hibernateException) {
328 throw getHibernateTemplate().convertHibernateAccessException(
329 hibernateException);
330 }
331
332 }
333
334
335
336
337
338
339
340 @SuppressWarnings("unchecked")
341 @Override
342 public final List<ParliamentMember> getCurrentTopListPresentByParty(
343 final int i, final String party) {
344 try {
345
346 return getSession().createCriteria(ParliamentMember.class).createAlias("parliamentMemberBallotRecord", "parliamentMemberBallotRecord").add(
347 Restrictions.eq("party", party)).addOrder(
348 Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder(
349 Order.desc("parliamentMemberBallotRecord.percentagePresent")).setCacheable(true)
350 .setMaxResults(i).list();
351 } catch (final HibernateException hibernateException) {
352 throw getHibernateTemplate().convertHibernateAccessException(
353 hibernateException);
354 }
355
356 }
357
358
359
360
361
362
363
364
365 @SuppressWarnings("unchecked")
366 @Override
367 public final List<ParliamentMember> getCurrentTopListRebels(final int i) {
368 try {
369
370 return getSession().createCriteria(ParliamentMember.class).createAlias("parliamentMemberBallotRecord", "parliamentMemberBallotRecord")
371 .addOrder(Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder(
372 Order.desc("parliamentMemberBallotRecord.percentageRebel")).setCacheable(true)
373 .setMaxResults(i).list();
374 } catch (final HibernateException hibernateException) {
375 throw getHibernateTemplate().convertHibernateAccessException(
376 hibernateException);
377 }
378
379 }
380
381
382
383
384
385
386
387
388 @SuppressWarnings("unchecked")
389 @Override
390 public final List<ParliamentMember> getCurrentTopListRebelsByParty(
391 final int i, final String party) {
392 try {
393
394 return getSession().createCriteria(ParliamentMember.class).createAlias("parliamentMemberBallotRecord", "parliamentMemberBallotRecord").add(
395 Restrictions.eq("party", party)).addOrder(
396 Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder(
397 Order.desc("parliamentMemberBallotRecord.percentageRebel")).setCacheable(true)
398 .setMaxResults(i).list();
399 } catch (final HibernateException hibernateException) {
400 throw getHibernateTemplate().convertHibernateAccessException(
401 hibernateException);
402 }
403
404 }
405
406
407
408
409
410
411
412
413 @SuppressWarnings("unchecked")
414 @Override
415 public final List<ParliamentMember> getCurrentTopListWinners(final int i) {
416 try {
417
418 return getSession().createCriteria(ParliamentMember.class).createAlias("parliamentMemberBallotRecord", "parliamentMemberBallotRecord")
419 .addOrder(Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder(
420 Order.desc("parliamentMemberBallotRecord.percentageWinning")).setCacheable(true)
421 .setMaxResults(i).list();
422 } catch (final HibernateException hibernateException) {
423 throw getHibernateTemplate().convertHibernateAccessException(
424 hibernateException);
425 }
426
427 }
428
429
430
431
432
433
434
435 @SuppressWarnings("unchecked")
436 @Override
437 public final List<ParliamentMember> getCurrentTopListWinnersByParty(
438 final int i, final String party) {
439 try {
440
441 return getSession().createCriteria(ParliamentMember.class).createAlias("parliamentMemberBallotRecord", "parliamentMemberBallotRecord").add(
442 Restrictions.eq("party", party)).addOrder(
443 Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder(
444 Order.desc("parliamentMemberBallotRecord.percentageWinning")).setCacheable(true)
445 .setMaxResults(i).list();
446 } catch (final HibernateException hibernateException) {
447 throw getHibernateTemplate().convertHibernateAccessException(
448 hibernateException);
449 }
450
451 }
452
453
454
455
456
457
458
459
460 @Override
461 @SuppressWarnings("unchecked")
462 public final List<Vote.Position> getPositions(
463 final ParliamentMember parliamentMember) {
464 this.getHibernateTemplate().setCacheQueries(true);
465 final List<Vote.Position> result = getHibernateTemplate()
466 .find(
467 "select vote.position from Vote as vote where vote.parliamentMember.id= ? order by vote.datum desc,vote.ballot.id",
468 parliamentMember.getId());
469 return result;
470 }
471
472
473
474
475
476
477
478
479 @SuppressWarnings("unchecked")
480 @Override
481 public final List<ParliamentMemberVoteCompareResult> getTopEnemies(
482 final ParliamentMember parliamentMember) {
483 try {
484 return createParliamentMemberVoteCompareResultTopBaseCritera().add(
485 hasResult(parliamentMember))
486 .addOrder(Order.asc("result")).setCacheable(true).list();
487 } catch (final HibernateException hibernateException) {
488 throw getHibernateTemplate().convertHibernateAccessException(
489 hibernateException);
490 }
491 }
492
493
494
495
496
497
498
499
500 @SuppressWarnings("unchecked")
501 @Override
502 public final List<ParliamentMemberVoteCompareResult> getTopEnemiesSameParty(
503 final ParliamentMember parliamentMember) {
504 try {
505 return createParliamentMemberVoteCompareResultTopBaseCritera().add(
506 isSamePartyHasResult(parliamentMember)).addOrder(
507 Order.asc("result")).setCacheable(true).list();
508 } catch (final HibernateException hibernateException) {
509 throw getHibernateTemplate().convertHibernateAccessException(
510 hibernateException);
511 }
512 }
513
514
515
516
517
518
519
520
521 @SuppressWarnings("unchecked")
522 @Override
523 public final List<ParliamentMemberVoteCompareResult> getTopFriends(
524 final ParliamentMember parliamentMember) {
525 try {
526 return createParliamentMemberVoteCompareResultTopBaseCritera().add(
527 hasResult(parliamentMember)).addOrder(Order.desc("result"))
528 .setCacheable(true).setMaxResults(10).list();
529 } catch (final HibernateException hibernateException) {
530 throw getHibernateTemplate().convertHibernateAccessException(
531 hibernateException);
532 }
533
534 }
535
536
537
538
539
540
541
542
543 @SuppressWarnings("unchecked")
544 @Override
545 public final List<ParliamentMemberVoteCompareResult> getTopFriendsInSameParty(
546 final ParliamentMember parliamentMember) {
547 try {
548 return createParliamentMemberVoteCompareResultTopBaseCritera().add(
549 isSamePartyHasResult(parliamentMember)).addOrder(
550 Order.desc("result")).setCacheable(true).list();
551 } catch (final HibernateException hibernateException) {
552 throw getHibernateTemplate().convertHibernateAccessException(
553 hibernateException);
554 }
555 }
556
557 /***
558 * Checks for result.
559 *
560 * @param parliamentMember the parliament member
561 * @return the logical expression
562 */
563 private LogicalExpression hasResult(final ParliamentMember parliamentMember) {
564 return Restrictions.and(Restrictions.eq(
565 "parliamentMember.id", parliamentMember
566 .getId()), Restrictions.ge("result",
567 ParliamentMemberVoteCompareResult.NO_RESULT));
568 }
569
570 /***
571 * Checks if is same party.
572 *
573 * @param parliamentMember the parliament member
574 * @return the simple expression
575 */
576 private SimpleExpression isSameParty(final ParliamentMember parliamentMember) {
577 return Property
578 .forName("opponent.party").eq(parliamentMember.getParty());
579 }
580
581 /***
582 * Checks if is same party has result.
583 *
584 * @param parliamentMember the parliament member
585 * @return the logical expression
586 */
587 private LogicalExpression isSamePartyHasResult(
588 final ParliamentMember parliamentMember) {
589 return Restrictions.and(isSameParty(parliamentMember),
590 hasResult(parliamentMember));
591 }
592
593
594
595
596
597
598
599
600 @Override
601 public final void saveAll(final Collection<ParliamentMember> list) {
602 this.getHibernateTemplate().saveOrUpdateAll(list);
603 }
604
605
606
607
608
609
610
611 @Override
612 public final void saveParliamentMemberVoteCompareResult(
613 final Collection<ParliamentMemberVoteCompareResult> result) {
614 getHibernateTemplate().saveOrUpdateAll(result);
615 }
616
617 }