This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git commit 8d70362887d36952768708a2aec37f961c2c5d57 Author: Kevin Morin <morin@codelutin.com> Date: Tue Aug 1 18:29:00 2017 +0200 suppression de l'attribut 'closed' sur le poll. On se base seulement sur la date de fin pour savori s'il est fermé. --- .../pollen/persistence/entity/PollTopiaDao.java | 3 +- .../chorem/pollen/persistence/entity/Polls.java | 4 +- .../h2/V3_0_0_6__remove_close_on_poll.sql | 3 + .../postgresql/V3_0_0_6__remove_close_on_poll.sql | 3 + pollen-persistence/src/main/xmi/pollen.properties | 2 +- pollen-persistence/src/main/xmi/pollen.zargo | Bin 26867 -> 26817 bytes .../org/chorem/pollen/rest/api/PollApiTest.java | 2 +- .../org/chorem/pollen/services/bean/PollBean.java | 17 +----- .../pollen/services/service/PollService.java | 22 ++++--- .../pollen/services/service/VoteService.java | 63 ++++++++++----------- .../services/service/security/SecurityService.java | 8 ++- pollen-services/src/main/resources/fixtures.yaml | 1 - 12 files changed, 58 insertions(+), 70 deletions(-) diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollTopiaDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollTopiaDao.java index 19be3a5c..88e8ea39 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollTopiaDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollTopiaDao.java @@ -193,8 +193,7 @@ public class PollTopiaDao extends AbstractPollTopiaDao<Poll> { Date now = calendar.getTime(); return forHql("FROM " + Poll.class.getCanonicalName() +" p" + - " WHERE p." + Poll.PROPERTY_CLOSED + " = false" + - " AND p." + Poll.PROPERTY_END_DATE + " IS NOT NULL" + + " WHERE p." + Poll.PROPERTY_END_DATE + " IS NOT NULL" + " AND p." + Poll.PROPERTY_POLL_END_REMINDER_SENT + " = false" + " AND p." + Poll.PROPERTY_NOTIFY_ME_HOURS_BEFORE_POLL_ENDS + " > 0" ).findAll().stream() diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/Polls.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/Polls.java index 04542729..7612516a 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/Polls.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/Polls.java @@ -46,8 +46,7 @@ public class Polls { } public boolean isRunning(Poll poll, Date currentDate) { - return !poll.isClosed() && - isStarted(poll, currentDate) && + return isStarted(poll, currentDate) && !isFinished(poll, currentDate); } @@ -64,7 +63,6 @@ public class Polls { public static boolean isAddChoiceRunning(Poll poll, Date currentDate) { return poll.isChoiceAddAllowed() && - !poll.isClosed() && !isFinished(poll, currentDate) && isAddChoiceStarted(poll, currentDate) && !isAddChoiceFinished(poll, currentDate); diff --git a/pollen-persistence/src/main/resources/db/migration/h2/V3_0_0_6__remove_close_on_poll.sql b/pollen-persistence/src/main/resources/db/migration/h2/V3_0_0_6__remove_close_on_poll.sql new file mode 100644 index 00000000..e6005d6e --- /dev/null +++ b/pollen-persistence/src/main/resources/db/migration/h2/V3_0_0_6__remove_close_on_poll.sql @@ -0,0 +1,3 @@ +-- remove close in poll +update poll set enddate = NOW() where enddate is null and closed; +alter table poll drop column closed; \ No newline at end of file diff --git a/pollen-persistence/src/main/resources/db/migration/postgresql/V3_0_0_6__remove_close_on_poll.sql b/pollen-persistence/src/main/resources/db/migration/postgresql/V3_0_0_6__remove_close_on_poll.sql new file mode 100644 index 00000000..e6005d6e --- /dev/null +++ b/pollen-persistence/src/main/resources/db/migration/postgresql/V3_0_0_6__remove_close_on_poll.sql @@ -0,0 +1,3 @@ +-- remove close in poll +update poll set enddate = NOW() where enddate is null and closed; +alter table poll drop column closed; \ No newline at end of file diff --git a/pollen-persistence/src/main/xmi/pollen.properties b/pollen-persistence/src/main/xmi/pollen.properties index d6ac9ccd..c659a6ce 100644 --- a/pollen-persistence/src/main/xmi/pollen.properties +++ b/pollen-persistence/src/main/xmi/pollen.properties @@ -18,7 +18,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # #L% ###m -model.tagvalue.version=3.0.0.5 +model.tagvalue.version=3.0.0.6 #model.tagValue.notGenerateToString=true #model.tagValue.constantPrefix=PROPERTY_ #model.tagValue.useEnumerationName=true diff --git a/pollen-persistence/src/main/xmi/pollen.zargo b/pollen-persistence/src/main/xmi/pollen.zargo index ef9c933a..55e72c05 100644 Binary files a/pollen-persistence/src/main/xmi/pollen.zargo and b/pollen-persistence/src/main/xmi/pollen.zargo differ diff --git a/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollApiTest.java b/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollApiTest.java index 61df2599..8c6384dd 100644 --- a/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollApiTest.java +++ b/pollen-rest-api/src/test/java/org/chorem/pollen/rest/api/PollApiTest.java @@ -136,7 +136,7 @@ public class PollApiTest extends AbstractPollenRestApiTest { poll.setVoteCountingType(1); poll.setTitle("title"); poll.setChoiceType(ChoiceType.TEXT); - poll.setClosed(false); + poll.setEndDate(null); List<ChoiceBean> choices = new ArrayList<>(); ChoiceBean choice1 = new ChoiceBean(); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java index 3a64b9d2..30bf3523 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java @@ -30,6 +30,7 @@ import org.chorem.pollen.persistence.entity.PollImpl; import org.chorem.pollen.persistence.entity.PollType; import org.chorem.pollen.persistence.entity.PollenPrincipal; import org.chorem.pollen.persistence.entity.PollenPrincipalImpl; +import org.chorem.pollen.persistence.entity.Polls; import org.chorem.pollen.persistence.entity.ResultVisibility; import org.chorem.pollen.persistence.entity.VoteVisibility; @@ -105,8 +106,6 @@ public class PollBean extends PollenBean<Poll> { protected ResultVisibility resultVisibility; - protected boolean isClosed; - protected boolean resultIsVisible; protected boolean commentIsVisible; @@ -177,7 +176,6 @@ public class PollBean extends PollenBean<Poll> { setVoteVisibility(entity.getVoteVisibility()); setCommentVisibility(entity.getCommentVisibility()); setResultVisibility(entity.getResultVisibility()); - setClosed(entity.isClosed()); setParticipants(new LinkedHashSet<>(entity.getParticipants() == null ? Collections.emptyList() : Arrays.asList(entity.getParticipants().split("\\s")))); setWithMe(entity.isWithMe()); setChoiceType(entity.getChoiceType()); @@ -185,11 +183,11 @@ public class PollBean extends PollenBean<Poll> { setVoteNotification(entity.isVoteNotification()); setNotificationLocale(entity.getNotificationLocale()); - if (entity.isClosed()) { + Date now = new Date(); + if (Polls.isFinished(entity, now)) { setStatus(PollStatus.CLOSED); } else { setStatus(PollStatus.CREATED); - Date now = new Date(); if (entity.isChoiceAddAllowed()) { Date beginChoiceDate = entity.getBeginChoiceDate(); @@ -237,7 +235,6 @@ public class PollBean extends PollenBean<Poll> { entity.setVoteVisibility(getVoteVisibility()); entity.setCommentVisibility(getCommentVisibility()); entity.setResultVisibility(getResultVisibility()); - entity.setClosed(isClosed()); entity.setParticipants(Joiner.on(' ').join(getParticipants())); entity.setChoiceType(getChoiceType()); entity.setWithMe(isWithMe()); @@ -392,14 +389,6 @@ public class PollBean extends PollenBean<Poll> { this.resultVisibility = resultVisibility; } - public boolean isClosed() { - return isClosed; - } - - public void setClosed(boolean isClosed) { - this.isClosed = isClosed; - } - public boolean isResultIsVisible() { return resultIsVisible; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java index 2954b0b9..87d9bbf3 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java @@ -81,18 +81,17 @@ public class PollService extends PollenServiceSupport { input.setVoteIsVisible(isPermitted(PermissionVerb.readVote, input.getEntityId())); - boolean resultIsVisible = (input.isClosed() - || input.isContinuousResults() - && (input.getEndDate() == null || getNow().before(input.getEndDate())) - && (input.getBeginDate() == null || !getNow().before(input.getBeginDate())) - && isPermitted(PermissionVerb.readPollResult, input.getEntityId())); + Date now = getNow(); + boolean beforePollEndDate = input.getEndDate() == null || now.before(input.getEndDate()); + + boolean resultIsVisible = (beforePollEndDate || input.isContinuousResults()) + && isPermitted(PermissionVerb.readPollResult, input.getEntityId()); input.setResultIsVisible(resultIsVisible); - boolean canVote = !input.isClosed() - && (input.getEndDate() == null || getNow().before(input.getEndDate())) - && (input.getBeginDate() == null || !getNow().before(input.getBeginDate())) - && isPermitted(PermissionVerb.addVote, input.getEntityId()); + boolean canVote = beforePollEndDate + && (input.getBeginDate() == null || !now.before(input.getBeginDate())) + && isPermitted(PermissionVerb.addVote, input.getEntityId()); input.setCanVote(canVote); if (commentIsVisible) { @@ -292,7 +291,6 @@ public class PollService extends PollenServiceSupport { clonedPoll.setEntityId(null); clonedPoll.setPermission(null); - clonedPoll.setClosed(false); clonedPoll.setBeginDate(serviceContext.getNow()); clonedPoll.setEndDate(null); clonedPoll.setBeginChoiceDate(null); @@ -339,7 +337,7 @@ public class PollService extends PollenServiceSupport { Poll poll = getPoll0(pollId); - poll.setClosed(true); + poll.setEndDate(getNow()); savePoll(toBean(PollBean.class, poll), null); @@ -358,7 +356,7 @@ public class PollService extends PollenServiceSupport { Poll poll = getPoll0(pollId); - poll.setClosed(false); + poll.setEndDate(null); savePoll(toBean(PollBean.class, poll), null); 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 66a5d144..66f8c3e1 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 @@ -204,57 +204,54 @@ public class VoteService extends PollenServiceSupport { boolean voteExists = vote.isPersisted(); Set<String> voterNames = new HashSet<>(); - boolean notClosed = checkNot(errors, "poll", poll.isClosed(), l(getLocale(), "pollen.error.vote.poll.isClosed")); + Date now = serviceContext.getNow(); - if (notClosed) { - Date now = serviceContext.getNow(); + check(errors, "poll", Polls.isStarted(poll, now), l(getLocale(), "pollen.error.vote.poll.notStarted")); + check(errors, "poll", !Polls.isFinished(poll, now), l(getLocale(), "pollen.error.vote.poll.finished")); - check(errors, "poll", Polls.isStarted(poll, now), l(getLocale(), "pollen.error.vote.poll.notStarted")); - check(errors, "poll", !Polls.isFinished(poll, now), l(getLocale(), "pollen.error.vote.poll.finished")); + boolean voteNameNotBlank = checkNotBlank(errors, "voter.name", vote.getVoterName(), l(getLocale(), "pollen.error.vote.voterName.mandatory")); - boolean voteNameNotBlank = checkNotBlank(errors, "voter.name", vote.getVoterName(), l(getLocale(), "pollen.error.vote.voterName.mandatory")); + if (voteNameNotBlank) { + List<Vote> existingVote = getVoteDao().findAll(poll); - if (voteNameNotBlank) { - List<Vote> existingVote = getVoteDao().findAll(poll); + if (CollectionUtils.isNotEmpty(existingVote)) { - if (CollectionUtils.isNotEmpty(existingVote)) { + // get all voter name - // get all voter name + for (Vote oneVote : existingVote) { + if (voteExists && + oneVote.getTopiaId().equals(vote.getEntityId())) { - for (Vote oneVote : existingVote) { - if (voteExists && - oneVote.getTopiaId().equals(vote.getEntityId())) { - - continue; - } - - voterNames.add(oneVote.getVoter().getName()); + continue; } + + voterNames.add(oneVote.getVoter().getName()); } + } - boolean voterNameAdded = voterNames.add(vote.getVoterName()); - check(errors, "voter.name", voterNameAdded, l(getLocale(), "pollen.error.vote.voterName.alreadyExist")); + boolean voterNameAdded = voterNames.add(vote.getVoterName()); + check(errors, "voter.name", voterNameAdded, l(getLocale(), "pollen.error.vote.voterName.alreadyExist")); - } + } - VoteCounting voteCounting = getVoteCountingService().getVoteCounting(poll); + VoteCounting voteCounting = getVoteCountingService().getVoteCounting(poll); - ErrorMap valueErrors = getVoteCountingService().voteIsValid(vote, voteCounting, choices); - valueErrors.copyTo(errors, "vote."); + ErrorMap valueErrors = getVoteCountingService().voteIsValid(vote, voteCounting, choices); + valueErrors.copyTo(errors, "vote."); - if (poll.getMaxChoiceNumber() > 0) { - int nbChoice = 0; - for (VoteToChoiceBean voteToChoice : vote.getChoice()) { - if (voteCounting.isChoiceInVote(voteToChoice.getVoteValue())) { - nbChoice++; - } + if (poll.getMaxChoiceNumber() > 0) { + int nbChoice = 0; + for (VoteToChoiceBean voteToChoice : vote.getChoice()) { + if (voteCounting.isChoiceInVote(voteToChoice.getVoteValue())) { + nbChoice++; } - - check(errors, "vote.limitedVote", nbChoice <= poll.getMaxChoiceNumber(), l(getLocale(), "pollen.error.vote.limitedVote.overflow")); } - //TODO Finish validation + check(errors, "vote.limitedVote", nbChoice <= poll.getMaxChoiceNumber(), l(getLocale(), "pollen.error.vote.limitedVote.overflow")); } + + //TODO Finish validation + return errors; } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SecurityService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SecurityService.java index 8d4a42d5..6ab180fc 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SecurityService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SecurityService.java @@ -52,6 +52,7 @@ import org.chorem.pollen.persistence.entity.PollenPrincipalTopiaDao; import org.chorem.pollen.persistence.entity.PollenToken; import org.chorem.pollen.persistence.entity.PollenTokenTopiaDao; import org.chorem.pollen.persistence.entity.PollenUser; +import org.chorem.pollen.persistence.entity.Polls; import org.chorem.pollen.persistence.entity.ResultVisibility; import org.chorem.pollen.persistence.entity.SessionToken; import org.chorem.pollen.persistence.entity.Vote; @@ -696,11 +697,12 @@ public class SecurityService extends PollenServiceSupport { } } - if (poll.getResultVisibility() == ResultVisibility.EVERYBODY && (poll.isClosed() || poll.isContinuousResults())) { + Date now = getNow(); + if (poll.getResultVisibility() == ResultVisibility.EVERYBODY && (Polls.isFinished(poll, now) || poll.isContinuousResults())) { permissions.add(createSubjectPermission(PermissionVerb.readPollResult, poll)); } - if (poll.isChoiceAddAllowed() && !poll.isClosed()) { + if (poll.isChoiceAddAllowed() && !Polls.isFinished(poll, now)) { permissions.add(createSubjectPermission(PermissionVerb.addChoice, poll)); } @@ -744,7 +746,7 @@ public class SecurityService extends PollenServiceSupport { } } - if (poll.getResultVisibility() == ResultVisibility.VOTER && (poll.isClosed() || poll.isContinuousResults())) { + if (poll.getResultVisibility() == ResultVisibility.VOTER && (Polls.isFinished(poll, getNow()) || poll.isContinuousResults())) { permissions.add(createSubjectPermission(PermissionVerb.readPollResult, poll)); } } diff --git a/pollen-services/src/main/resources/fixtures.yaml b/pollen-services/src/main/resources/fixtures.yaml index f17d2733..0044a81d 100644 --- a/pollen-services/src/main/resources/fixtures.yaml +++ b/pollen-services/src/main/resources/fixtures.yaml @@ -26,7 +26,6 @@ poll_normal: beginDate: 1/1/2014 endDate: 1/2/2014 maxChoiceNumber: 2 - closed: true choiceType: TEXT choiceAddAllowed: false anonymousVoteAllowed: false -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.