r3439 - in trunk: 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 00:06:51 +0200 (Mon, 11 Jun 2012) New Revision: 3439 Url: http://chorem.org/repositories/revision/pollen/3439 Log: fixes #591: Probl?\195?\168me de vote Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollUrlService.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/VoteForPoll.java Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollUrlService.java =================================================================== --- trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollUrlService.java 2012-06-10 22:06:02 UTC (rev 3438) +++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollUrlService.java 2012-06-10 22:06:51 UTC (rev 3439) @@ -26,6 +26,7 @@ import org.chorem.pollen.bean.PollUri; import org.chorem.pollen.bean.PollUrl; import org.chorem.pollen.business.persistence.Poll; +import org.chorem.pollen.business.persistence.PollAccount; import org.chorem.pollen.business.persistence.PollActions; import org.chorem.pollen.services.PollenServiceSupport; @@ -62,6 +63,11 @@ return result; } + public PollUrl getPollVoteUrl(Poll poll, PollAccount pollAccount) { + PollUrl result = newPollUri(PollActions.VOTE, poll, pollAccount); + return result; + } + public PollUrl getPollModerateUrl(Poll poll) { PollUrl result = newPollUri(PollActions.MODERATE, poll, true); return result; @@ -79,7 +85,12 @@ } protected PollUrl newPollUri(PollActions action, Poll poll, boolean admin) { + Preconditions.checkNotNull(poll); + return newPollUri(action, poll, admin ? poll.getCreator() : null); + } + protected PollUrl newPollUri(PollActions action, Poll poll, PollAccount pollAccount) { + Preconditions.checkNotNull(poll); Preconditions.checkNotNull(action); @@ -87,8 +98,18 @@ URL applicationUrl = serviceContext.getApplicationURL(); String baseUrl = applicationUrl + prefix; - PollUri pollUri = PollUri.newPollUri( - admin ? poll.getAdminId() : poll.getPollId()); + PollUri pollUri; + if (pollAccount == null) { + + // no account id + pollUri = PollUri.newPollUri(poll.getPollId()); + + } else { + + // add account id + pollUri = PollUri.newPollUri(poll.getPollId(), + pollAccount.getAccountId()); + } PollUrl result = PollUrl.newPollUrl(baseUrl, pollUri); return result; } 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:06:02 UTC (rev 3438) +++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java 2012-06-10 22:06:51 UTC (rev 3439) @@ -85,11 +85,15 @@ Preconditions.checkNotNull(accountEditable); VoteDAO dao = getDAO(Vote.class); - Vote voteLoaded; - try { - voteLoaded = dao.findByAccountId(accountEditable.getAccountId()); - } catch (TopiaException e) { - throw new PollenTechnicalException(e); + Vote voteLoaded = null; + if (accountEditable.getAccountId() != null) { + // if pollAccount has no accoutId, so not yet voted, no need to + // seek for something is db. + try { + voteLoaded = dao.findByAccountId(accountEditable.getAccountId()); + } catch (TopiaException e) { + throw new PollenTechnicalException(e); + } } Vote result; @@ -155,7 +159,8 @@ // Create new account PollAccountDAO pollAccountDAO = getDAO(PollAccount.class); - pollAccountLoaded = create(pollAccountDAO); + pollAccountLoaded = createWithProperties( + pollAccountDAO, PollAccount.PROPERTY_ACCOUNT_ID, generateId()); pollAccountLoaded.setAccountId(pollAccount.getAccountId()); } else { Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/VoteForPoll.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/VoteForPoll.java 2012-06-10 22:06:02 UTC (rev 3438) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/VoteForPoll.java 2012-06-10 22:06:51 UTC (rev 3439) @@ -77,7 +77,7 @@ if (pollAccount.getTopiaId() == null && getVoteService().hasAlreadyVoted(poll, name)) { addFieldError("pollAccount.votingId", - _("pollen.error.user.alreadyVoted")); + _("pollen.error.user.alreadyVoted", name)); } } @@ -137,26 +137,31 @@ VoteService voteService = getVoteService(); + Vote newVote; if (StringUtils.isBlank(vote.getTopiaId())) { // create a new vote - voteService.createVote(poll, vote); + newVote = voteService.createVote(poll, vote); } else { // update existing vote - voteService.updateVote(poll, vote); + newVote = voteService.updateVote(poll, vote); } //TODO tchemit-2012-05-18 Why clean messages and just messages here ? clearFlashMessages(); - // For free Poll, display the update Url (useless if user is logged) - if (PollType.FREE == poll.getPollType() && !isUserLoggued()) { + // For free Poll, display the update Url (useless if user is logged or + // not using a modify url) + if (PollType.FREE == poll.getPollType() && + !isUserLoggued() && + StringUtils.isBlank(getAccountId())) { String pollId = poll.getPollId(); - String accountId = getPollAccount().getAccountId(); + String accountId = newVote.getPollAccount().getAccountId(); - PollUrl updateUrl = getPollUrlService().getPollModerateUrl(poll); + PollUrl updateUrl = getPollUrlService().getPollVoteUrl( + poll, newVote.getPollAccount()); if (log.isDebugEnabled()) { log.debug(String.format(
participants (1)
-
tchemit@users.chorem.org