View Javadoc

1   /*
2   Copyright 2010 James Pether Sörling Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. 
3   	$Id
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) //$NON-NLS-1$ //$NON-NLS-2$
48                  .setMaxResults(10);
49      }
50  
51      /*
52       * (non-Javadoc)
53       * 
54       * @seecom.hack23.cia.service.dao.ParliamentMemberDAO#
55       * deleteAllParliamentMemberVoteCompareResults()
56       */
57      @Override
58  	public final void deleteAllParliamentMemberVoteCompareResults() {
59          getHibernateTemplate().bulkUpdate(
60                  "delete from ParliamentMemberVoteCompareResult"); //$NON-NLS-1$
61      }
62  
63      /*
64       * (non-Javadoc)
65       * 
66       * @see
67       * com.hack23.cia.service.dao.ParliamentMemberDAO#findLastVotes(java.lang
68       * .Long)
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( //$NON-NLS-1$
77                              Order.desc("datum")).setMaxResults(30).setCacheable(true).list(); //$NON-NLS-1$
78          } catch (final HibernateException hibernateException) {
79              throw getHibernateTemplate().convertHibernateAccessException(
80                      hibernateException);
81          }
82      }
83  
84      /*
85       * (non-Javadoc)
86       * 
87       * @see
88       * com.hack23.cia.service.dao.ParliamentMemberDAO#findLastVotes(java.lang
89       * .Long)
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( //$NON-NLS-1$
98                              Order.desc("parliamentMember.id")).setFetchMode("ballot", FetchMode.JOIN) //$NON-NLS-1$ //$NON-NLS-2$
99                      .setMaxResults(349).setCacheable(true).list();
100         } catch (final HibernateException hibernateException) {
101             throw getHibernateTemplate().convertHibernateAccessException(
102                     hibernateException);
103         }
104     }
105 
106     /*
107      * (non-Javadoc)
108      * 
109      * @see
110      * com.hack23.cia.service.dao.ParliamentMemberDAO#findListByName(java.lang
111      * .String)
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 + "%")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
118         findByName.addOrder(Order.asc("name")); //$NON-NLS-1$
119 
120         @SuppressWarnings("unchecked")
121 		final
122         List<ParliamentMember> result = this.getHibernateTemplate()
123                 .findByCriteria(findByName);
124 
125         return result;
126     }
127 
128     /*
129      * (non-Javadoc)
130      * 
131      * @see
132      * com.hack23.cia.service.dao.ParliamentMemberDAO#findVotes(java.lang.Long)
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( //$NON-NLS-1$
140                     Order.desc("datum")).setCacheable(true).list(); //$NON-NLS-1$
141         } catch (final HibernateException hibernateException) {
142             throw getHibernateTemplate().convertHibernateAccessException(
143                     hibernateException);
144         }
145     }
146 
147     /*
148      * (non-Javadoc)
149      * 
150      * @see com.hack23.cia.service.dao.ParliamentMemberDAO#getCurrentListAt()
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( //$NON-NLS-1$
160                             349).list();
161         } catch (final HibernateException hibernateException) {
162             throw getHibernateTemplate().convertHibernateAccessException(
163                     hibernateException);
164         }
165 
166     }
167 
168     /*
169      * (non-Javadoc)
170      * 
171      * @see
172      * com.hack23.cia.service.dao.ParliamentMemberDAO#getCurrentTopList(int)
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( //$NON-NLS-1$
182                             Order.desc("parliamentMemberBallotRecord.percentageAbsent")).setCacheable(true) //$NON-NLS-1$
183                     .setMaxResults(number).list();
184         } catch (final HibernateException hibernateException) {
185             throw getHibernateTemplate().convertHibernateAccessException(
186                     hibernateException);
187         }
188 
189     }
190 
191     /*
192      * (non-Javadoc)
193      * 
194      * @see
195      * com.hack23.cia.service.dao.ParliamentMemberDAO#getCurrentTopListByParty
196      * (int, java.lang.String)
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( //$NON-NLS-1$
206                     Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder( //$NON-NLS-1$
207                     Order.desc("parliamentMemberBallotRecord.percentageAbsent")).setCacheable(true) //$NON-NLS-1$
208                     .setMaxResults(i).list();
209         } catch (final HibernateException hibernateException) {
210             throw getHibernateTemplate().convertHibernateAccessException(
211                     hibernateException);
212         }
213 
214     }
215 
216     /*
217      * (non-Javadoc)
218      * 
219      * @see
220      * com.hack23.cia.service.dao.ParliamentMemberDAO#getCurrentTopListLosers
221      * (int)
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( //$NON-NLS-1$
230                             Order.desc("parliamentMemberBallotRecord.opponent")).setCacheable(true) //$NON-NLS-1$
231                     .setMaxResults(i).list();
232         } catch (final HibernateException hibernateException) {
233             throw getHibernateTemplate().convertHibernateAccessException(
234                     hibernateException);
235         }
236 
237     }
238 
239     /*
240      * (non-Javadoc)
241      * 
242      * @seecom.hack23.cia.service.dao.ParliamentMemberDAO#
243      * getCurrentTopListLosersByParty(int, java.lang.String)
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( //$NON-NLS-1$
253                     Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder( //$NON-NLS-1$
254                     Order.desc("parliamentMemberBallotRecord.opponent")).setCacheable(true) //$NON-NLS-1$
255                     .setMaxResults(i).list();
256         } catch (final HibernateException hibernateException) {
257             throw getHibernateTemplate().convertHibernateAccessException(
258                     hibernateException);
259         }
260 
261     }
262 
263     /*
264      * (non-Javadoc)
265      * 
266      * @see
267      * com.hack23.cia.service.dao.ParliamentMemberDAO#getCurrentTopListLoyal
268      * (int)
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( //$NON-NLS-1$
277                             Order.desc("parliamentMemberBallotRecord.percentageLoyal")).setCacheable(true) //$NON-NLS-1$
278                     .setMaxResults(i).list();
279         } catch (final HibernateException hibernateException) {
280             throw getHibernateTemplate().convertHibernateAccessException(
281                     hibernateException);
282         }
283 
284     }
285 
286     /*
287      * (non-Javadoc)
288      * 
289      * @see
290      * com.hack23.cia.service.dao.ParliamentMemberDAO#getCurrentTopListLoyalByParty
291      * (int, java.lang.String)
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( //$NON-NLS-1$
301                     Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder( //$NON-NLS-1$
302                     Order.desc("parliamentMemberBallotRecord.percentageLoyal")).setCacheable(true) //$NON-NLS-1$
303                     .setMaxResults(i).list();
304         } catch (final HibernateException hibernateException) {
305             throw getHibernateTemplate().convertHibernateAccessException(
306                     hibernateException);
307         }
308 
309     }
310 
311     /*
312      * (non-Javadoc)
313      * 
314      * @see
315      * com.hack23.cia.service.dao.ParliamentMemberDAO#getCurrentTopListPresent
316      * (int)
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( //$NON-NLS-1$
325                             Order.desc("parliamentMemberBallotRecord.percentagePresent")).setCacheable(true) //$NON-NLS-1$
326                     .setMaxResults(i).list();
327         } catch (final HibernateException hibernateException) {
328             throw getHibernateTemplate().convertHibernateAccessException(
329                     hibernateException);
330         }
331 
332     }
333 
334     /*
335      * (non-Javadoc)
336      * 
337      * @seecom.hack23.cia.service.dao.ParliamentMemberDAO#
338      * getCurrentTopListPresentByParty(int, java.lang.String)
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( //$NON-NLS-1$
348                     Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder( //$NON-NLS-1$
349                     Order.desc("parliamentMemberBallotRecord.percentagePresent")).setCacheable(true) //$NON-NLS-1$
350                     .setMaxResults(i).list();
351         } catch (final HibernateException hibernateException) {
352             throw getHibernateTemplate().convertHibernateAccessException(
353                     hibernateException);
354         }
355 
356     }
357 
358     /*
359      * (non-Javadoc)
360      * 
361      * @see
362      * com.hack23.cia.service.dao.ParliamentMemberDAO#getCurrentTopListRebels
363      * (int)
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( //$NON-NLS-1$
372                             Order.desc("parliamentMemberBallotRecord.percentageRebel")).setCacheable(true) //$NON-NLS-1$
373                     .setMaxResults(i).list();
374         } catch (final HibernateException hibernateException) {
375             throw getHibernateTemplate().convertHibernateAccessException(
376                     hibernateException);
377         }
378 
379     }
380 
381     /*
382      * (non-Javadoc)
383      * 
384      * @see
385      * com.hack23.cia.service.dao.ParliamentMemberDAO#getCurrentTopListRebelsByParty
386      * (int, java.lang.String)
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( //$NON-NLS-1$
396                     Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder( //$NON-NLS-1$
397                     Order.desc("parliamentMemberBallotRecord.percentageRebel")).setCacheable(true) //$NON-NLS-1$
398                     .setMaxResults(i).list();
399         } catch (final HibernateException hibernateException) {
400             throw getHibernateTemplate().convertHibernateAccessException(
401                     hibernateException);
402         }
403 
404     }
405 
406     /*
407      * (non-Javadoc)
408      * 
409      * @see
410      * com.hack23.cia.service.dao.ParliamentMemberDAO#getCurrentTopListWinners
411      * (int)
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( //$NON-NLS-1$
420                             Order.desc("parliamentMemberBallotRecord.percentageWinning")).setCacheable(true) //$NON-NLS-1$
421                     .setMaxResults(i).list();
422         } catch (final HibernateException hibernateException) {
423             throw getHibernateTemplate().convertHibernateAccessException(
424                     hibernateException);
425         }
426 
427     }
428 
429     /*
430      * (non-Javadoc)
431      * 
432      * @seecom.hack23.cia.service.dao.ParliamentMemberDAO#
433      * getCurrentTopListWinnersByParty(int, java.lang.String)
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( //$NON-NLS-1$
443                     Order.desc("parliamentMemberBallotRecord.lastVoteDate")).addOrder( //$NON-NLS-1$
444                     Order.desc("parliamentMemberBallotRecord.percentageWinning")).setCacheable(true) //$NON-NLS-1$
445                     .setMaxResults(i).list();
446         } catch (final HibernateException hibernateException) {
447             throw getHibernateTemplate().convertHibernateAccessException(
448                     hibernateException);
449         }
450 
451     }
452 
453     /*
454      * (non-Javadoc)
455      * 
456      * @see
457      * com.hack23.cia.service.dao.ParliamentMemberDAO#getPositions(com.hack23
458      * .cia.model.sweden.ParliamentMember)
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", //$NON-NLS-1$
468                         parliamentMember.getId());
469         return result;
470     }
471 
472     /*
473      * (non-Javadoc)
474      * 
475      * @see
476      * com.hack23.cia.service.dao.ParliamentMemberDAO#getTopEnemies(com.hack23
477      * .cia.model.sweden.ParliamentMember)
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(); //$NON-NLS-1$
487         } catch (final HibernateException hibernateException) {
488             throw getHibernateTemplate().convertHibernateAccessException(
489                     hibernateException);
490         }
491     }
492 
493     /*
494      * (non-Javadoc)
495      * 
496      * @see
497      * com.hack23.cia.service.dao.ParliamentMemberDAO#getTopEnemiesSameParty
498      * (com.hack23.cia.model.sweden.ParliamentMember)
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(); //$NON-NLS-1$
508         } catch (final HibernateException hibernateException) {
509             throw getHibernateTemplate().convertHibernateAccessException(
510                     hibernateException);
511         }
512     }
513 
514     /*
515      * (non-Javadoc)
516      * 
517      * @see
518      * com.hack23.cia.service.dao.ParliamentMemberDAO#getTopFriends(com.hack23
519      * .cia.model.sweden.ParliamentMember)
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")) //$NON-NLS-1$
528                     .setCacheable(true).setMaxResults(10).list();
529         } catch (final HibernateException hibernateException) {
530             throw getHibernateTemplate().convertHibernateAccessException(
531                     hibernateException);
532         }
533 
534     }
535 
536     /*
537      * (non-Javadoc)
538      * 
539      * @see
540      * com.hack23.cia.service.dao.ParliamentMemberDAO#getTopFriendsInSameParty
541      * (com.hack23.cia.model.sweden.ParliamentMember)
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(); //$NON-NLS-1$
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 //$NON-NLS-1$
566                         .getId()), Restrictions.ge("result", //$NON-NLS-1$
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()); //$NON-NLS-1$
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      * (non-Javadoc)
595      * 
596      * @see
597      * com.hack23.cia.service.dao.ParliamentMemberDAO#saveAll(java.util.Collection
598      * )
599      */
600     @Override
601     public final void saveAll(final Collection<ParliamentMember> list) {
602         this.getHibernateTemplate().saveOrUpdateAll(list);
603     }
604 
605     /*
606      * (non-Javadoc)
607      * 
608      * @seecom.hack23.cia.service.dao.ParliamentMemberDAO#
609      * saveParliamentMemberVoteCompareResult(java.util.Collection)
610      */
611     @Override
612     public final void saveParliamentMemberVoteCompareResult(
613             final Collection<ParliamentMemberVoteCompareResult> result) {
614         getHibernateTemplate().saveOrUpdateAll(result);
615     }
616 
617 }