This is an automated email from the git hooks/post-receive script. New commit to branch feature/validVoteCounting in repository pollen. See http://git.chorem.org/pollen.git commit 3ddc1e3c3304709923fda893069ca88974523bb5 Author: Adrien Garandel <a.garandel@dralagen.fr> Date: Fri Jul 25 11:37:06 2014 +0200 check if name is already used --- .../pollen/services/service/VoteService.java | 29 +++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java index 2acc2ad..2317c41 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java @@ -24,6 +24,7 @@ package org.chorem.pollen.services.service; */ import com.google.common.base.Function; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.chorem.pollen.persistence.entity.Choice; import org.chorem.pollen.persistence.entity.Poll; @@ -168,6 +169,9 @@ public class VoteService extends PollenServiceSupport { ErrorMap errors = new ErrorMap(); + boolean voteExists = vote.isPersisted(); + Set<String> voterNames = new HashSet<>(); + // poll can't be closed checkNot(errors, "poll", poll.isClosed(), "poll can not be closed"); @@ -176,7 +180,30 @@ public class VoteService extends PollenServiceSupport { // poll must be started check(errors, "poll", Polls.isStarted(poll, now), "poll is not started"); - checkNotBlank(errors, "voter.name", vote.getVoterName(), "voter name can not be empty"); + boolean voteNameNotBlank = checkNotBlank(errors, "voter.name", vote.getVoterName(), "voter name can not be empty"); + + if (voteNameNotBlank) { + List<Vote> existingVote = getVoteDao().findAll(poll); + + if (CollectionUtils.isNotEmpty(existingVote)) { + + // get all voter name + + for ( Vote oneVote : existingVote ) { + if ( voteExists && + oneVote.getTopiaId().equals(vote.getEntityId()) ) { + + continue; + } + + voterNames.add(oneVote.getVoter().getName()); + } + } + + boolean voterNameAdded = voterNames.add(vote.getVoterName()); + check(errors, "voter.name", voterNameAdded, "voter name is already used"); + + } //TODO Finish validation -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.