r3442 - in trunk: pollen-persistence/src/main/java/org/chorem/pollen/business/persistence pollen-services/src/main/java/org/chorem/pollen/entities/migration pollen-services/src/main/java/org/chorem/pollen/services/impl pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll
Author: tchemit Date: 2012-06-11 08:47:02 +0200 (Mon, 11 Jun 2012) New Revision: 3442 Url: http://chorem.org/repositories/revision/pollen/3442 Log: fixes #173: [Vote] Montrer les votes dans l'ordre chronologique inverse Modified: trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/VoteDAOImpl.java trunk/pollen-services/src/main/java/org/chorem/pollen/entities/migration/PollenMigrationCallbackV1_4.java trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.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-06-10 22:20:02 UTC (rev 3441) +++ trunk/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/VoteDAOImpl.java 2012-06-11 06:47:02 UTC (rev 3442) @@ -37,6 +37,40 @@ /** Logger. */ private static final Log log = LogFactory.getLog(VoteDAOImpl.class); + public List<E> getAllVotes(Poll poll) throws TopiaException { + + Preconditions.checkNotNull(poll); + List<E> results; + + // No need to load votes for an anonymous poll + if (poll.isAnonymous()) { + + results = Lists.newArrayList(); + } else { + + // FIXME-FD20100309 : change model to suppress link from poll to vote + // It's not necessary to have votes when retrieving the poll, this + // method do this job only when it's needed + +// if (log.isDebugEnabled()) { +// log.debug("Load votes for poll with uid = " + poll.getPollId()); +// log.debug("LIMIT : startIndex = " + startIndex + " _ " + +// "endIndex = " + endIndex); +// } + + // FIXME : refactor this to use TopiaQuery from ToPIA 2.3 + // Order the results by creation date (the last vote done will be + // at the end of the list) + TopiaQuery query = createQuery("e"). + addFrom(Poll.class, "p"). + addWhere("p", TopiaQuery.Op.EQ, poll). + addWhere("e in elements (p." + Poll.PROPERTY_VOTE + ")"). + addOrder("e.topiaCreateDate DESC"); + results = findAllByQuery(query); + } + return results; + } + public List<E> getVotesByPoll(Poll poll, TopiaFilterPagerUtil.FilterPagerBean pager) throws TopiaException { @@ -68,7 +102,7 @@ addFrom(Poll.class, "p"). addWhere("p", TopiaQuery.Op.EQ, poll). addWhere("e in elements (p." + Poll.PROPERTY_VOTE + ")"). - addOrder("topiaCreateDate"); + addOrder("e.topiaCreateDate"); TopiaFilterPagerUtil.addPagerToQuery(query, pager); results = findAllByQuery(query); } @@ -83,7 +117,7 @@ addWhere("p", TopiaQuery.Op.EQ, poll). addWhere("e in elements(p." + Poll.PROPERTY_VOTE + ")"). addWhere("e.pollAccount.votingId", TopiaQuery.Op.EQ, votingId). - addOrder("topiaCreateDate"); + addOrder("e.topiaCreateDate"); boolean result = existByQuery(query); return result; } Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/entities/migration/PollenMigrationCallbackV1_4.java =================================================================== --- trunk/pollen-services/src/main/java/org/chorem/pollen/entities/migration/PollenMigrationCallbackV1_4.java 2012-06-10 22:20:02 UTC (rev 3441) +++ trunk/pollen-services/src/main/java/org/chorem/pollen/entities/migration/PollenMigrationCallbackV1_4.java 2012-06-11 06:47:02 UTC (rev 3442) @@ -94,8 +94,16 @@ // add unique on Poll.pollId and PollAccount.accountId (http://www.chorem.org/issues/583) addUniqueOnPollIds(queries); + + // Change to type 'timestamp' the topiacreatdate to have nice order (for vote and comment) (http://chorem.org/issues/173) + addTimestampOnTopiaCreateDate(queries); } + private void addTimestampOnTopiaCreateDate(List<String> queries) { + queries.add("alter TABLE vote ALTER COLUMN topiacreatedate type timestamp;"); + queries.add("alter TABLE comment ALTER COLUMN topiacreatedate type timestamp;"); + } + private void addUniqueOnPollIds(List<String> queries) { queries.add("CREATE UNIQUE INDEX idx_Pöll_pollId ON poll(pollId);"); Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java =================================================================== --- trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java 2012-06-10 22:20:02 UTC (rev 3441) +++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java 2012-06-11 06:47:02 UTC (rev 3442) @@ -355,6 +355,17 @@ pollFeedService.onVoteDeleted(poll, entityToDelete, voteAccount, reason); } + public List<Vote> getAllVotes(Poll poll) { + try { + VoteDAO dao = getDAO(Vote.class); + List<Vote> results = dao.getAllVotes(poll); + return results; + + } catch (TopiaException e) { + throw new PollenTechnicalException("Could not obtain votes", e); + } + } + public List<Vote> getVotesByPoll(Poll poll, TopiaFilterPagerUtil.FilterPagerBean pager) { try { Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java 2012-06-10 22:20:02 UTC (rev 3441) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java 2012-06-11 06:47:02 UTC (rev 3442) @@ -43,7 +43,6 @@ import org.chorem.pollen.services.exceptions.PollNotFoundException; import org.chorem.pollen.ui.actions.PageSkin; -import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Map; @@ -301,11 +300,8 @@ // All votes // TODO no pagination for the moment, need to retrieve the correct page depends on current pollAccount - votes = poll.getVote(); + votes = getVoteService().getAllVotes(poll); - // votes are loaded by topiaCreateDate but we want the reverse order. - Collections.reverse(votes); - voteAllowed = getVoteService().isVoteAllowed(poll, pollAccount); // Current vote
participants (1)
-
tchemit@users.chorem.org