Author: tchemit Date: 2012-08-28 18:31:46 +0200 (Tue, 28 Aug 2012) New Revision: 3653 Url: http://chorem.org/repositories/revision/pollen/3653 Log: avoid logic in DAO, poll anonymous must not be used to obtain votes from db... Modified: trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/VoteDAOImpl.java trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/VoteDAOImplTest.java Modified: trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/VoteDAOImpl.java =================================================================== --- trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/VoteDAOImpl.java 2012-08-28 16:30:53 UTC (rev 3652) +++ trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/VoteDAOImpl.java 2012-08-28 16:31:46 UTC (rev 3653) @@ -23,7 +23,6 @@ package org.chorem.pollen.business.persistence; import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaFilterPagerUtil; @@ -34,22 +33,15 @@ public List<E> findAllVotes(Poll poll) throws TopiaException { Preconditions.checkNotNull(poll); - List<E> results; - // No need to load votes for an anonymous poll - if (poll.isAnonymous()) { + String hql = "SELECT e FROM VoteImpl e, PollImpl p WHERE " + + "p = :p AND " + + "e IN ELEMENTS(p.vote) " + + "ORDER BY e.topiaCreateDate DESC"; - results = Lists.newArrayList(); - } else { + List<E> result = findAllByQuery(hql, "p", poll); - String hql = "SELECT e FROM VoteImpl e, PollImpl p WHERE " + - "p = :p AND " + - "e IN ELEMENTS(p.vote) " + - "ORDER BY e.topiaCreateDate DESC"; - - results = findAllByQuery(hql, "p", poll); - } - return results; + return result; } public List<E> findAllVotesByPoll(Poll poll, @@ -58,28 +50,19 @@ Preconditions.checkNotNull(poll); Preconditions.checkNotNull(pager); - List<E> results; + String countHql = "SELECT COUNT(e) FROM " + + "VoteImpl e, PollImpl p WHERE " + + "p = :p AND e IN ELEMENTS(p.vote)"; - // No need to load votes for an anonymous poll - if (poll.isAnonymous()) { + computeAndAddRecordsToPager(countHql, pager, "p", poll); - results = Lists.newArrayList(); - } else { + String hql = "SELECT e FROM VoteImpl e, PollImpl p WHERE " + + "p = :p AND " + + "e IN ELEMENTS(p.vote) " + + "ORDER BY e.topiaCreateDate DESC"; - String countHql = "SELECT COUNT(e) FROM " + - "VoteImpl e, PollImpl p WHERE " + - "p = :p AND e IN ELEMENTS(p.vote)"; - - computeAndAddRecordsToPager(countHql, pager, "p", poll); - - String hql = "SELECT e FROM VoteImpl e, PollImpl p WHERE " + - "p = :p AND " + - "e IN ELEMENTS(p.vote) " + - "ORDER BY e.topiaCreateDate DESC"; - - results = findAllByQueryAndPager(hql, pager, "p", poll); - } - return results; + List<E> result = findAllByQueryAndPager(hql, pager, "p", poll); + return result; } public boolean hasAlreadyVoted(Poll poll, String votingId) throws TopiaException { Modified: trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/VoteDAOImplTest.java =================================================================== --- trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/VoteDAOImplTest.java 2012-08-28 16:30:53 UTC (rev 3652) +++ trunk/pollen-persistence/src/test/java/org/chorem/pollen/business/persistence/VoteDAOImplTest.java 2012-08-28 16:31:46 UTC (rev 3653) @@ -49,7 +49,8 @@ Poll poll1 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId1"); Poll poll2 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId2", - Poll.PROPERTY_POLL_VOTE_VISIBILITY, PollVoteVisibility.NOBODY); + Poll.PROPERTY_POLL_VOTE_VISIBILITY, + PollVoteVisibility.NOBODY); Vote vote1 = voteDAO.create(); vote1.setTopiaCreateDate(DateUtil.createDate(0, 0, 0, 1, 1, 2010)); @@ -76,7 +77,8 @@ actual = voteDAO.findAllVotes(poll2); Assert.assertNotNull(actual); - Assert.assertTrue(actual.isEmpty()); + Assert.assertEquals(1, actual.size()); + Assert.assertEquals(vote3, actual.get(0)); } @Test @@ -89,7 +91,8 @@ Poll poll1 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId1"); Poll poll2 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId2", - Poll.PROPERTY_POLL_VOTE_VISIBILITY, PollVoteVisibility.NOBODY); + Poll.PROPERTY_POLL_VOTE_VISIBILITY, + PollVoteVisibility.NOBODY); Vote vote1 = voteDAO.create(); vote1.setTopiaCreateDate(DateUtil.createDate(0, 0, 0, 1, 1, 2010)); @@ -120,7 +123,8 @@ actual = voteDAO.findAllVotesByPoll(poll2, pager); Assert.assertNotNull(actual); - Assert.assertTrue(actual.isEmpty()); + Assert.assertEquals(1, actual.size()); + Assert.assertEquals(vote3, actual.get(0)); } @Test @@ -134,7 +138,8 @@ Poll poll1 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId1"); Poll poll2 = pollDAO.create(Poll.PROPERTY_POLL_ID, "pollId2", - Poll.PROPERTY_POLL_VOTE_VISIBILITY, PollVoteVisibility.NOBODY); + Poll.PROPERTY_POLL_VOTE_VISIBILITY, + PollVoteVisibility.NOBODY); String votingId1 = "votingId1"; String votingId2 = "votingId2";