Pollen-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
June 2014
- 2 participants
- 106 discussions
This is an automated email from the git hooks/post-receive script.
New commit to branch develop in repository pollen.
See http://git.chorem.org/pollen.git
commit 1a65bb713d5353dd8ada054298a27f5305f9f590
Author: Adrien Garandel <a.garandel(a)dralagen.fr>
Date: Fri Jun 6 12:01:20 2014 +0200
redirect to the comment posted
---
.../src/main/webapp/js/controllers/pollCtrl.js | 30 ++++++++++++++++------
1 file changed, 22 insertions(+), 8 deletions(-)
diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
index ef63980..b6078c1 100644
--- a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
+++ b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
@@ -583,18 +583,20 @@ angular.module('pollControllers', [])
}
var initComments = function () {
- if (angular.isUndefined(paginationParameter.pageNumber) || paginationParameter.pageNumber != $scope.data.commentsPagination.pageNumber) {
- PollComment.get({pollId:$routeParams.pollId, permission:$scope.globalVariables.permission, paginationParameter:paginationParameter}, function (data) {
+ var commentPromise = PollComment.get({pollId:$routeParams.pollId, permission:$scope.globalVariables.permission, paginationParameter:paginationParameter}, function (data) {
$scope.data.comments = data.elements;
$scope.data.commentsPagination = data.pagination;
- });
- }
+ }).$promise;
+
+ return commentPromise;
}; initComments();
$scope.$watch('data.commentsPagination.currentPage', function (newVal, oldVal) {
- if (angular.isDefined(oldVal) && newVal != oldVal) {
- paginationParameter.pageNumber = $scope.data.commentsPagination.currentPage;
- initComments();
+ if (angular.isDefined(oldVal) && newVal != oldVal) { // Value change
+ if (paginationParameter.pageNumber != $scope.data.commentsPagination.currentPage) { // not same page
+ paginationParameter.pageNumber = $scope.data.commentsPagination.currentPage;
+ initComments();
+ }
}
});
@@ -608,7 +610,19 @@ angular.module('pollControllers', [])
$scope.comment.postDate = new Date();
// reload comments
- initComments();
+ if ($scope.data.commentsPagination.desc) {
+ // change pageNumber without reload
+ paginationParameter.pageNumber = 0;
+ // reload
+ initComments();
+ } else {
+ // change pageNumber without reload
+ paginationParameter.pageNumber = $scope.data.commentsPagination.lastPage;
+ // reload and check the last page.
+ initComments().then( function () {
+ $scope.data.commentsPagination.currentPage = $scope.data.commentsPagination.lastPage;
+ });
+ }
//clean form
$scope.comment.text = '';
--
To stop receiving notification emails like this one, please contact
chorem.org SCM administrator <admin+scm(a)chorem.org>.
1
0
This is an automated email from the git hooks/post-receive script.
New commit to branch develop in repository pollen.
See http://git.chorem.org/pollen.git
commit f95aefe14935463f9f0dbbd2903115cd1ba54538
Author: Tony CHEMIT <chemit(a)codelutin.com>
Date: Fri Jun 6 11:50:50 2014 +0200
improve favorite list import
---
.../services/service/FavoriteListImport.java | 9 ++++++-
.../service/FavoriteListImportFromFile.java | 29 ++++++++-------------
.../service/FavoriteListImportFromLdap.java | 30 ++++++++--------------
.../services/service/FavoriteListService.java | 10 ++++++--
4 files changed, 37 insertions(+), 41 deletions(-)
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImport.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImport.java
index 6a59535..84f31c8 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImport.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImport.java
@@ -21,6 +21,11 @@ package org.chorem.pollen.services.service;
* #L%
*/
+import org.chorem.pollen.persistence.entity.FavoriteList;
+import org.chorem.pollen.persistence.entity.FavoriteListMember;
+
+import java.util.List;
+
/**
* Created on 6/5/14.
*
@@ -29,5 +34,7 @@ package org.chorem.pollen.services.service;
*/
public interface FavoriteListImport {
- void doImport(String favoriteListId) throws FavoriteListImportException;
+ void doImport(FavoriteList favoriteList,
+ List<FavoriteListMember> existingFavoriteListMembers) throws FavoriteListImportException;
+
}
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java
index 28acbeb..76c85ee 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java
@@ -31,7 +31,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.pollen.persistence.entity.FavoriteList;
import org.chorem.pollen.persistence.entity.FavoriteListMember;
-import org.chorem.pollen.persistence.entity.PollenUser;
import org.chorem.pollen.services.PollenTechnicalException;
import org.nuiton.util.StringUtil;
@@ -62,32 +61,27 @@ public class FavoriteListImportFromFile extends PollenServiceSupport implements
}
@Override
- public void doImport(String favoriteListId) throws FavoriteListImportException {
+ public void doImport(FavoriteList favoriteList, List<FavoriteListMember> existingFavoriteListMembers) throws FavoriteListImportException {
checkIsConnected();
- checkNotNull(favoriteListId);
+ checkNotNull(favoriteList);
+ checkNotNull(existingFavoriteListMembers);
checkNotNull(file);
checkState(file.exists());
- PollenUser connectedUser = getConnectedUser();
-
- FavoriteList favoriteList = getFavoriteListService().getFavoriteList0(connectedUser, favoriteListId);
-
- Locale locale = serviceContext.getLocale();
Set<String> usedName = Sets.newHashSet();
Set<String> usedEmail = Sets.newHashSet();
- List<FavoriteListMember> favoriteListMembers = getFavoriteListService().getFavoriteListMembers0(favoriteList);
-
- if (CollectionUtils.isNotEmpty(favoriteListMembers)) {
- for (FavoriteListMember member : favoriteListMembers) {
+ if (CollectionUtils.isNotEmpty(existingFavoriteListMembers)) {
+ for (FavoriteListMember member : existingFavoriteListMembers) {
usedName.add(member.getName());
usedEmail.add(member.getEmail());
}
}
- int result = 0;
+ Locale locale = serviceContext.getLocale();
+
BufferedReader reader = null;
try {
@@ -106,7 +100,6 @@ public class FavoriteListImportFromFile extends PollenServiceSupport implements
}
lineNumber++;
- result++;
int spaceIndex = line.indexOf(' ');
String email;
@@ -155,6 +148,10 @@ public class FavoriteListImportFromFile extends PollenServiceSupport implements
member.setEmail(email);
member.setFavoriteList(favoriteList);
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("imported member %s / %s", memberName, email));
+ }
+
}
reader.close();
@@ -170,10 +167,6 @@ public class FavoriteListImportFromFile extends PollenServiceSupport implements
}
- if (log.isInfoEnabled()) {
- log.info("Imported members: " + result);
- }
-
commit();
}
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java
index 979a002..6e4e212 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java
@@ -27,7 +27,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.pollen.persistence.entity.FavoriteList;
import org.chorem.pollen.persistence.entity.FavoriteListMember;
-import org.chorem.pollen.persistence.entity.PollenUser;
import org.nuiton.util.StringUtil;
import javax.naming.NamingEnumeration;
@@ -62,32 +61,25 @@ public class FavoriteListImportFromLdap extends PollenServiceSupport implements
}
@Override
- public void doImport(String favoriteListId) throws FavoriteListImportException {
+ public void doImport(FavoriteList favoriteList, List<FavoriteListMember> existingFavoriteListMembers) throws FavoriteListImportException {
checkIsConnected();
- checkNotNull(favoriteListId);
+ checkNotNull(favoriteList);
+ checkNotNull(existingFavoriteListMembers);
checkNotNull(ldap);
- PollenUser connectedUser = getConnectedUser();
-
- FavoriteList favoriteList = getFavoriteListService().getFavoriteList0(connectedUser, favoriteListId);
-
Locale locale = serviceContext.getLocale();
Set<String> usedName = Sets.newHashSet();
Set<String> usedEmail = Sets.newHashSet();
- List<FavoriteListMember> favoriteListMembers = getFavoriteListService().getFavoriteListMembers0(favoriteList);
-
- if (CollectionUtils.isNotEmpty(favoriteListMembers)) {
- for (FavoriteListMember member : favoriteListMembers) {
+ if (CollectionUtils.isNotEmpty(existingFavoriteListMembers)) {
+ for (FavoriteListMember member : existingFavoriteListMembers) {
usedName.add(member.getName());
usedEmail.add(member.getEmail());
}
}
- int result = 0;
-
try {
// Initialisation du contexte
@@ -111,8 +103,6 @@ public class FavoriteListImportFromLdap extends PollenServiceSupport implements
if (attrName != null) {
- result++;
-
String memberName = attrName.get().toString().trim();
if (!usedName.add(memberName)) {
@@ -123,7 +113,7 @@ public class FavoriteListImportFromLdap extends PollenServiceSupport implements
}
- String email = attrEmail.get().toString().toLowerCase().trim();
+ String email = getCleanMail(attrEmail.get().toString());
if (!usedEmail.add(email)) {
@@ -146,6 +136,10 @@ public class FavoriteListImportFromLdap extends PollenServiceSupport implements
member.setEmail(email);
member.setFavoriteList(favoriteList);
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("imported member %s / %s", memberName, email));
+ }
+
}
}
@@ -155,10 +149,6 @@ public class FavoriteListImportFromLdap extends PollenServiceSupport implements
}
- if (log.isInfoEnabled()) {
- log.info("Imported members: " + result);
- }
-
commit();
}
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java
index 046ef0e..82bc433 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java
@@ -254,9 +254,12 @@ public class FavoriteListService extends PollenServiceSupport {
checkNotNull(favoriteListId);
checkNotNull(file);
+ FavoriteList favoriteList = getFavoriteList0(getConnectedUser(), favoriteListId);
+ List<FavoriteListMember> favoriteListMembers = getFavoriteListMembers0(favoriteList);
+
FavoriteListImportFromFile importer = newService(FavoriteListImportFromFile.class);
importer.setFile(file);
- importer.doImport(favoriteListId);
+ importer.doImport(favoriteList, favoriteListMembers);
}
@@ -267,9 +270,12 @@ public class FavoriteListService extends PollenServiceSupport {
checkNotNull(favoriteListId);
checkNotNull(ldap);
+ FavoriteList favoriteList = getFavoriteList0(getConnectedUser(), favoriteListId);
+ List<FavoriteListMember> favoriteListMembers = getFavoriteListMembers0(favoriteList);
+
FavoriteListImportFromLdap importer = newService(FavoriteListImportFromLdap.class);
importer.setLdap(ldap);
- importer.doImport(favoriteListId);
+ importer.doImport(favoriteList, favoriteListMembers);
}
--
To stop receiving notification emails like this one, please contact
chorem.org SCM administrator <admin+scm(a)chorem.org>.
1
0
This is an automated email from the git hooks/post-receive script.
New commit to branch develop in repository pollen.
See http://git.chorem.org/pollen.git
commit e276362ffb509d9bcda9cc4350042730deb0e18c
Author: Adrien Garandel <a.garandel(a)dralagen.fr>
Date: Fri Jun 6 11:23:40 2014 +0200
fix name parameter
---
pollen-rest-api/src/main/resources/mapping | 52 +++++++++++++++---------------
1 file changed, 26 insertions(+), 26 deletions(-)
diff --git a/pollen-rest-api/src/main/resources/mapping b/pollen-rest-api/src/main/resources/mapping
index 06799d9..e3fb135 100644
--- a/pollen-rest-api/src/main/resources/mapping
+++ b/pollen-rest-api/src/main/resources/mapping
@@ -77,18 +77,18 @@ DELETE /v1/polls/{pollId}/comments/{commentId} CommentApi.deleteComment
# FavoriteListApi
-GET /v1/favoriteLists FavoriteListApi.getFavoriteLists
-GET /v1/favoriteLists/{flId} FavoriteListApi.getFavoriteList
-POST /v1/favoriteLists/{flId}/importCsv FavoriteListApi.importFavoriteListMembersFromCsv
-POST /v1/favoriteLists/{flId}/importLdap FavoriteListApi.importFavoriteListMembersFromLdap
-POST /v1/favoriteLists FavoriteListApi.createFavoriteList
-PUT /v1/favoriteLists/{flId} FavoriteListApi.editFavoriteList
-DELETE /v1/favoriteLists/{flId} FavoriteListApi.deleteFavoriteList
-GET /v1/favoriteLists/{flId}/members FavoriteListApi.getMembers
-GET /v1/favoriteLists/{flId}/members/{mId} FavoriteListApi.getMember
-POST /v1/favoriteLists/{flId}/members FavoriteListApi.addMember
-PUT /v1/favoriteLists/{flId}/members/{mId} FavoriteListApi.editMember
-DELETE /v1/favoriteLists/{flId}/members/{mId} FavoriteListApi.removeMember
+GET /v1/favoriteLists FavoriteListApi.getFavoriteLists
+GET /v1/favoriteLists/{favoriteListId} FavoriteListApi.getFavoriteList
+POST /v1/favoriteLists/{favoriteListId}/importCsv FavoriteListApi.importFavoriteListMembersFromCsv
+POST /v1/favoriteLists/{favoriteListId}/importLdap FavoriteListApi.importFavoriteListMembersFromLdap
+POST /v1/favoriteLists FavoriteListApi.createFavoriteList
+PUT /v1/favoriteLists/{favoriteListId} FavoriteListApi.editFavoriteList
+DELETE /v1/favoriteLists/{favoriteListId} FavoriteListApi.deleteFavoriteList
+GET /v1/favoriteLists/{favoriteListId}/members FavoriteListApi.getMembers
+GET /v1/favoriteLists/{favoriteListId}/members/{memberId} FavoriteListApi.getMember
+POST /v1/favoriteLists/{favoriteListId}/members FavoriteListApi.addMember
+PUT /v1/favoriteLists/{favoriteListId}/members/{memberId} FavoriteListApi.editMember
+DELETE /v1/favoriteLists/{favoriteListId}/members/{memberId} FavoriteListApi.removeMember
# PollApi
@@ -102,13 +102,13 @@ GET /v1/polls/create PollApi.createPoll
GET /v1/polls/edit PollApi.editPoll
#fix me
-POST,PUT /v1/polls/{pollId} PollApi.editPoll
+POST,PUT /v1/polls/{pollId} PollApi.editPoll
POST /v1/polls/{pollId}/edit PollApi.editPoll
GET /v1/polls/{pollId} PollApi.getPoll
DELETE /v1/polls/{pollId} PollApi.deletePoll
-# POST /v1/polls/{pollId} PollApi.clonePoll
+# POST /v1/polls/{pollId} PollApi.clonePoll
GET /v1/polls/{pollId}/export PollApi.exportPoll
PUT /v1/polls/{pollId}/close PollApi.closePoll
@@ -129,18 +129,18 @@ GET /v1/polls/{pollId}/groupResults VoteCountingApi.getGroupResult
# VoterListApi
-PUT /v1/polls/{pollId}/favoriteLists/{flId} VoterListApi.importFavoriteList
-GET /v1/polls/{pollId}/voterLists VoterListApi.getVoterLists
-GET /v1/polls/{pollId}/voterLists/{vlId} VoterListApi.getVoterList
-POST /v1/polls/{pollId}/voterLists VoterListApi.createVoterList
-PUT /v1/polls/{pollId}/voterLists/{vlId} VoterListApi.editVoterList
-DELETE /v1/polls/{pollId}/voterLists/{vlId} VoterListApi.deleteVoterList
-
-GET /v1/polls/{pollId}/voterLists/{vlId}/members VoterListApi.getMembers
-GET /v1/polls/{pollId}/voterLists/{vlId}/members/{mId} VoterListApi.getMember
-POST /v1/polls/{pollId}/voterLists/{vlId}/members VoterListApi.addMember
-PUT /v1/polls/{pollId}/voterLists/{vlId}/members/{mId} VoterListApi.editMember
-DELETE /v1/polls/{pollId}/voterLists/{vlId}/members/{mId} VoterListApi.deleteMember
+PUT /v1/polls/{pollId}/favoriteLists/{favoriteListId} VoterListApi.importFavoriteList
+GET /v1/polls/{pollId}/voterLists VoterListApi.getVoterLists
+GET /v1/polls/{pollId}/voterLists/{voterListId} VoterListApi.getVoterList
+POST /v1/polls/{pollId}/voterLists VoterListApi.createVoterList
+PUT /v1/polls/{pollId}/voterLists/{voterListId} VoterListApi.editVoterList
+DELETE /v1/polls/{pollId}/voterLists/{voterListId} VoterListApi.deleteVoterList
+
+GET /v1/polls/{pollId}/voterLists/{voterListId}/members VoterListApi.getMembers
+GET /v1/polls/{pollId}/voterLists/{voterListId}/members/{memberId} VoterListApi.getMember
+POST /v1/polls/{pollId}/voterLists/{voterListId}/members VoterListApi.addMember
+PUT /v1/polls/{pollId}/voterLists/{voterListId}/members/{memberId} VoterListApi.editMember
+DELETE /v1/polls/{pollId}/voterLists/{voterListId}/members/{memberId} VoterListApi.deleteMember
# VoteApi
--
To stop receiving notification emails like this one, please contact
chorem.org SCM administrator <admin+scm(a)chorem.org>.
1
0
02/03: No reload controller if change page go to the same controller. Send voterList when create poll in pollType != 'FREE' Change URL tab for config and voterList
by chorem.org scm 06 Jun '14
by chorem.org scm 06 Jun '14
06 Jun '14
This is an automated email from the git hooks/post-receive script.
New commit to branch develop in repository pollen.
See http://git.chorem.org/pollen.git
commit 0fd39bd676c54444888f6774f32a4ec4d6bff20c
Author: Adrien Garandel <a.garandel(a)dralagen.fr>
Date: Fri Jun 6 10:09:50 2014 +0200
No reload controller if change page go to the same controller.
Send voterList when create poll in pollType != 'FREE'
Change URL tab for config and voterList
---
pollen-ui-angular/src/main/webapp/i18n/en.js | 5 ++
pollen-ui-angular/src/main/webapp/i18n/fr.js | 5 ++
.../src/main/webapp/js/controllers/pollCtrl.js | 82 ++++++++++++++++------
.../main/webapp/partials/poll-listParticipant.html | 23 +++---
.../src/main/webapp/partials/poll.html | 8 +--
5 files changed, 86 insertions(+), 37 deletions(-)
diff --git a/pollen-ui-angular/src/main/webapp/i18n/en.js b/pollen-ui-angular/src/main/webapp/i18n/en.js
index 408dfa4..39d30a4 100644
--- a/pollen-ui-angular/src/main/webapp/i18n/en.js
+++ b/pollen-ui-angular/src/main/webapp/i18n/en.js
@@ -48,6 +48,10 @@ var translateEN = {
'poll.restricted.name' : 'Name',
'poll.restricted.mail' : 'E-mail',
'poll.restricted.weight' : 'Weight',
+'poll.restricted.free' : 'Free',
+'poll.restricted.restricted' : 'Restricted',
+'poll.restricted.group' : 'Group',
+'poll.restricted.pollType' : 'Who can vote ?',
'vote.added' : 'Vote added.',
@@ -61,6 +65,7 @@ var translateEN = {
'action.recovered' : 'Recovered',
'action.send' : 'Send',
'action.return' : 'Return',
+'action.cancel' : 'Cancel',
'action.save' : 'Save',
'action.delete' : 'Delete',
'action.vote' : 'Vote',
diff --git a/pollen-ui-angular/src/main/webapp/i18n/fr.js b/pollen-ui-angular/src/main/webapp/i18n/fr.js
index bf09c53..7dc335c 100644
--- a/pollen-ui-angular/src/main/webapp/i18n/fr.js
+++ b/pollen-ui-angular/src/main/webapp/i18n/fr.js
@@ -48,6 +48,10 @@ var translateFR = {
'poll.restricted.name' : 'Nom du votant',
'poll.restricted.mail' : 'Courriel du votant',
'poll.restricted.weight' : 'Poids du votant',
+'poll.restricted.free' : 'Libre',
+'poll.restricted.restricted' : 'Restreint',
+'poll.restricted.group' : 'Groupe',
+'poll.restricted.pollType' : 'Qui peut voter ?',
'vote.added' : 'Vote effectué',
@@ -60,6 +64,7 @@ var translateFR = {
'action.recovered' : 'Récupéré',
'action.send' : 'Envoyé',
'action.return' : 'Retour',
+'action.cancel' : 'Annuler',
'action.save' : 'Sauvegarder',
'action.delete' : 'Supprimer',
'action.vote' : 'Voter',
diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
index 9edfc3f..ef63980 100644
--- a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
+++ b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
@@ -104,8 +104,14 @@ angular.module('pollControllers', [])
$scope.globalVariables.linkResult += '#/poll/result/'+$routeParams.pollId;
if (angular.isDefined($scope.globalVariables.permission)) {
- $scope.globalVariables.linkEdit += '?token='+$scope.globalVariables.permission;
- $scope.globalVariables.linkResult += '?token='+$scope.globalVariables.permission;
+ $scope.globalVariables.linkEdit += 'token='+$scope.globalVariables.permission;
+ $scope.globalVariables.linkResult += 'token='+$scope.globalVariables.permission;
+ $scope.globalVariables.linkConf = '#/poll/edit/'+$routeParams.pollId+'&tab=conf';
+ $scope.globalVariables.linkParticipant = '#/poll/edit/'+$routeParams.pollId+'&tab=participant';
+ }
+ else {
+ $scope.globalVariables.linkConf = '#/poll/edit/'+$routeParams.pollId+'?tab=conf';
+ $scope.globalVariables.linkParticipant = '#/poll/edit/'+$routeParams.pollId+'?tab=participant';
}
}
@@ -141,7 +147,7 @@ angular.module('pollControllers', [])
}])
-.controller('PollAdminCtrl', ['$scope', '$controller', '$modal', '$timeout', '$routeParams', function ($scope, $controller, $modal, $timeout, $routeParams) {
+.controller('PollAdminCtrl', ['$scope', '$controller', '$modal', '$timeout', '$routeParams', '$route', function ($scope, $controller, $modal, $timeout, $routeParams, $route) {
$controller('PollCtrl', {$scope:$scope});
$scope.tab = $scope.setTab('edit');
@@ -152,9 +158,18 @@ angular.module('pollControllers', [])
$scope.globalVariables.lastDate = new Date();
$scope.restError = {};
+
+ var lastRoute = $route.current;
+ $scope.$on('$locationChangeSuccess', function(event) {
+ if (lastRoute.$$route.controller == $route.current.$$route.controller) {
+ $route.current = lastRoute;
+ }
+ });
+
////////////////////////////////
//// VOTER LIST /////
////////////////////////////////
+
var newMember = function () {
return {name:'', email:'', weight:1.0};
}
@@ -168,9 +183,7 @@ angular.module('pollControllers', [])
}
$scope.data.voterList = [];
- for (var i = 0; i < 3; i++) {
- $scope.data.voterList.push(newGroup());
- }
+ $scope.data.voterList.push(newGroup());
$scope.$watch('data.poll.pollType', function (newVal, oldVal) {
if (newVal != oldVal && newVal == 'RESTRICTED') {
@@ -192,6 +205,9 @@ angular.module('pollControllers', [])
$scope.data.voterList[0].members = listMember;
}
}
+ else if (newVal != oldVal && newVal == 'GROUP') {
+ $scope.addGroup();
+ }
});
$scope.addVoter = function (index) {
@@ -295,7 +311,8 @@ angular.module('pollControllers', [])
}
}])
-.controller('PollCreateCtrl', ['$scope', '$controller', '$location', 'Poll', 'SessionStorage', function ($scope, $controller, $location, Poll, SessionStorage) {
+.controller('PollCreateCtrl', ['$scope', '$controller', '$location', 'Poll', 'SessionStorage', 'PollVoterList',
+ function ( $scope, $controller, $location, Poll, SessionStorage, PollVoterList) {
$controller('PollAdminCtrl', {$scope:$scope});
$scope.globalVariables.create = true;
@@ -316,7 +333,14 @@ angular.module('pollControllers', [])
poll.choice = angular.copy($scope.data.choices);
Poll.add(poll, function (data) {
SessionStorage.save({saved: true});
- $location.url('/poll/edit/'+data.id+'?token='+data.permission);
+ if ($scope.data.poll.pollType != 'FREE') {
+ PollVoterList.add({pollId:data.id, permission:data.permission}, $scope.data.voterList[0], function (dataVoterList) {
+ $location.url('/poll/edit/'+data.id+'?token='+data.permission);
+ })
+ }
+ else {
+ $location.url('/poll/edit/'+data.id+'?token='+data.permission);
+ }
}, function (error) {
$scope.globalVariables.restError = true;
$scope.restError = error.data;
@@ -340,10 +364,14 @@ angular.module('pollControllers', [])
$scope.globalVariables.edit = true;
+ ////////////////////////////////
+ //// CHOICE /////
+ ////////////////////////////////
+
$scope.callBackAddChoice = function (choice) {
PollChoice.add({pollId:$routeParams.pollId, permission:$scope.globalVariables.permission}, choice, function (data) {
delete choice.restError;
- choice.topiaId = data.topiaId;
+ choice.id = data.id;
$scope.globalVariables.saved = true;
}, function (error) {
choice.restError = error.data;
@@ -369,8 +397,23 @@ angular.module('pollControllers', [])
}, function (error) {
angular.extend($scope.restError, error.data);
});
+ };
+
+ $scope.saveChoice = function (choice) {
+ if (angular.isDefined(choice)) {
+ if (angular.isDefined(choice.id) && choice.id != null) {
+ $scope.callBackEditChoice(choice);
+ }
+ else {
+ $scope.callBackAddChoice(choice);
+ }
+ }
}
+ ////////////////////////////////
+ //// VOTER LIST /////
+ ////////////////////////////////
+
var initVoterList = function () {
PollVoterList.query({pollId:$routeParams.pollId, permission:$scope.globalVariables.permission}, function (voterList) {
if (voterList.length > 0) {
@@ -384,6 +427,14 @@ angular.module('pollControllers', [])
})
};
+ $scope.saveVoterList = function (member) {
+ console.log(member);
+ }
+
+ ////////////////////////////////
+ //// INIT POLL /////
+ ////////////////////////////////
+
var initPoll = function () {
Poll.get({pollId:$routeParams.pollId, permission:$scope.globalVariables.permission}, function (poll) {
if (angular.isUndefined(poll.permission)) {
@@ -411,7 +462,6 @@ angular.module('pollControllers', [])
})
})
});
-
initVoterList();
}
initPoll();
@@ -424,17 +474,6 @@ angular.module('pollControllers', [])
});
}
- $scope.saveChoice = function (choice) {
- if (angular.isDefined(choice)) {
- if (angular.isDefined(choice.topiaId) && choice.topiaId != null) {
- $scope.callBackEditChoice(choice);
- }
- else {
- $scope.callBackAddChoice(choice);
- }
- }
- }
-
$scope.deletePoll = function () {
$scope.data.poll.$remove({permission:$scope.globalVariables.permission}, function() {
$location.path('/');
@@ -545,7 +584,6 @@ angular.module('pollControllers', [])
var initComments = function () {
if (angular.isUndefined(paginationParameter.pageNumber) || paginationParameter.pageNumber != $scope.data.commentsPagination.pageNumber) {
- console.log(paginationParameter);
PollComment.get({pollId:$routeParams.pollId, permission:$scope.globalVariables.permission, paginationParameter:paginationParameter}, function (data) {
$scope.data.comments = data.elements;
$scope.data.commentsPagination = data.pagination;
diff --git a/pollen-ui-angular/src/main/webapp/partials/poll-listParticipant.html b/pollen-ui-angular/src/main/webapp/partials/poll-listParticipant.html
index 3dae6e4..81185c7 100644
--- a/pollen-ui-angular/src/main/webapp/partials/poll-listParticipant.html
+++ b/pollen-ui-angular/src/main/webapp/partials/poll-listParticipant.html
@@ -1,17 +1,18 @@
-<h2 xmlns="http://www.w3.org/1999/html">Participant</h2>
+{{ data.voterList }}
+
+<h2>{{ 'poll.restricted.pollType' | translate }}</h2>
<form>
- type :
<label for="formFree">
- <input type="radio" ng-model="data.poll.pollType" name="type" value="FREE" id="formFree"/>
- Free
+ <input type="radio" ng-model="data.poll.pollType" name="type" value="FREE" id="formFree" auto-save="savePoll()"/>
+ {{ 'poll.restricted.free' | translate }}
</label>
<label for="formRestricted">
- <input type="radio" ng-model="data.poll.pollType" name="type" value="RESTRICTED" id="formRestricted" />
- Restricted
+ <input type="radio" ng-model="data.poll.pollType" name="type" value="RESTRICTED" id="formRestricted" auto-save="savePoll()"/>
+ {{ 'poll.restricted.restricted' | translate }}
</label>
<label for="formGroup">
- <input type="radio" ng-model="data.poll.pollType" name="type" value="GROUP" id="formGroup" />
- Group
+ <input type="radio" ng-model="data.poll.pollType" name="type" value="GROUP" id="formGroup" auto-save="savePoll()"/>
+ {{ 'poll.restricted.group' | translate }}
</label>
<hr/>
@@ -29,9 +30,9 @@
</tr>
<tr ng-repeat="member in voterList.members">
- <td> <div ng-class="{'has-error':member.name == ''}"><input type="text" ng-model="member.name" class="form-control" /></div></td>
- <td> <div ng-class="{'has-error':member.email == ''}"><input type="text" ng-model="member.email" class="form-control" /></div></td>
- <td> <input type="number" ng-model="member.weight" select-on-click class="form-control"/></td>
+ <td> <div ng-class="{'has-error':member.name == ''}"><input type="text" ng-model="member.name" class="form-control" auto-save="saveVoterList(member)"/></div></td>
+ <td> <div ng-class="{'has-error':member.email == ''}"><input type="text" ng-model="member.email" class="form-control" auto-save="saveVoterList(member)" /></div></td>
+ <td> <input type="number" ng-model="member.weight" select-on-click class="form-control" auto-save="saveVoterList(member)"/></td>
</tr>
<tr>
diff --git a/pollen-ui-angular/src/main/webapp/partials/poll.html b/pollen-ui-angular/src/main/webapp/partials/poll.html
index 6efa89a..047c09b 100644
--- a/pollen-ui-angular/src/main/webapp/partials/poll.html
+++ b/pollen-ui-angular/src/main/webapp/partials/poll.html
@@ -29,10 +29,10 @@
<li ng-class="{active: tab == 'vote'}" ng-show="data.poll.id"><a href="{{globalVariables.linkVote}}">{{ 'poll.tab.vote' | translate }}</a></li>
<li ng-class="{active: tab == 'comment'}" ng-show="data.poll.id"><a href="{{globalVariables.linkComment}}">{{ 'poll.tab.comment' | translate }}</a></li>
<li ng-class="{active: tab == 'result'}" ng-show="!globalVariables.create"><a href="{{globalVariables.linkResult}}">{{ 'poll.tab.result' | translate }}</a></li>
- <li ng-class="{active: tab == 'edit'}" ng-show="globalVariables.create"><a href="#/poll/create">{{ 'poll.tab.create' | translate }}</a></li>
- <li ng-class="{active: tab == 'edit'}" ng-show="data.poll.permission"><a href="{{globalVariables.linkEdit}}">{{ 'poll.tab.edit' | translate }}</a></li>
- <li ng-class="{active: tab == 'conf'}" ng-show="data.poll.permission || globalVariables.create"><a href="{{urlTab}}tab=conf">{{ 'poll.tab.conf' | translate }}</a></li>
- <li ng-class="{active: tab == 'participant'}" ng-show="data.poll.permission || globalVariables.create"><a href="{{urlTab}}tab=participant">{{ 'poll.tab.participant' | translate }}</a></li>
+ <li ng-class="{active: tab == 'edit'}" ng-show="globalVariables.create"><a href="#/poll/create" ng-click="tab = 'edit'">{{ 'poll.tab.create' | translate }}</a></li>
+ <li ng-class="{active: tab == 'edit'}" ng-show="data.poll.permission"><a href="{{globalVariables.linkEdit}}" ng-click="tab = 'edit'">{{ 'poll.tab.edit' | translate }}</a></li>
+ <li ng-class="{active: tab == 'conf'}" ng-show="data.poll.permission || globalVariables.create"><a href="{{globalVariables.linkConf || '#/poll/create?tab=conf'}}" ng-click="tab = 'conf'">{{ 'poll.tab.conf' | translate }}</a></li>
+ <li ng-class="{active: tab == 'participant'}" ng-show="data.poll.permission || globalVariables.create"><a href="{{globalVariables.linkParticipant || '#/poll/create?tab=participant'}}" ng-click="tab = 'participant'">{{ 'poll.tab.participant' | translate }}</a></li>
</ul>
<div ng-include="'partials/poll-link.html'" ng-if="tab == 'home'"></div>
--
To stop receiving notification emails like this one, please contact
chorem.org SCM administrator <admin+scm(a)chorem.org>.
1
0
This is an automated email from the git hooks/post-receive script.
New commit to branch develop in repository pollen.
See http://git.chorem.org/pollen.git
commit 540fb06316f948de73871234ba44403dd0440bf3
Author: Adrien Garandel <a.garandel(a)dralagen.fr>
Date: Thu Jun 5 15:36:58 2014 +0200
create visual of the form of the list of voter
---
pollen-ui-angular/src/main/webapp/css/style.css | 16 ++-
pollen-ui-angular/src/main/webapp/i18n/en.js | 4 +
pollen-ui-angular/src/main/webapp/i18n/fr.js | 4 +
pollen-ui-angular/src/main/webapp/index.html | 2 +-
.../src/main/webapp/js/controllers/pollCtrl.js | 110 +++++++++++++++------
pollen-ui-angular/src/main/webapp/js/services.js | 30 +++++-
.../main/webapp/partials/poll-listParticipant.html | 44 +++++++++
.../src/main/webapp/partials/poll.html | 3 +
8 files changed, 182 insertions(+), 31 deletions(-)
diff --git a/pollen-ui-angular/src/main/webapp/css/style.css b/pollen-ui-angular/src/main/webapp/css/style.css
index dcdd462..ce7e00d 100644
--- a/pollen-ui-angular/src/main/webapp/css/style.css
+++ b/pollen-ui-angular/src/main/webapp/css/style.css
@@ -216,7 +216,7 @@ i.icon-collapse {
border-collapse:collapse;
}
-#comments tr td{
+#comments tr td {
border-bottom:1px solid #DDD;
padding-top:5px;
padding-bottom:15px;
@@ -234,3 +234,17 @@ i.icon-collapse {
margin-bottom:15px;
vertical-align:center;
}
+
+.voterList {
+ width:100%;
+ margin-bottom:15px;
+ border:3px solid #DDD;
+}
+
+.voterList tr th, .voterList tr td {
+ padding-top:8px;
+ padding-bottom:8px;
+ padding-left:5px;
+ padding-right:5px;
+ border:1px solid #DDD;
+}
\ No newline at end of file
diff --git a/pollen-ui-angular/src/main/webapp/i18n/en.js b/pollen-ui-angular/src/main/webapp/i18n/en.js
index af7e51c..408dfa4 100644
--- a/pollen-ui-angular/src/main/webapp/i18n/en.js
+++ b/pollen-ui-angular/src/main/webapp/i18n/en.js
@@ -37,6 +37,7 @@ var translateEN = {
'poll.tab.create' : 'Create',
'poll.tab.edit' : 'Edit',
'poll.tab.conf' : 'Configuration',
+'poll.tab.participant' : 'Participants',
'poll.link.edit' : 'Edit Url:',
'poll.link.vote' : 'Vote Url:',
@@ -44,6 +45,9 @@ var translateEN = {
'poll.edit' : 'Click to edit',
'poll.desc' : 'Description is optional. This message will not visible in vote page.',
'poll.saved' : 'Poll saved.',
+'poll.restricted.name' : 'Name',
+'poll.restricted.mail' : 'E-mail',
+'poll.restricted.weight' : 'Weight',
'vote.added' : 'Vote added.',
diff --git a/pollen-ui-angular/src/main/webapp/i18n/fr.js b/pollen-ui-angular/src/main/webapp/i18n/fr.js
index 481260d..bf09c53 100644
--- a/pollen-ui-angular/src/main/webapp/i18n/fr.js
+++ b/pollen-ui-angular/src/main/webapp/i18n/fr.js
@@ -37,6 +37,7 @@ var translateFR = {
'poll.tab.create' : 'Créer',
'poll.tab.edit' : 'Éditer',
'poll.tab.conf' : 'Configuration',
+'poll.tab.participant' : 'Participants',
'poll.link.edit' : 'Lien d\'édition :',
'poll.link.vote' : 'Lien de partage pour le vote :',
@@ -44,6 +45,9 @@ var translateFR = {
'poll.edit' : 'Clique pour éditer',
'poll.desc' : 'Description (Facultatif). Ce cadre disparait si aucune description n\'est mise',
'poll.saved' : 'Sondage sauvegardé',
+'poll.restricted.name' : 'Nom du votant',
+'poll.restricted.mail' : 'Courriel du votant',
+'poll.restricted.weight' : 'Poids du votant',
'vote.added' : 'Vote effectué',
diff --git a/pollen-ui-angular/src/main/webapp/index.html b/pollen-ui-angular/src/main/webapp/index.html
index 0b6eb28..0d0106a 100644
--- a/pollen-ui-angular/src/main/webapp/index.html
+++ b/pollen-ui-angular/src/main/webapp/index.html
@@ -22,7 +22,7 @@
<html lang="en" ng-app="pollen">
<head>
<title>Pollen</title>
- <meta chaset="utf-8" />
+ <meta charset="utf-8" />
<link href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"/>
<link rel="stylesheet" href="css/style.css"/>
diff --git a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
index 5998a76..9edfc3f 100644
--- a/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
+++ b/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
@@ -146,6 +146,66 @@ angular.module('pollControllers', [])
$scope.tab = $scope.setTab('edit');
+ $scope.globalVariables.editMode = true;
+ $scope.globalVariables.voted = angular.isDefined($scope.data.votants);
+ $scope.globalVariables.lastType = 'TEXT';
+ $scope.globalVariables.lastDate = new Date();
+ $scope.restError = {};
+
+ ////////////////////////////////
+ //// VOTER LIST /////
+ ////////////////////////////////
+ var newMember = function () {
+ return {name:'', email:'', weight:1.0};
+ }
+
+ var newGroup = function () {
+ var members = [];
+ for (var j = 0; j < 3; j++) {
+ members.push(newMember());
+ }
+ return {group:{name:'', weight:1.0}, members:members}
+ }
+
+ $scope.data.voterList = [];
+ for (var i = 0; i < 3; i++) {
+ $scope.data.voterList.push(newGroup());
+ }
+
+ $scope.$watch('data.poll.pollType', function (newVal, oldVal) {
+ if (newVal != oldVal && newVal == 'RESTRICTED') {
+ var listMember = [];
+ for (var i = 0; i < $scope.data.voterList.length; i++) {
+ for (var j = 0; j < $scope.data.voterList[i].members.length; j++) {
+ // check if not a empty line
+ if ($scope.data.voterList[i].members[j].email != '' || $scope.data.voterList[i].members[j].name != '') {
+ listMember.push($scope.data.voterList[i].members[j]);
+ }
+ }
+ }
+
+ // get the first group
+ $scope.data.voterList = $scope.data.voterList.splice(0,1);
+
+ // check if one voter is enter in one group
+ if (listMember.length > 0) {
+ $scope.data.voterList[0].members = listMember;
+ }
+ }
+ });
+
+ $scope.addVoter = function (index) {
+ $scope.data.voterList[index].members.push(newMember());
+ }
+
+ $scope.addGroup = function () {
+ $scope.data.voterList.push(newGroup());
+ }
+
+ ////////////////////////////////
+ //// CHOICE /////
+ ////////////////////////////////
+
var initChoice = function () {
return {
name: '',
@@ -154,12 +214,6 @@ angular.module('pollControllers', [])
};
}
- $scope.globalVariables.editMode = true;
- $scope.globalVariables.voted = angular.isDefined($scope.data.votants);
- $scope.globalVariables.lastType = 'TEXT';
- $scope.globalVariables.lastDate = new Date();
- $scope.restError = {};
-
$scope.addChoice = function () {
var index = $scope.data.choices.push(initChoice());
var choice = $scope.data.choices[index-1];
@@ -247,7 +301,7 @@ angular.module('pollControllers', [])
$scope.globalVariables.create = true;
var initPoll = function () {
- Poll.get({cmd:'new'}, function (poll) {
+ Poll.skeletonNew(function (poll) {
$scope.data.poll = poll;
$scope.data.choices = [];
$scope.data.vote = {};
@@ -280,7 +334,8 @@ angular.module('pollControllers', [])
}])
-.controller('PollEditCtrl', ['$scope', '$q', '$controller', '$routeParams', '$location', '$timeout', 'Poll', 'PollChoice', 'PollVote', function ($scope, $q, $controller, $routeParams, $location, $timeout, Poll, PollChoice, PollVote) {
+.controller('PollEditCtrl', ['$scope', '$controller', '$routeParams', '$location', '$timeout', 'Poll', 'PollChoice', 'PollVote', 'PollVoterList', 'PollVoterListMember',
+ function ( $scope, $controller, $routeParams, $location, $timeout, Poll, PollChoice, PollVote, PollVoterList, PollVoterListMember) {
$controller('PollAdminCtrl', {$scope:$scope});
$scope.globalVariables.edit = true;
@@ -316,21 +371,34 @@ angular.module('pollControllers', [])
});
}
+ var initVoterList = function () {
+ PollVoterList.query({pollId:$routeParams.pollId, permission:$scope.globalVariables.permission}, function (voterList) {
+ if (voterList.length > 0) {
+ $scope.data.voterList = [];
+ angular.forEach(voterList, function (list) {
+ PollVoterListMember.query({pollId:$routeParams.pollId, permission:$scope.globalVariables.permission, voterListId: list.id}, function (voterListMember) {
+ $scope.data.voterList.push({group:list, members:voterListMember});
+ })
+ })
+ }
+ })
+ };
+
var initPoll = function () {
- var pollPromise = Poll.get({pollId:$routeParams.pollId, permission:$scope.globalVariables.permission}, function (poll) {
+ Poll.get({pollId:$routeParams.pollId, permission:$scope.globalVariables.permission}, function (poll) {
if (angular.isUndefined(poll.permission)) {
$location.path('/');
}
$scope.data.poll = poll;
- }).$promise;
+ });
- var choicesPromise = PollChoice.query({pollId:$routeParams.pollId, permission:$scope.globalVariables.permission}).$promise.then(function (choices) {
+ PollChoice.query({pollId:$routeParams.pollId, permission:$scope.globalVariables.permission}).$promise.then(function (choices) {
$scope.data.choices = choices;
$scope.data.vote = {};
$scope.data.vote.choice = $scope.data.choices;
- }).$promise;
+ });
- var votesPromise = PollVote.query({pollId:$routeParams.pollId}, function (votes) {
+ PollVote.query({pollId:$routeParams.pollId}, function (votes) {
$scope.data.votants = votes;
angular.forEach($scope.data.votants, function (vote) {
angular.forEach(vote.choice, function (choice) {
@@ -342,23 +410,9 @@ angular.module('pollControllers', [])
}
})
})
- }).$promise;
-
- $q.all([choicesPromise, votesPromise]).then(function () {
- Poll.get({pollId:$routeParams.pollId, cmd:'results'}, function (result) {
- $scope.data.result = result;
- angular.forEach(result.scores, function(value, key) {
- for (var i = 0; i < $scope.data.choices.length; i++) {
- if ($scope.data.choices[i].id == value.choiceId) {
- value.choice = $scope.data.choices[i];
- i = $scope.data.choices.length;
- }
- }
- })
- $scope.data.result.nbVotant = $scope.data.votants.length;
- });
});
+ initVoterList();
}
initPoll();
diff --git a/pollen-ui-angular/src/main/webapp/js/services.js b/pollen-ui-angular/src/main/webapp/js/services.js
index 20679cf..e78438f 100644
--- a/pollen-ui-angular/src/main/webapp/js/services.js
+++ b/pollen-ui-angular/src/main/webapp/js/services.js
@@ -21,7 +21,11 @@
angular.module('pollenServices', ['ngResource'])
.factory('Poll', ['$resource', function ($resource) {
- return $resource(conf.restURL+'/polls/:pollId/:cmd', {pollId:'@id'}, {
+ return $resource(conf.restURL+'/polls/:pollId', {pollId:'@id'}, {
+ 'skeletonNew' : {
+ method : 'GET',
+ url : conf.restURL+'/polls/new'
+ },
'add' : {
method : 'POST',
transformRequest : function (data, headersGetter) {
@@ -112,6 +116,30 @@ angular.module('pollenServices', ['ngResource'])
);
}])
+.factory('PollVoterList', ['$resource', function ($resource) {
+ var transformParam = function (data) {
+ return 'voterList='+encodeURIComponent(JSON.stringify(data.group))+'&members='+encodeURIComponent(JSON.stringify(data.members));
+ };
+
+ return $resource(conf.restURL+'/polls/:pollId/voterLists/:voterListId', {voterListId: '@group.id'},
+ {
+ 'add' : {
+ method : 'POST',
+ transformRequest: function (data, headersGetter) {
+ return transformParam(data);
+ }
+ },
+ })
+}])
+
+.factory('PollVoterListMember', ['$resource', function ($resource) {
+ return $resource(conf.restURL+'/polls/:pollId/voterLists/:voterListId/members/:memberId', {voterListId: '@group.id'},
+ {
+
+ })
+}])
+
+
.factory('User', ['$resource', function ($resource) {
var transformParam = function (data) {
return 'user='+encodeURIComponent(JSON.stringify(data))+'&generatePassword=false';
diff --git a/pollen-ui-angular/src/main/webapp/partials/poll-listParticipant.html b/pollen-ui-angular/src/main/webapp/partials/poll-listParticipant.html
new file mode 100644
index 0000000..3dae6e4
--- /dev/null
+++ b/pollen-ui-angular/src/main/webapp/partials/poll-listParticipant.html
@@ -0,0 +1,44 @@
+<h2 xmlns="http://www.w3.org/1999/html">Participant</h2>
+<form>
+ type :
+ <label for="formFree">
+ <input type="radio" ng-model="data.poll.pollType" name="type" value="FREE" id="formFree"/>
+ Free
+ </label>
+ <label for="formRestricted">
+ <input type="radio" ng-model="data.poll.pollType" name="type" value="RESTRICTED" id="formRestricted" />
+ Restricted
+ </label>
+ <label for="formGroup">
+ <input type="radio" ng-model="data.poll.pollType" name="type" value="GROUP" id="formGroup" />
+ Group
+ </label>
+
+ <hr/>
+
+ <table ng-repeat="voterList in data.voterList" class="voterList" ng-hide="data.poll.pollType == 'FREE'">
+ <tr ng-show="data.poll.pollType == 'GROUP'">
+ <th colspan="2"> <input type="text" name="group" placeholder="name group" ng-model="voterList.group.name" class="form-control" /></th>
+ <th> <input type="number" ng-model="voterList.group.weight" select-on-click class="form-control" /> </th>
+ </tr>
+
+ <tr>
+ <th> {{ 'poll.restricted.name' | translate }} </th>
+ <th> {{ 'poll.restricted.mail' | translate }} </th>
+ <th> {{ 'poll.restricted.weight' | translate }} </th>
+ </tr>
+
+ <tr ng-repeat="member in voterList.members">
+ <td> <div ng-class="{'has-error':member.name == ''}"><input type="text" ng-model="member.name" class="form-control" /></div></td>
+ <td> <div ng-class="{'has-error':member.email == ''}"><input type="text" ng-model="member.email" class="form-control" /></div></td>
+ <td> <input type="number" ng-model="member.weight" select-on-click class="form-control"/></td>
+ </tr>
+
+ <tr>
+ <th colspan="3"> <a ng-click="addVoter($index);"> Add Voter </a> </th>
+ </tr>
+ </table>
+
+ <button class="btn btn-info" ng-show="data.poll.pollType == 'GROUP'" ng-click="addGroup()">Add group</button>
+
+</form>
diff --git a/pollen-ui-angular/src/main/webapp/partials/poll.html b/pollen-ui-angular/src/main/webapp/partials/poll.html
index 9f17f2e..6efa89a 100644
--- a/pollen-ui-angular/src/main/webapp/partials/poll.html
+++ b/pollen-ui-angular/src/main/webapp/partials/poll.html
@@ -32,6 +32,7 @@
<li ng-class="{active: tab == 'edit'}" ng-show="globalVariables.create"><a href="#/poll/create">{{ 'poll.tab.create' | translate }}</a></li>
<li ng-class="{active: tab == 'edit'}" ng-show="data.poll.permission"><a href="{{globalVariables.linkEdit}}">{{ 'poll.tab.edit' | translate }}</a></li>
<li ng-class="{active: tab == 'conf'}" ng-show="data.poll.permission || globalVariables.create"><a href="{{urlTab}}tab=conf">{{ 'poll.tab.conf' | translate }}</a></li>
+ <li ng-class="{active: tab == 'participant'}" ng-show="data.poll.permission || globalVariables.create"><a href="{{urlTab}}tab=participant">{{ 'poll.tab.participant' | translate }}</a></li>
</ul>
<div ng-include="'partials/poll-link.html'" ng-if="tab == 'home'"></div>
@@ -83,4 +84,6 @@
<div ng-include="'./partials/poll-result.html'" ng-if="tab == 'result'"></div>
+ <div ng-include="'./partials/poll-listParticipant.html'" ng-if="tab == 'participant'"></div>
+
</form>
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
chorem.org SCM administrator <admin+scm(a)chorem.org>.
1
0
01/01: Add voterList import test + fix security check on voter list service
by chorem.org scm 06 Jun '14
by chorem.org scm 06 Jun '14
06 Jun '14
This is an automated email from the git hooks/post-receive script.
New commit to branch develop in repository pollen.
See http://git.chorem.org/pollen.git
commit 40ff0e8d8d49f644f164d1a1ddcdb597deeb41e1
Author: Tony CHEMIT <chemit(a)codelutin.com>
Date: Fri Jun 6 09:18:02 2014 +0200
Add voterList import test + fix security check on voter list service
---
.../pollen/services/service/VoterListService.java | 38 ++++++-
.../services/service/VoterListServiceTest.java | 125 +++++++++++++++++++++
2 files changed, 159 insertions(+), 4 deletions(-)
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java
index 6b0fa84..99af926 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java
@@ -36,6 +36,7 @@ import org.chorem.pollen.persistence.entity.VoterListTopiaDao;
import org.chorem.pollen.services.bean.PollenEntityRef;
import org.chorem.pollen.services.bean.VoterListBean;
import org.chorem.pollen.services.bean.VoterListMemberBean;
+import org.chorem.pollen.services.service.security.PermissionVerb;
import java.util.ArrayList;
import java.util.List;
@@ -49,12 +50,30 @@ import java.util.Set;
*/
public class VoterListService extends PollenServiceSupport {
- public VoterListBean importFavoriteList(String pollId,
- String favoriteListId) {
+ public VoterListBean newRestrictedVoterList() {
+
+ VoterListBean list = new VoterListBean();
+ list.setName("restrictedVoterList");
+ list.setWeight(1.0f);
+ return list;
+
+ }
+
+ public VoterListBean newGroupVoterList() {
+
+ VoterListBean list = new VoterListBean();
+ list.setWeight(1.0f);
+ return list;
+
+ }
+
+ public PollenEntityRef<VoterList> importFavoriteList(String pollId,
+ String favoriteListId) {
checkIsConnected();
checkNotNull(pollId);
checkNotNull(favoriteListId);
+ checkPermission(PermissionVerb.editPoll, pollId);
Poll poll = getPollService().getPoll0(pollId);
@@ -86,13 +105,15 @@ public class VoterListService extends PollenServiceSupport {
commit();
- return toBean(VoterListBean.class, result);
+ PollenEntityRef<VoterList> createBeanRef = PollenEntityRef.of(result);
+ return createBeanRef;
}
public List<VoterListBean> getVoterLists(String pollId) {
checkNotNull(pollId);
+ checkPermission(PermissionVerb.readPoll, pollId);
Poll poll = getPollService().getPoll0(pollId);
List<VoterList> voterLists = getVoterLists0(poll);
@@ -105,6 +126,7 @@ public class VoterListService extends PollenServiceSupport {
checkNotNull(pollId);
checkNotNull(voterListId);
+ checkPermission(PermissionVerb.readPoll, pollId);
VoterList voterList = getVoterList0(pollId, voterListId);
VoterListBean voterListBean = toBean(VoterListBean.class, voterList);
@@ -119,6 +141,7 @@ public class VoterListService extends PollenServiceSupport {
checkNotNull(pollId);
checkNotNull(voterList);
checkIsNotPersisted(voterList);
+ checkPermission(PermissionVerb.editPoll, pollId);
Poll poll = getPollService().getPoll0(pollId);
@@ -153,6 +176,7 @@ public class VoterListService extends PollenServiceSupport {
checkNotNull(pollId);
checkNotNull(voterList);
checkIsPersisted(voterList);
+ checkPermission(PermissionVerb.editPoll, pollId);
Poll poll = getPollService().getPoll0(pollId);
@@ -174,6 +198,7 @@ public class VoterListService extends PollenServiceSupport {
checkNotNull(pollId);
checkNotNull(voterListId);
+ checkPermission(PermissionVerb.editPoll, pollId);
Poll poll = getPollService().getPoll0(pollId);
@@ -187,6 +212,7 @@ public class VoterListService extends PollenServiceSupport {
checkNotNull(pollId);
checkNotNull(voterListId);
+ checkPermission(PermissionVerb.readPoll, pollId);
VoterList voterList = getVoterList0(pollId, voterListId);
@@ -201,6 +227,7 @@ public class VoterListService extends PollenServiceSupport {
checkNotNull(pollId);
checkNotNull(voterListId);
checkNotNull(memberId);
+ checkPermission(PermissionVerb.readPoll, pollId);
VoterList voterList = getVoterList0(pollId, voterListId);
@@ -216,6 +243,7 @@ public class VoterListService extends PollenServiceSupport {
checkNotNull(voterListId);
checkNotNull(member);
checkIsNotPersisted(member);
+ checkPermission(PermissionVerb.editPoll, pollId);
VoterList voterList = getVoterList0(pollId, voterListId);
@@ -238,6 +266,7 @@ public class VoterListService extends PollenServiceSupport {
checkNotNull(voterListId);
checkNotNull(member);
checkIsPersisted(member);
+ checkPermission(PermissionVerb.editPoll, pollId);
VoterList voterList = getVoterList0(pollId, voterListId);
@@ -260,7 +289,8 @@ public class VoterListService extends PollenServiceSupport {
checkNotNull(pollId);
checkNotNull(voterListId);
checkNotNull(memberId);
-
+ checkPermission(PermissionVerb.editPoll, pollId);
+
VoterList voterList = getVoterList0(pollId, voterListId);
VoterListMember member = getVoterListMember0(voterList, memberId);
diff --git a/pollen-services/src/test/java/org/chorem/pollen/services/service/VoterListServiceTest.java b/pollen-services/src/test/java/org/chorem/pollen/services/service/VoterListServiceTest.java
new file mode 100644
index 0000000..23c3976
--- /dev/null
+++ b/pollen-services/src/test/java/org/chorem/pollen/services/service/VoterListServiceTest.java
@@ -0,0 +1,125 @@
+package org.chorem.pollen.services.service;
+
+import com.google.common.base.Charsets;
+import com.google.common.io.Files;
+import org.chorem.pollen.persistence.entity.ChoiceType;
+import org.chorem.pollen.persistence.entity.FavoriteList;
+import org.chorem.pollen.persistence.entity.Poll;
+import org.chorem.pollen.persistence.entity.PollType;
+import org.chorem.pollen.persistence.entity.PollenUser;
+import org.chorem.pollen.persistence.entity.VoterList;
+import org.chorem.pollen.services.AbstractPollenServiceTest;
+import org.chorem.pollen.services.bean.ChoiceBean;
+import org.chorem.pollen.services.bean.FavoriteListBean;
+import org.chorem.pollen.services.bean.PollBean;
+import org.chorem.pollen.services.bean.PollenEntityRef;
+import org.chorem.pollen.services.bean.VoterListMemberBean;
+import org.chorem.pollen.services.service.security.PollenAuthenticationException;
+import org.chorem.pollen.services.service.security.PollenInvalidSessionTokenException;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Created on 6/6/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.0
+ */
+public class VoterListServiceTest extends AbstractPollenServiceTest {
+
+ protected PollenUserService userService;
+
+ protected PollService pollService;
+
+ protected FavoriteListService favoriteListService;
+
+ protected VoterListService voterListService;
+
+ protected VoterListService service;
+
+ protected PollenUser user;
+
+ @Before
+ public void setUp() throws ParseException {
+
+ loadFixtures("fixtures");
+
+ userService = newService(PollenUserService.class);
+ pollService = newService(PollService.class);
+ favoriteListService = newService(FavoriteListService.class);
+ voterListService = newService(VoterListService.class);
+ service = newService(VoterListService.class);
+
+ getServiceContext().setDate(new Date(1363948427576l));
+
+ user = application.fixture("user_jean");
+ }
+
+ @Test
+ public void importFavoriteList() throws FavoriteListImportException, InvalidFormException, IOException, PollenInvalidSessionTokenException, PollenAuthenticationException {
+
+ login("jean(a)pollen.fake", "fake");
+
+ // create favorite list
+
+ FavoriteListBean favoriteListBean1 = new FavoriteListBean();
+
+ favoriteListBean1.setName("list1");
+ PollenEntityRef<FavoriteList> savedList1 = favoriteListService.createFavoriteList(favoriteListBean1);
+ Assert.assertNotNull(savedList1);
+ String favoriteListId = savedList1.getEntityId();
+ Assert.assertNotNull(favoriteListId);
+
+ // create import file
+
+ File importFile = new File(application.getTestBasedir(), "importFavoriteListFromFile_" + System.nanoTime());
+ Files.write(FavoriteListServiceTest.IMPORT_FILE_CONTENT, importFile, Charsets.UTF_8);
+
+ // import file
+
+ favoriteListService.importFavoriteListMembersFromCsv(favoriteListId, importFile);
+
+ // create poll and voter list
+
+ PollBean poll = pollService.getNewPoll();
+
+ poll.setPollType(PollType.RESTRICTED);
+ poll.setTitle("poll1");
+
+ List<ChoiceBean> choices = new ArrayList<>();
+
+ ChoiceBean choice1 = new ChoiceBean();
+ choices.add(choice1);
+ choice1.setChoiceType(ChoiceType.TEXT);
+ choice1.setName("A");
+ choice1.setDescription("Choice A");
+
+ ChoiceBean choice2 = new ChoiceBean();
+ choice2.setChoiceType(ChoiceType.TEXT);
+ choice2.setName("B");
+ choice2.setDescription("Choice B");
+ choices.add(choice2);
+
+ PollenEntityRef<Poll> createdPoll = pollService.createPoll(poll, choices);
+ Assert.assertNotNull(createdPoll);
+
+ String pollId = createdPoll.getEntityId();
+
+ PollenEntityRef<VoterList> createdVoterList = voterListService.importFavoriteList(pollId, favoriteListId);
+ Assert.assertNotNull(createdVoterList);
+
+ Set<VoterListMemberBean> voterListMembers = voterListService.getVoterListMembers(pollId, createdVoterList.getEntityId());
+ Assert.assertNotNull(voterListMembers);
+ Assert.assertEquals(2, voterListMembers.size());
+
+ }
+}
--
To stop receiving notification emails like this one, please contact
chorem.org SCM administrator <admin+scm(a)chorem.org>.
1
0
This is an automated email from the git hooks/post-receive script.
New commit to branch develop in repository pollen.
See http://git.chorem.org/pollen.git
commit db4f69c34f5c8a16ffc74d072a147bfc0a78eb3b
Author: Tony CHEMIT <chemit(a)codelutin.com>
Date: Thu Jun 5 20:21:26 2014 +0200
make import of favorite list works
---
.../service/FavoriteListImportFromFile.java | 4 +--
.../service/FavoriteListImportFromLdap.java | 2 +-
.../services/service/FavoriteListService.java | 4 +--
.../services/service/FavoriteListServiceTest.java | 40 +++++++++++++++++++++-
4 files changed, 44 insertions(+), 6 deletions(-)
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java
index c997630..28acbeb 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java
@@ -134,7 +134,7 @@ public class FavoriteListImportFromFile extends PollenServiceSupport implements
}
- email = email.toLowerCase().trim();
+ email = getCleanMail(email);
if (!usedEmail.add(email)) {
// email already exists
String error = l(locale, "pollen.error.favoriteList.import.csv.already.used.email", lineNumber, email);
@@ -150,7 +150,7 @@ public class FavoriteListImportFromFile extends PollenServiceSupport implements
}
- FavoriteListMember member = getFavoriteListMemberDao().newInstance();
+ FavoriteListMember member = getFavoriteListMemberDao().create();
member.setName(memberName);
member.setEmail(email);
member.setFavoriteList(favoriteList);
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java
index 2e3c964..979a002 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java
@@ -141,7 +141,7 @@ public class FavoriteListImportFromLdap extends PollenServiceSupport implements
}
- FavoriteListMember member = getFavoriteListMemberDao().newInstance();
+ FavoriteListMember member = getFavoriteListMemberDao().create();
member.setName(memberName);
member.setEmail(email);
member.setFavoriteList(favoriteList);
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java
index 0f5b53e..046ef0e 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java
@@ -254,7 +254,7 @@ public class FavoriteListService extends PollenServiceSupport {
checkNotNull(favoriteListId);
checkNotNull(file);
- FavoriteListImportFromFile importer = new FavoriteListImportFromFile();
+ FavoriteListImportFromFile importer = newService(FavoriteListImportFromFile.class);
importer.setFile(file);
importer.doImport(favoriteListId);
@@ -267,7 +267,7 @@ public class FavoriteListService extends PollenServiceSupport {
checkNotNull(favoriteListId);
checkNotNull(ldap);
- FavoriteListImportFromLdap importer = new FavoriteListImportFromLdap();
+ FavoriteListImportFromLdap importer = newService(FavoriteListImportFromLdap.class);
importer.setLdap(ldap);
importer.doImport(favoriteListId);
diff --git a/pollen-services/src/test/java/org/chorem/pollen/services/service/FavoriteListServiceTest.java b/pollen-services/src/test/java/org/chorem/pollen/services/service/FavoriteListServiceTest.java
index d637524..504118b 100644
--- a/pollen-services/src/test/java/org/chorem/pollen/services/service/FavoriteListServiceTest.java
+++ b/pollen-services/src/test/java/org/chorem/pollen/services/service/FavoriteListServiceTest.java
@@ -21,12 +21,16 @@ package org.chorem.pollen.services.service;
* #L%
*/
+import com.google.common.base.Charsets;
+import com.google.common.io.Files;
import org.chorem.pollen.persistence.entity.FavoriteList;
import org.chorem.pollen.persistence.entity.FavoriteListMember;
import org.chorem.pollen.persistence.entity.PollenUser;
import org.chorem.pollen.services.AbstractPollenServiceTest;
import org.chorem.pollen.services.bean.FavoriteListBean;
import org.chorem.pollen.services.bean.FavoriteListMemberBean;
+import org.chorem.pollen.services.bean.PaginationParameterBean;
+import org.chorem.pollen.services.bean.PaginationResultBean;
import org.chorem.pollen.services.bean.PollenEntityRef;
import org.chorem.pollen.services.service.security.PollenAuthenticationException;
import org.chorem.pollen.services.service.security.PollenInvalidSessionTokenException;
@@ -34,6 +38,8 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import java.io.File;
+import java.io.IOException;
import java.text.ParseException;
import java.util.Date;
@@ -45,7 +51,6 @@ import java.util.Date;
*/
public class FavoriteListServiceTest extends AbstractPollenServiceTest {
-
protected PollenUserService userService;
protected FavoriteListService service;
@@ -65,6 +70,39 @@ public class FavoriteListServiceTest extends AbstractPollenServiceTest {
user = application.fixture("user_jean");
}
+ public static String IMPORT_FILE_CONTENT = "user1(a)pollen.org user1\n" +
+ "user2(a)pollen.org";
+
+ @Test
+ public void importFavoriteListFromFile() throws PollenInvalidSessionTokenException, PollenAuthenticationException, InvalidFormException, IOException, FavoriteListImportException {
+
+ login("jean(a)pollen.fake", "fake");
+
+ FavoriteListBean favoriteListBean1 = new FavoriteListBean();
+
+ favoriteListBean1.setName("list1");
+ PollenEntityRef<FavoriteList> savedList1 = service.createFavoriteList(favoriteListBean1);
+ Assert.assertNotNull(savedList1);
+ String favoriteListId = savedList1.getEntityId();
+ Assert.assertNotNull(favoriteListId);
+
+ // create import file
+
+ File importFile = new File(application.getTestBasedir(), "importFavoriteListFromFile_" + System.nanoTime());
+ Files.write(IMPORT_FILE_CONTENT, importFile, Charsets.UTF_8);
+
+ PaginationResultBean<FavoriteListMemberBean> members = service.getFavoriteListMembers(favoriteListId, PaginationParameterBean.of(0, -1));
+ Assert.assertEquals(0, members.getElements().size());
+
+ // import file
+
+ service.importFavoriteListMembersFromCsv(favoriteListId, importFile);
+
+ members = service.getFavoriteListMembers(favoriteListId, PaginationParameterBean.of(0, -1));
+ Assert.assertEquals(2, members.getElements().size());
+
+ }
+
@Test
public void createFavoriteList() throws PollenInvalidSessionTokenException, PollenAuthenticationException, InvalidFormException {
--
To stop receiving notification emails like this one, please contact
chorem.org SCM administrator <admin+scm(a)chorem.org>.
1
0
This is an automated email from the git hooks/post-receive script.
New commit to branch develop in repository pollen.
See http://git.chorem.org/pollen.git
commit ee941b8527d6ab15bd27fb4a8663bd3a307b8cd0
Author: Tony CHEMIT <chemit(a)codelutin.com>
Date: Thu Jun 5 18:01:54 2014 +0200
improve import favorite list
---
.../services/service/FavoriteListImport.java | 25 ++-
.../service/FavoriteListImportFromFile.java | 174 ++++++++++++++++++-
.../service/FavoriteListImportFromLdap.java | 144 ++++++++++++++-
.../services/service/FavoriteListService.java | 193 +--------------------
.../services/service/PollenServiceSupport.java | 6 +
5 files changed, 344 insertions(+), 198 deletions(-)
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImport.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImport.java
index 83a8a63..6a59535 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImport.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImport.java
@@ -1,10 +1,33 @@
package org.chorem.pollen.services.service;
+/*
+ * #%L
+ * Pollen :: Service
+ * %%
+ * Copyright (C) 2009 - 2014 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
/**
* Created on 6/5/14.
*
* @author Tony Chemit <chemit(a)codelutin.com>
- * @since XXX
+ * @since 2.0
*/
public interface FavoriteListImport {
+
+ void doImport(String favoriteListId) throws FavoriteListImportException;
}
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java
index ae5010e..c997630 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java
@@ -1,10 +1,180 @@
package org.chorem.pollen.services.service;
+/*
+ * #%L
+ * Pollen :: Service
+ * %%
+ * Copyright (C) 2009 - 2014 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+import com.google.common.base.Charsets;
+import com.google.common.collect.Sets;
+import com.google.common.io.Files;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.pollen.persistence.entity.FavoriteList;
+import org.chorem.pollen.persistence.entity.FavoriteListMember;
+import org.chorem.pollen.persistence.entity.PollenUser;
+import org.chorem.pollen.services.PollenTechnicalException;
+import org.nuiton.util.StringUtil;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+
+import static org.nuiton.i18n.I18n.l;
+
/**
* Created on 6/5/14.
*
* @author Tony Chemit <chemit(a)codelutin.com>
- * @since XXX
+ * @since 2.0
*/
-public class FavoriteListImportFromFile implements FavoriteListImport {
+public class FavoriteListImportFromFile extends PollenServiceSupport implements FavoriteListImport {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(FavoriteListImportFromFile.class);
+
+ protected File file;
+
+ public void setFile(File file) {
+ this.file = file;
+ }
+
+ @Override
+ public void doImport(String favoriteListId) throws FavoriteListImportException {
+
+ checkIsConnected();
+ checkNotNull(favoriteListId);
+ checkNotNull(file);
+ checkState(file.exists());
+
+ PollenUser connectedUser = getConnectedUser();
+
+ FavoriteList favoriteList = getFavoriteListService().getFavoriteList0(connectedUser, favoriteListId);
+
+ Locale locale = serviceContext.getLocale();
+
+ Set<String> usedName = Sets.newHashSet();
+ Set<String> usedEmail = Sets.newHashSet();
+
+ List<FavoriteListMember> favoriteListMembers = getFavoriteListService().getFavoriteListMembers0(favoriteList);
+
+ if (CollectionUtils.isNotEmpty(favoriteListMembers)) {
+ for (FavoriteListMember member : favoriteListMembers) {
+ usedName.add(member.getName());
+ usedEmail.add(member.getEmail());
+ }
+ }
+
+ int result = 0;
+ BufferedReader reader = null;
+ try {
+
+ reader = Files.newReader(file, Charsets.UTF_8);
+ String line;
+ int lineNumber = 0;
+
+ while ((line = reader.readLine()) != null) {
+
+ line = line.trim();
+
+ if (StringUtils.isBlank(line) || line.startsWith("#")) {
+
+ // comment line
+ continue;
+
+ }
+ lineNumber++;
+ result++;
+
+ int spaceIndex = line.indexOf(' ');
+ String email;
+ String memberName;
+
+ if (spaceIndex == -1) {
+
+ // only email
+ email = line;
+ memberName = line;
+
+ } else {
+
+ // email + name
+ email = line.substring(0, spaceIndex);
+ memberName = line.substring(spaceIndex);
+
+ }
+ memberName = memberName.trim();
+
+ if (!usedName.add(memberName)) {
+ // name already exists
+ String error = l(locale, "pollen.error.favoriteList.import.csv.already.used.name", lineNumber, memberName);
+ throw new FavoriteListImportException(error, null);
+
+ }
+
+ email = email.toLowerCase().trim();
+ if (!usedEmail.add(email)) {
+ // email already exists
+ String error = l(locale, "pollen.error.favoriteList.import.csv.already.used.email", lineNumber, email);
+ throw new FavoriteListImportException(error, null);
+
+ }
+
+ if (!StringUtil.isEmail(email)) {
+
+ // email is not valid
+ String error = l(locale, "pollen.error.favoriteList.import.csv.invalid.email", lineNumber, email);
+ throw new FavoriteListImportException(error, null);
+
+ }
+
+ FavoriteListMember member = getFavoriteListMemberDao().newInstance();
+ member.setName(memberName);
+ member.setEmail(email);
+ member.setFavoriteList(favoriteList);
+
+ }
+
+ reader.close();
+
+ } catch (IOException e) {
+
+ // should never happens ?
+ throw new PollenTechnicalException(e);
+
+ } finally {
+
+ IOUtils.closeQuietly(reader);
+
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("Imported members: " + result);
+ }
+
+ commit();
+
+ }
}
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java
index f601f03..2e3c964 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java
@@ -1,37 +1,165 @@
package org.chorem.pollen.services.service;
+/*
+ * #%L
+ * Pollen :: Service
+ * %%
+ * Copyright (C) 2009 - 2014 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+import com.google.common.collect.Sets;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.chorem.pollen.persistence.entity.FavoriteList;
+import org.chorem.pollen.persistence.entity.FavoriteListMember;
import org.chorem.pollen.persistence.entity.PollenUser;
+import org.nuiton.util.StringUtil;
+
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
+import javax.naming.directory.Attribute;
+import javax.naming.directory.DirContext;
+import javax.naming.directory.InitialDirContext;
+import javax.naming.directory.SearchControls;
+import javax.naming.directory.SearchResult;
+import java.util.List;
+import java.util.Locale;
+import java.util.Properties;
+import java.util.Set;
-import java.io.File;
+import static org.nuiton.i18n.I18n.l;
/**
* Created on 6/5/14.
*
* @author Tony Chemit <chemit(a)codelutin.com>
- * @since XXX
+ * @since 2.0
*/
public class FavoriteListImportFromLdap extends PollenServiceSupport implements FavoriteListImport {
- protected File importfile;
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(FavoriteListImportFromLdap.class);
- public void setImportfile(File importfile) {
- this.importfile = importfile;
+ protected String ldap;
+
+ public void setLdap(String ldap) {
+ this.ldap = ldap;
}
@Override
- public void doImport(String favoriteListId) {
+ public void doImport(String favoriteListId) throws FavoriteListImportException {
checkIsConnected();
checkNotNull(favoriteListId);
- checkNotNull(importfile);
- checkState(importfile.exists());
+ checkNotNull(ldap);
PollenUser connectedUser = getConnectedUser();
FavoriteList favoriteList = getFavoriteListService().getFavoriteList0(connectedUser, favoriteListId);
+ Locale locale = serviceContext.getLocale();
+
+ Set<String> usedName = Sets.newHashSet();
+ Set<String> usedEmail = Sets.newHashSet();
+
+ List<FavoriteListMember> favoriteListMembers = getFavoriteListService().getFavoriteListMembers0(favoriteList);
+
+ if (CollectionUtils.isNotEmpty(favoriteListMembers)) {
+ for (FavoriteListMember member : favoriteListMembers) {
+ usedName.add(member.getName());
+ usedEmail.add(member.getEmail());
+ }
+ }
+
+ int result = 0;
+
+ try {
+
+ // Initialisation du contexte
+ Properties env = new Properties();
+
+ DirContext ictx = new InitialDirContext(env);
+
+ // Recherche en profondeur
+ SearchControls control = new SearchControls();
+ control.setSearchScope(SearchControls.SUBTREE_SCOPE);
+
+ // Création des comptes avec les résultats de la recherche
+ NamingEnumeration<SearchResult> e = ictx.search(ldap, null, control);
+
+ while (e.hasMore()) {
+
+ SearchResult r = e.next();
+
+ Attribute attrName = r.getAttributes().get("cn");
+ Attribute attrEmail = r.getAttributes().get("mail");
+
+ if (attrName != null) {
+
+ result++;
+
+ String memberName = attrName.get().toString().trim();
+
+ if (!usedName.add(memberName)) {
+
+ // name already exists
+ String error = l(locale, "pollen.error.favoriteList.import.ldap.already.used.name", memberName);
+ throw new FavoriteListImportException(error, null);
+
+ }
+
+ String email = attrEmail.get().toString().toLowerCase().trim();
+
+ if (!usedEmail.add(email)) {
+
+ // email already exists
+ String error = l(locale, "pollen.error.favoriteList.import.ldap.already.used.email", email);
+ throw new FavoriteListImportException(error, null);
+
+ }
+
+ if (!StringUtil.isEmail(email)) {
+
+ // email is not valid
+ String error = l(locale, "pollen.error.favoriteList.import.ldap.invalid.email", email);
+ throw new FavoriteListImportException(error, null);
+
+ }
+
+ FavoriteListMember member = getFavoriteListMemberDao().newInstance();
+ member.setName(memberName);
+ member.setEmail(email);
+ member.setFavoriteList(favoriteList);
+
+ }
+ }
+
+ } catch (NamingException ex) {
+
+ throw new FavoriteListImportException("LDAP", ex);
+
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("Imported members: " + result);
+ }
commit();
+
}
}
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java
index aabf7af..0f5b53e 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java
@@ -25,8 +25,6 @@ package org.chorem.pollen.services.service;
import com.google.common.collect.Sets;
import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.pollen.persistence.entity.FavoriteList;
@@ -34,34 +32,18 @@ import org.chorem.pollen.persistence.entity.FavoriteListMember;
import org.chorem.pollen.persistence.entity.FavoriteListMemberTopiaDao;
import org.chorem.pollen.persistence.entity.FavoriteListTopiaDao;
import org.chorem.pollen.persistence.entity.PollenUser;
-import org.chorem.pollen.services.PollenTechnicalException;
import org.chorem.pollen.services.bean.FavoriteListBean;
import org.chorem.pollen.services.bean.FavoriteListMemberBean;
import org.chorem.pollen.services.bean.PaginationParameterBean;
import org.chorem.pollen.services.bean.PaginationResultBean;
import org.chorem.pollen.services.bean.PollenEntityRef;
-import org.nuiton.util.StringUtil;
import org.nuiton.util.pagination.PaginationParameter;
import org.nuiton.util.pagination.PaginationResult;
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.DirContext;
-import javax.naming.directory.InitialDirContext;
-import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
import java.util.List;
-import java.util.Locale;
-import java.util.Properties;
import java.util.Set;
-import static org.nuiton.i18n.I18n.l;
-
/**
* TODO
*
@@ -272,94 +254,9 @@ public class FavoriteListService extends PollenServiceSupport {
checkNotNull(favoriteListId);
checkNotNull(file);
- PollenUser user = getConnectedUser();
-
- FavoriteList favoriteList = getFavoriteList0(user, favoriteListId);
-
- Locale locale = serviceContext.getLocale();
-
- Set<String> usedName = Sets.newHashSet();
- Set<String> usedEmail = Sets.newHashSet();
-
- List<FavoriteListMember> favoriteListMembers = getFavoriteListMembers0(favoriteList);
-
- if (CollectionUtils.isNotEmpty(favoriteListMembers)) {
- for (FavoriteListMember member : favoriteListMembers) {
- usedName.add(member.getName());
- usedEmail.add(member.getEmail());
- }
- }
-
- int result = 0;
- BufferedReader reader = null;
- try {
- reader = new BufferedReader(new FileReader(file));
- String line;
- int lineNumber = 0;
- while ((line = reader.readLine()) != null) {
- line = line.trim();
- if (StringUtils.isBlank(line) || line.startsWith("#")) {
-
- // comment line
- continue;
- }
- lineNumber++;
- result++;
-
- int spaceIndex = line.indexOf(' ');
- String email;
- String memberName;
- if (spaceIndex == -1) {
- // only email
- email = line;
- memberName = line;
- } else {
- // email + name
- email = line.substring(0, spaceIndex);
- memberName = line.substring(spaceIndex);
- }
- memberName = memberName.trim();
-
- if (!usedName.add(memberName)) {
- // name already exists
- String error = l(locale, "pollen.error.favoriteList.import.csv.already.used.name", lineNumber, memberName);
- throw new FavoriteListImportException(error, null);
- }
-
- email = email.toLowerCase().trim();
- if (!usedEmail.add(email)) {
- // email already exists
- String error = l(locale, "pollen.error.favoriteList.import.csv.already.used.email", lineNumber, email);
- throw new FavoriteListImportException(error, null);
- }
-
- if (!StringUtil.isEmail(email)) {
-
- // email is not valid
- String error = l(locale, "pollen.error.favoriteList.import.csv.invalid.email", lineNumber, email);
- throw new FavoriteListImportException(error, null);
- }
-
- FavoriteListMember member = getFavoriteListMemberDao().newInstance();
- member.setName(memberName);
- member.setEmail(email);
- member.setFavoriteList(favoriteList);
- }
-
- reader.close();
-
- } catch (IOException e) {
- // should never happens ?
- throw new PollenTechnicalException(e);
- } finally {
- IOUtils.closeQuietly(reader);
- }
-
- if (log.isInfoEnabled()) {
- log.info("Imported members: " + result);
- }
-
- commit();
+ FavoriteListImportFromFile importer = new FavoriteListImportFromFile();
+ importer.setFile(file);
+ importer.doImport(favoriteListId);
}
@@ -370,87 +267,9 @@ public class FavoriteListService extends PollenServiceSupport {
checkNotNull(favoriteListId);
checkNotNull(ldap);
- PollenUser user = getConnectedUser();
-
- FavoriteList favoriteList = getFavoriteList0(user, favoriteListId);
-
- Locale locale = serviceContext.getLocale();
-
- Set<String> usedName = Sets.newHashSet();
- Set<String> usedEmail = Sets.newHashSet();
-
- List<FavoriteListMember> favoriteListMembers = getFavoriteListMembers0(favoriteList);
-
- if (CollectionUtils.isNotEmpty(favoriteListMembers)) {
- for (FavoriteListMember member : favoriteListMembers) {
- usedName.add(member.getName());
- usedEmail.add(member.getEmail());
- }
- }
-
- int result = 0;
-
- try {
-
- // Initialisation du contexte
- Properties env = new Properties();
-
- DirContext ictx = new InitialDirContext(env);
-
- // Recherche en profondeur
- SearchControls control = new SearchControls();
- control.setSearchScope(SearchControls.SUBTREE_SCOPE);
-
- // Création des comptes avec les résultats de la recherche
- NamingEnumeration<SearchResult> e = ictx.search(ldap, null, control);
- while (e.hasMore()) {
- SearchResult r = e.next();
-
- Attribute attrName = r.getAttributes().get("cn");
- Attribute attrEmail = r.getAttributes().get("mail");
-
- if (attrName != null) {
-
- result++;
-
- String memberName = attrName.get().toString().trim();
-
- if (!usedName.add(memberName)) {
- // name already exists
- String error = l(locale, "pollen.error.favoriteList.import.ldap.already.used.name", memberName);
- throw new FavoriteListImportException(error, null);
- }
-
- String email = attrEmail.get().toString().toLowerCase().trim();
-
- if (!usedEmail.add(email)) {
- // email already exists
- String error = l(locale, "pollen.error.favoriteList.import.ldap.already.used.email", email);
- throw new FavoriteListImportException(error, null);
- }
-
- if (!StringUtil.isEmail(email)) {
-
- // email is not valid
- String error = l(locale, "pollen.error.favoriteList.import.ldap.invalid.email", email);
- throw new FavoriteListImportException(error, null);
- }
-
- FavoriteListMember member = getFavoriteListMemberDao().newInstance();
- member.setName(memberName);
- member.setEmail(email);
- member.setFavoriteList(favoriteList);
- }
- }
- } catch (NamingException ex) {
- throw new FavoriteListImportException("LDAP", ex);
- }
-
- if (log.isInfoEnabled()) {
- log.info("Imported members: " + result);
- }
-
- commit();
+ FavoriteListImportFromLdap importer = new FavoriteListImportFromLdap();
+ importer.setLdap(ldap);
+ importer.doImport(favoriteListId);
}
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java
index 77e8a12..da78c96 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java
@@ -275,6 +275,12 @@ public abstract class PollenServiceSupport implements PollenService {
}
+ protected void checkState(boolean test) {
+
+ Preconditions.checkState(test);
+
+ }
+
protected boolean check(Multimap<String, String> errors, String field, boolean condition, String error) {
boolean valid = condition;
--
To stop receiving notification emails like this one, please contact
chorem.org SCM administrator <admin+scm(a)chorem.org>.
1
0
This is an automated email from the git hooks/post-receive script.
New commit to branch develop in repository pollen.
See http://git.chorem.org/pollen.git
commit 9513c304806c9a2e6c78e19e4c892a8e49e57484
Author: Tony CHEMIT <chemit(a)codelutin.com>
Date: Thu Jun 5 17:53:42 2014 +0200
improve import favorite list
---
.../services/service/FavoriteListImport.java | 10 ++++++
.../service/FavoriteListImportFromFile.java | 10 ++++++
.../service/FavoriteListImportFromLdap.java | 37 ++++++++++++++++++++++
3 files changed, 57 insertions(+)
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImport.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImport.java
new file mode 100644
index 0000000..83a8a63
--- /dev/null
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImport.java
@@ -0,0 +1,10 @@
+package org.chorem.pollen.services.service;
+
+/**
+ * Created on 6/5/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since XXX
+ */
+public interface FavoriteListImport {
+}
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java
new file mode 100644
index 0000000..ae5010e
--- /dev/null
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromFile.java
@@ -0,0 +1,10 @@
+package org.chorem.pollen.services.service;
+
+/**
+ * Created on 6/5/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since XXX
+ */
+public class FavoriteListImportFromFile implements FavoriteListImport {
+}
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java
new file mode 100644
index 0000000..f601f03
--- /dev/null
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListImportFromLdap.java
@@ -0,0 +1,37 @@
+package org.chorem.pollen.services.service;
+
+import org.chorem.pollen.persistence.entity.FavoriteList;
+import org.chorem.pollen.persistence.entity.PollenUser;
+
+import java.io.File;
+
+/**
+ * Created on 6/5/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since XXX
+ */
+public class FavoriteListImportFromLdap extends PollenServiceSupport implements FavoriteListImport {
+
+ protected File importfile;
+
+ public void setImportfile(File importfile) {
+ this.importfile = importfile;
+ }
+
+ @Override
+ public void doImport(String favoriteListId) {
+
+ checkIsConnected();
+ checkNotNull(favoriteListId);
+ checkNotNull(importfile);
+ checkState(importfile.exists());
+
+ PollenUser connectedUser = getConnectedUser();
+
+ FavoriteList favoriteList = getFavoriteListService().getFavoriteList0(connectedUser, favoriteListId);
+
+
+ commit();
+ }
+}
--
To stop receiving notification emails like this one, please contact
chorem.org SCM administrator <admin+scm(a)chorem.org>.
1
0
This is an automated email from the git hooks/post-receive script.
New commit to branch develop in repository pollen.
See http://git.chorem.org/pollen.git
commit f220a079a8ea2fdbfb77d13e0e70dc68cbbc3f78
Author: Tony CHEMIT <chemit(a)codelutin.com>
Date: Thu Jun 5 17:32:34 2014 +0200
fix voter list create and update code
---
.../chorem/pollen/services/service/VoterListService.java | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java
index 42f9558..6b0fa84 100644
--- a/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java
+++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java
@@ -37,6 +37,7 @@ import org.chorem.pollen.services.bean.PollenEntityRef;
import org.chorem.pollen.services.bean.VoterListBean;
import org.chorem.pollen.services.bean.VoterListMemberBean;
+import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -123,11 +124,7 @@ public class VoterListService extends PollenServiceSupport {
List<VoterList> existingVoterLists = getVoterLists0(poll);
- VoterList existingVoterList = getVoterList0(pollId, voterList.getEntityId());
-
- List<VoterListMember> existingVoterListMembers = getVoterListMembers0(existingVoterList);
-
- ErrorMap errorMap = checkVoterList(existingVoterLists, voterList, existingVoterListMembers, members);
+ ErrorMap errorMap = checkVoterList(existingVoterLists, voterList, members);
errorMap.failIfNotEmpty();
VoterList result = saveVoterList(poll, voterList);
@@ -161,7 +158,7 @@ public class VoterListService extends PollenServiceSupport {
List<VoterList> existingVoterLists = getVoterLists0(poll);
- ErrorMap errorMap = checkVoterList(existingVoterLists, voterList, null, null);
+ ErrorMap errorMap = checkVoterList(existingVoterLists, voterList, null);
errorMap.failIfNotEmpty();
VoterList result = saveVoterList(poll, voterList);
@@ -376,7 +373,7 @@ public class VoterListService extends PollenServiceSupport {
}
- protected ErrorMap checkVoterList(List<VoterList> existingVoterLists, VoterListBean voterList, List<VoterListMember> existingVoterListMembers, List<VoterListMemberBean> members) {
+ protected ErrorMap checkVoterList(List<VoterList> existingVoterLists, VoterListBean voterList, List<VoterListMemberBean> members) {
ErrorMap errors = new ErrorMap();
@@ -413,6 +410,8 @@ public class VoterListService extends PollenServiceSupport {
if (CollectionUtils.isNotEmpty(members)) {
+ List<VoterListMember> existingVoterListMembers = new ArrayList<>();
+
for (VoterListMemberBean voterListMember : members) {
ErrorMap voterListMemberErrors = checkVoterListMember(existingVoterListMembers, voterListMember);
--
To stop receiving notification emails like this one, please contact
chorem.org SCM administrator <admin+scm(a)chorem.org>.
1
0