r3079 - in trunk: . pollen-business/src/main/java/org/chorem/pollen pollen-business/src/main/java/org/chorem/pollen/entity pollen-business/src/main/java/org/chorem/pollen/service pollen-business/src/main/resources/i18n pollen-business/src/main/xmi pollen-business/src/test/java/org/chorem/pollen/service pollen-business/src/test/java/org/chorem/pollen/test pollen-ui/src/main/java/org/chorem/pollen/ui/data pollen-ui/src/main/java/org/chorem/pollen/ui/models pollen-ui/src/main/java/org/chorem/p
Author: fdesbois Date: 2011-09-25 23:52:20 +0200 (Sun, 25 Sep 2011) New Revision: 3079 Url: http://chorem.org/repositories/revision/pollen/3079 Log: - Upgrade to last libraries versions - Use Enumeration evol from Topia - Implement updatePoll Added: trunk/pollen-business/src/main/resources/i18n/pollen-business_en_GB.properties trunk/pollen-business/src/main/resources/i18n/pollen-business_fr_FR.properties Removed: trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/entity/ChoiceImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java trunk/pollen-business/src/main/xmi/pollen.zargo trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/data/ChoiceField.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/PollFormModel.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/PollForm.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/Results.java trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java trunk/pom.xml Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/PollenContextImpl.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -131,8 +131,7 @@ @Override public void start(ServiceUser serviceUser) { try { - I18n.setInitializer(new DefaultI18nInitializer("pollen-business")); - I18n.init(); + I18n.init(new DefaultI18nInitializer("pollen-business"), null); if (log.isInfoEnabled()) { log.info(_("pollen.info.start")); Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/ChoiceImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/ChoiceImpl.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/ChoiceImpl.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -44,16 +44,6 @@ private static final long serialVersionUID = 1L; @Override - public ChoiceType getChoiceType() { - return ChoiceType.valueOf(getType()); - } - - @Override - public void setChoiceType(ChoiceType choiceType) { - setType(choiceType.ordinal()); - } - - @Override public boolean isHidden() { return StringUtils.isNotEmpty(name) && name.startsWith(NumberMethod.HIDDEN_PREFIX); Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollAccountDAOImpl.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -115,7 +115,7 @@ addEquals(pollProperty.$alias(), poll); // Manage join depends on pollType - if (poll.getPollType().isGroup()) { + if (poll.getType().isGroup()) { query.addJoin(pollProperty.pollAccount(), listProperty.$alias(), false). addJoin(listProperty.child(), participantProperty.$alias(), false); } else { Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollDAOImpl.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -25,6 +25,8 @@ import org.chorem.pollen.PollenContext; import org.chorem.pollen.PollenQueryHelper; +import org.chorem.pollen.PollenQueryHelper.PollAccountProperty; +import org.chorem.pollen.PollenQueryHelper.PollProperty; import org.nuiton.topia.framework.EntityFilter; import org.nuiton.topia.framework.TopiaQuery; @@ -43,52 +45,11 @@ // Filter reference is not always necessary but only used on UserAccount filter.checkReference(UserAccount.class, false); -// // ------------------------- PROPERTIES ----------------------------- // -// -// String pollAlias = PollenQueryAlias.POLL; -// String pollCreatorProperty = -// TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_CREATOR); -// String pollAccountProperty = -// TopiaQuery.getProperty(pollAlias, Poll.PROPERTY_POLL_ACCOUNT); -// -// // Property names for participant -// String participantAlias = PollenQueryAlias.POLL_PARTICIPANT; -// String participantUserProperty = -// TopiaQuery.getProperty(participantAlias, -// PollAccount.PROPERTY_USER_ACCOUNT); -// -// // Property names for participant list -// String listAlias = PollenQueryAlias.POLL_LIST; -// String listChildProperty = -// TopiaQuery.getProperty(listAlias, PollAccount.PROPERTY_CHILD); -// -// // participantUser is the reference to filter on if necessary -// filter.setReferenceProperty(participantUserProperty); -// -// // ----------------------- QUERY ------------------------------------ // -// -// StringBuilder orBuilder = new StringBuilder(participantAlias). -// // IN poll.pollAccount (NORMAL) -// append(" IN (").append(listAlias).append(')'). -// append(" OR ").append(participantAlias). -// // IN poll.pollAccount.child (GROUP) -// append(" IN elements(").append(listChildProperty).append(')'). -// append(" OR ").append(participantAlias). -// // = poll.creator (CREATOR) -// append(" = ").append(pollCreatorProperty); -// -// TopiaQuery query = createQuery(pollAlias). -// addDistinct(). -// addLeftJoin(pollAccountProperty, listAlias, false). -// addFrom(PollAccount.class, participantAlias). -// addWhere(orBuilder.toString()). -// addFilter(filter); - - PollenQueryHelper.PollProperty pollProperty = + PollProperty pollProperty = PollenQueryHelper.newPollProperty(); - PollenQueryHelper.PollAccountProperty listProperty = + PollAccountProperty listProperty = PollenQueryHelper.newPollAccountProperty(); - PollenQueryHelper.PollAccountProperty participantProperty = + PollAccountProperty participantProperty = PollenQueryHelper.newPollAccountChildProperty(); // participantUser is the reference to filter on if necessary @@ -98,8 +59,8 @@ addDistinct(). addLeftJoin(pollProperty.pollAccount(), listProperty.$alias(), false). addFrom(PollAccount.class, participantProperty.$alias()). - addWhere(PollenQueryHelper.format( - "$1 IN ($2) OR $1 IN elements($3) OR $1 = $4", + addWhere(String.format( + "%1$s IN (%2$s) OR %1$s IN elements(%3$s) OR %1$s = %4$s", participantProperty.$alias(), listProperty.$alias(), listProperty.child(), Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/entity/PollImpl.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -47,43 +47,12 @@ private static final long serialVersionUID = 1L; @Override - public ChoiceType getChoiceType() { - return ChoiceType.valueOf(getTypeChoice()); - } - - @Override - public void setChoiceType(ChoiceType choiceType) { - setTypeChoice(choiceType.ordinal()); - } - - @Override - public PollType getPollType() { - return PollType.valueOf(getType()); - } - - @Override - public void setPollType(PollType pollType) { - setType(pollType.ordinal()); - } - - @Override - public VoteCountingType getVoteCountingType() { - return VoteCountingType.valueOf(getVoteCounting()); - } - - @Override - public void setVoteCountingType(VoteCountingType voteCountingType) { - setVoteCounting(voteCountingType.ordinal()); - } - - @Override - @Deprecated public Choice addNewChoice(String name, String description) { // check exist Choice choice = new ChoiceImpl(); choice.setName(name); choice.setDescription(description); - choice.setChoiceType(getChoiceType()); + choice.setType(getChoiceType()); addChoice(choice); return choice; } Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -24,6 +24,7 @@ package org.chorem.pollen.service; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.pollen.PollenBinderHelper; @@ -56,6 +57,7 @@ import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.EntityFilter; import org.nuiton.topia.framework.TopiaQuery; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; import java.util.ArrayList; import java.util.Collection; @@ -70,10 +72,7 @@ * Created: 23 mars 2010 * * @author fdesbois - * @version $Revision$ - * <p/> - * Mise a jour: $Date$ - * par : $Author$ + * $Id$ */ public class ServicePollImpl extends ServicePollAbstract { @@ -105,8 +104,8 @@ protected Poll executeGetNewPoll(UserAccount user) { Poll poll = new PollImpl(); poll.setChoiceType(ChoiceType.TEXT); - poll.setVoteCountingType(VoteCountingType.NORMAL); - poll.setPollType(PollType.FREE); + poll.setVoteCounting(VoteCountingType.NORMAL); + poll.setType(PollType.FREE); // Initialize creator as an admin for the poll PollAccount creator = new PollAccountImpl(); creator.setAdmin(true); @@ -125,8 +124,20 @@ @Override protected Poll executeGetNewPoll(Poll poll) { - throw new UnsupportedOperationException("Not supported yet."); - // maybe the solution is simply removed the uid and topiaId + Poll result = new PollImpl(); + TopiaEntityBinder<Poll> binder = PollenBinderHelper.getSimpleTopiaBinder(Poll.class); + //TODO-fdesbois-2010-07-13 : add test and check if exluding only those properties is realistic + binder.copyExcluding(poll, result, + Poll.PROPERTY_UID, + Poll.PROPERTY_CLOSED, + Poll.PROPERTY_RESULT, + Poll.PROPERTY_POLL_ACCOUNT + ); + // Copy of participants only for no free poll + if (poll.getType().isRestrictedOrGroup()) { + result.setPollAccount(poll.getPollAccount()); + } + return result; } @Override @@ -150,10 +161,10 @@ Poll newPoll = createBasicPoll(transaction, poll); // Create accounts only for non free poll - if (!newPoll.getPollType().isFree()) { + if (!newPoll.getType().isFree()) { // Create accounts depends on pollType and lists argument List<PollAccount> accounts = createPollAccounts(transaction, - newPoll.getPollType(), lists); + newPoll.getType(), lists); newPoll.setPollAccount(accounts); } @@ -170,133 +181,92 @@ return newPoll; } - protected Poll createBasicPoll(TopiaContext transaction, Poll source) - throws TopiaException { + @Override + protected Poll executeUpdatePoll(TopiaContext transaction, + Poll poll) throws TopiaException { + PollDAO dao = PollenDAOHelper.getPollDAO(transaction); - PollAccountDAO accountDAO = - PollenDAOHelper.getPollAccountDAO(transaction); + // Updating a Poll : + // - TITLE + // - DESCRIPTION + // - BEGIN/END DATE + // - CHOICE_ADD_ALLOWED + // - BEGIN/END ADD CHOICE DATE + // - MAX_CHOICE_NB + // - CONTINUOUS_RESULTS + // - PUBLIC_RESULTS + // - ANONYMOUS_VOTE_ALLOWED - // Create newPoll and copy simple properties from poll source - Poll newPoll = dao.create(source.getUid()); + // Anonymous change is not supported (need to manage accounts) + // PollType change is not supported (need to manage accounts) + // VoteCounting change is not supported (need to manage existing votes) - // Copy all properties instead of Uid (already set at creation), - // Closed (not used in this case) and Creator (managed separately) - PollenBinderHelper.getSimpleTopiaBinder(Poll.class). - copyExcluding(source, newPoll, - Poll.PROPERTY_UID, - Poll.PROPERTY_CLOSED, - Poll.PROPERTY_CREATOR); + // Comments, Results, Choices and Accounts will not be updated here - // Create creator and set him to the poll - PollAccount creator = accountDAO.create(context.createPollenUrlId()); + // Update only for not started poll : + // - VOTE_COUNTING + // - CHOICE_TYPE + // - CHOICES - PollenBinderHelper.getSimpleTopiaBinder(PollAccount.class). - copy(source.getCreator(), creator, - PollAccount.PROPERTY_NAME, - PollAccount.PROPERTY_EMAIL, -// PollAccount.WEIGHT, - PollAccount.PROPERTY_ADMIN, - PollAccount.PROPERTY_USER_ACCOUNT); - accountDAO.update(creator); + Poll pollToUpdate = dao.findByTopiaId(poll.getTopiaId()); - newPoll.setCreator(creator); - return newPoll; - } + // Can't update a closed poll + if (pollToUpdate.isClosed()) { + // TODO-fdesbois-2011-07-13 : throw error + } - protected List<PollAccount> createPollAccounts(TopiaContext transaction, - PollType type, - Collection<ParticipantList> lists) - throws TopiaException, IllegalArgumentException { + TopiaEntityBinder<Poll> binder = PollenBinderHelper.getSimpleTopiaBinder(Poll.class); - List<PollAccount> results = new ArrayList<PollAccount>(); + // Idea, if we can use Embeddable object for Hibernate, Options will be a good use case + binder.copy(poll, pollToUpdate, + Poll.PROPERTY_TITLE, + Poll.PROPERTY_DESCRIPTION, + Poll.PROPERTY_BEGIN_DATE, + Poll.PROPERTY_END_DATE, + Poll.PROPERTY_ANONYMOUS_VOTE_ALLOWED, + Poll.PROPERTY_CHOICE_ADD_ALLOWED, + Poll.PROPERTY_BEGIN_CHOICE_DATE, + Poll.PROPERTY_END_CHOICE_DATE, + Poll.PROPERTY_CONTINUOUS_RESULTS, + Poll.PROPERTY_PUBLIC_RESULTS, + Poll.PROPERTY_MAX_CHOICE_NB + ); - PollAccountDAO accountDAO = - PollenDAOHelper.getPollAccountDAO(transaction); + // if not started + if (!pollToUpdate.isStarted()) { - switch (type) { - case RESTRICTED: - if (CollectionUtils.isEmpty(lists)) { - throw new IllegalArgumentException("lists can't be empty" + - " for restricted poll"); - } - // Create accounts only on first participant list - results = createPersonAccounts(accountDAO, - lists.iterator().next()); - break; - case GROUP: - if (CollectionUtils.isEmpty(lists)) { - throw new IllegalArgumentException("lists can't be empty" + - " for group poll"); - } + log.debug("Poll is not started, update voteCounting and choices"); - for (ParticipantList list : lists) { - // Create the accountList - PollAccount accountList = accountDAO.create( - context.createPollenUrlId()); - accountList.setList(true); - accountList.setName(list.getName()); + // Update voteCounting is simple when poll have no vote + pollToUpdate.setVoteCounting(poll.getVoteCounting()); - // Create account children - List<PollAccount> accounts = - createPersonAccounts(accountDAO, list); - accountList.setChild(accounts); + // Override choices if type has changed, otherwise the choice entity will automatically be updated + if (!pollToUpdate.getType().equals(poll.getChoiceType())) { + pollToUpdate.setChoiceType(poll.getChoiceType()); - // Add the accountList to the results - results.add(accountList); + ChoiceDAO choiceDAO = PollenDAOHelper.getChoiceDAO(transaction); + // Clear previous choices, will properly delete orphans + pollToUpdate.getChoice().clear(); + // Create new choices and add them to the poll + for (Choice choice : poll.getChoice()) { + Choice newChoice = pollToUpdate.addNewChoice(choice.getName(), choice.getDescription()); + choiceDAO.create(newChoice); } + } } - return results; - } - protected List<PollAccount> createPersonAccounts(PollAccountDAO dao, - ParticipantList list) - throws TopiaException { - - List<PollAccount> results = new ArrayList<PollAccount>(); - - for (Participant participant : list.getParticipants()) { - String accountUid = context.createPollenUrlId(); - PollAccount account = dao.create(accountUid); - account.setName(participant.getName()); - account.setEmail(participant.getEmail()); - account.setWeight(participant.getWeight()); - dao.update(account); - results.add(account); + // If continuous results is now activated, execute a voteCounting + if (!pollToUpdate.isContinuousResults() && poll.isContinuousResults()) { + // TODO-fdesbois-2011-07-13 : execute vote counting } - return results; - } - protected List<Choice> createPollChoices(TopiaContext transaction, - List<Choice> source) - throws TopiaException { - - ChoiceDAO dao = PollenDAOHelper.getChoiceDAO(transaction); - - List<Choice> results = new ArrayList<Choice>(); - - for (Choice choice : source) { - Choice newChoice = dao.create(); - PollenBinderHelper.getSimpleTopiaBinder(Choice.class). - copy(choice, newChoice); - results.add(newChoice); - } - return results; + Poll result = dao.update(pollToUpdate); + transaction.commitTransaction(); + return result; } @Override - protected void executeUpdatePoll(TopiaContext transaction, - Poll poll) throws TopiaException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - protected void executeSavePoll(TopiaContext transaction, Poll poll) - throws TopiaException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override protected void executeDeletePoll(TopiaContext transaction, Poll poll) throws TopiaException { @@ -310,11 +280,23 @@ @Override protected Choice executeGetNewChoice(Poll poll) { Choice newChoice = new ChoiceImpl(); - newChoice.setChoiceType(poll.getChoiceType()); + newChoice.setType(poll.getChoiceType()); return newChoice; } @Override + protected void executeSetPollClosed(TopiaContext transaction, Poll poll, boolean closed) throws Exception { + + PollDAO dao = PollenDAOHelper.getPollDAO(transaction); + + Poll pollToUpdate = dao.findByTopiaId(poll.getTopiaId()); + pollToUpdate.setClosed(closed); + + dao.update(pollToUpdate); + transaction.commitTransaction(); + } + + @Override protected Choice executeCreateChoice(TopiaContext transaction, Poll poll, Choice choice) throws TopiaException { @@ -324,7 +306,7 @@ Choice choiceCreated = dao.create( Choice.PROPERTY_NAME, choice.getName(), Choice.PROPERTY_DESCRIPTION, choice.getDescription(), - Choice.PROPERTY_TYPE, choice.getChoiceType() + Choice.PROPERTY_TYPE, choice.getType() ); PollDAO pollDAO = PollenDAOHelper.getPollDAO(transaction); @@ -334,7 +316,6 @@ pollToUpdate.addChoice(choiceCreated); pollDAO.update(pollToUpdate); - transaction.commitTransaction(); return choiceCreated; @@ -415,46 +396,11 @@ protected int executeGetNbTotalPolls(TopiaContext transaction) throws TopiaException { - int result = PollenDAOHelper.getPollDAO(transaction).count(); + Long result = PollenDAOHelper.getPollDAO(transaction).count(); - return result; + return result.intValue(); } - protected List<UserPoll> retrieveUserPolls(TopiaContext transaction, - TopiaQuery query) - throws TopiaException { - - List<UserPoll> results = new ArrayList<UserPoll>(); - - Map<String, UserPoll> pollsCache = - new HashMap<String, UserPoll>(); - - - List<Object[]> queryResults = transaction.findByQuery(query); - for (Object[] row : queryResults) { - Poll poll = (Poll) row[0]; - PollAccount account = (PollAccount) row[1]; - log.debug("account : " + account.getUid() + " : " + - account.getName() + - " list(" + account.isList() + ")" + - " admin(" + account.isAdmin() + ")" + - " for poll " + poll.getTitle()); - - UserPoll userPoll = pollsCache.get(poll.getTopiaId()); - - if (userPoll == null) { - userPoll = new UserPollImpl(); - userPoll.setPoll(poll); - results.add(userPoll); - pollsCache.put(poll.getTopiaId(), userPoll); - } - - userPoll.addAccount(account); - } - - return results; - } - @Override protected List<Comment> executeGetComments(TopiaContext transaction, EntityFilter filter) @@ -620,4 +566,155 @@ return result; } + protected Poll createBasicPoll(TopiaContext transaction, Poll source) + throws TopiaException { + PollDAO dao = PollenDAOHelper.getPollDAO(transaction); + + PollAccountDAO accountDAO = + PollenDAOHelper.getPollAccountDAO(transaction); + + // Create newPoll and copy simple properties from poll source + Poll newPoll = dao.create(source.getUid()); + + // Copy all properties instead of Uid (already set at creation), + // Closed (not used in this case) and Creator (managed separately) + PollenBinderHelper.getSimpleTopiaBinder(Poll.class). + copyExcluding(source, newPoll, + Poll.PROPERTY_UID, + Poll.PROPERTY_CLOSED, + Poll.PROPERTY_CREATOR); + + // Create creator and set him to the poll + PollAccount creator = accountDAO.create(context.createPollenUrlId()); + + PollenBinderHelper.getSimpleTopiaBinder(PollAccount.class). + copy(source.getCreator(), creator, + PollAccount.PROPERTY_NAME, + PollAccount.PROPERTY_EMAIL, +// PollAccount.WEIGHT, + PollAccount.PROPERTY_ADMIN, + PollAccount.PROPERTY_USER_ACCOUNT); + accountDAO.update(creator); + + newPoll.setCreator(creator); + return newPoll; + } + + protected List<PollAccount> createPollAccounts(TopiaContext transaction, + PollType type, + Collection<ParticipantList> lists) + throws TopiaException, IllegalArgumentException { + + List<PollAccount> results = new ArrayList<PollAccount>(); + + PollAccountDAO accountDAO = + PollenDAOHelper.getPollAccountDAO(transaction); + + switch (type) { + case RESTRICTED: + if (CollectionUtils.isEmpty(lists)) { + throw new IllegalArgumentException("lists can't be empty" + + " for restricted poll"); + } + // Create accounts only on first participant list + results = createPersonAccounts(accountDAO, + lists.iterator().next()); + break; + case GROUP: + if (CollectionUtils.isEmpty(lists)) { + throw new IllegalArgumentException("lists can't be empty" + + " for group poll"); + } + + for (ParticipantList list : lists) { + // Create the accountList + PollAccount accountList = accountDAO.create( + context.createPollenUrlId()); + accountList.setList(true); + accountList.setName(list.getName()); + + // Create account children + List<PollAccount> accounts = + createPersonAccounts(accountDAO, list); + accountList.setChild(accounts); + + // Add the accountList to the results + results.add(accountList); + } + } + return results; + } + + protected List<PollAccount> createPersonAccounts(PollAccountDAO dao, + ParticipantList list) + throws TopiaException { + + List<PollAccount> results = new ArrayList<PollAccount>(); + + for (Participant participant : list.getParticipants()) { + String accountUid = context.createPollenUrlId(); + PollAccount account = dao.create(accountUid); + account.setName(participant.getName()); + account.setEmail(participant.getEmail()); + account.setWeight(participant.getWeight()); + dao.update(account); + results.add(account); + } + return results; + } + + protected List<Choice> createPollChoices(TopiaContext transaction, + List<Choice> source) + throws TopiaException { + + ChoiceDAO dao = PollenDAOHelper.getChoiceDAO(transaction); + + List<Choice> results = new ArrayList<Choice>(); + + for (Choice choice : source) { + Choice newChoice = dao.create(); + PollenBinderHelper.getSimpleTopiaBinder(Choice.class). + copy(choice, newChoice); + results.add(newChoice); + } + return results; + } + + protected List<UserPoll> retrieveUserPolls(TopiaContext transaction, + TopiaQuery query) + throws TopiaException { + + List<UserPoll> results = new ArrayList<UserPoll>(); + + Map<String, UserPoll> pollsCache = + new HashMap<String, UserPoll>(); + + + List<Object[]> queryResults = transaction.findByQuery(query); + for (Object[] row : queryResults) { + Poll poll = (Poll) row[0]; + PollAccount account = (PollAccount) row[1]; + if (log.isDebugEnabled()) { + log.debug("account : " + account.getUid() + " : " + + account.getName() + + " list(" + account.isList() + ")" + + " admin(" + account.isAdmin() + ")" + + " for poll " + poll.getTitle()); + } + + UserPoll userPoll = pollsCache.get(poll.getTopiaId()); + + if (userPoll == null) { + userPoll = new UserPollImpl(); + userPoll.setPoll(poll); + results.add(userPoll); + pollsCache.put(poll.getTopiaId(), userPoll); + } + + userPoll.addAccount(account); + } + + return results; + } + } Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceUserImpl.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -294,9 +294,9 @@ UserAccountDAO dao = PollenDAOHelper.getUserAccountDAO(transaction); - int result = dao.count(); + Long result = dao.count(); - return result; + return result.intValue(); } Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServiceVoteImpl.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -135,7 +135,7 @@ // Creator can't vote } else if (poll.getCreator().equals(participant)) { return false; - } else if (poll.getPollType().isRestrictedOrGroup()) { + } else if (poll.getType().isRestrictedOrGroup()) { if (log.isInfoEnabled()) { log.info("Poll is restricted... Participant need to be identified"); } @@ -245,7 +245,7 @@ // For free poll, delete the participant // For other types, delete all votes and set voteDate to null - if (poll.getPollType().isFree()) { + if (poll.getType().isFree()) { PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction); @@ -254,7 +254,7 @@ dao.delete(participantToDelete); - } else if (poll.getPollType().isRestrictedOrGroup()) { + } else if (poll.getType().isRestrictedOrGroup()) { PollAccountDAO dao = PollenDAOHelper.getPollAccountDAO(transaction); Deleted: trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties =================================================================== --- trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-business/src/main/resources/i18n/pollen-business-en_GB.properties 2011-09-25 21:52:20 UTC (rev 3079) @@ -1,118 +0,0 @@ -pollen.error.context.close= -pollen.error.context.getRootContext= -pollen.error.context.parse= -pollen.error.context.rollback= -pollen.error.context.start= -pollen.error.context.stop= -pollen.error.encodePassword= -pollen.error.serviceEmail.getNewEmail= -pollen.error.serviceEmail.sendEmail= -pollen.error.serviceFavorite.createFavoriteList= -pollen.error.serviceFavorite.createFavoriteParticipant= -pollen.error.serviceFavorite.deleteFavoriteList= -pollen.error.serviceFavorite.deleteFavoriteParticipant= -pollen.error.serviceFavorite.getFavoriteLists= -pollen.error.serviceFavorite.getFavoriteParticipant= -pollen.error.serviceFavorite.getFavoriteParticipants= -pollen.error.serviceFavorite.getNbFavoriteParticipants= -pollen.error.serviceFavorite.getNewFavoriteList= -pollen.error.serviceFavorite.getNewFavoriteParticipant= -pollen.error.serviceFavorite.updateFavoriteParticipant= -pollen.error.serviceList.createAccountForPersonList= -pollen.error.serviceList.deleteAccountFromPersonList= -pollen.error.serviceMail.sendEmail= -pollen.error.servicePoll.addComment= -pollen.error.servicePoll.canAdminPoll= -pollen.error.servicePoll.createChoice= -pollen.error.servicePoll.createComment= -pollen.error.servicePoll.createPoll= -pollen.error.servicePoll.createUpdateVote= -pollen.error.servicePoll.delete= -pollen.error.servicePoll.deleteChoice= -pollen.error.servicePoll.deleteComment= -pollen.error.servicePoll.deletePoll= -pollen.error.servicePoll.deleteVote= -pollen.error.servicePoll.getAllPolls= -pollen.error.servicePoll.getComments= -pollen.error.servicePoll.getNbComments= -pollen.error.servicePoll.getNbPollsByUser= -pollen.error.servicePoll.getNbTotalPolls= -pollen.error.servicePoll.getNewChoice= -pollen.error.servicePoll.getNewComment= -pollen.error.servicePoll.getNewPoll= -pollen.error.servicePoll.getNewPollList= -pollen.error.servicePoll.getNewPollParticipant= -pollen.error.servicePoll.getPoll= -pollen.error.servicePoll.getPollForResults= -pollen.error.servicePoll.getPollForUpdate= -pollen.error.servicePoll.getPollForVote= -pollen.error.servicePoll.getPolls= -pollen.error.servicePoll.getPollsByUser= -pollen.error.servicePoll.getRestrictedAccount=Unable to retrieve restricted account with accountUid \= %1$s and poll with uid \= %2$s -pollen.error.servicePoll.getRunningPolls= -pollen.error.servicePoll.getVotes= -pollen.error.servicePoll.savePoll= -pollen.error.servicePoll.updatePoll= -pollen.error.serviceResults.importPoll= -pollen.error.serviceUser.connect= -pollen.error.serviceUser.createDefaultAdmin= -pollen.error.serviceUser.createFavoriteList= -pollen.error.serviceUser.createFavoriteParticipant= -pollen.error.serviceUser.createList= -pollen.error.serviceUser.createUpdateList= -pollen.error.serviceUser.createUpdateUser= -pollen.error.serviceUser.createUser= -pollen.error.serviceUser.deleteFavoriteList= -pollen.error.serviceUser.deleteFavoriteParticipant= -pollen.error.serviceUser.deleteList= -pollen.error.serviceUser.deleteUser= -pollen.error.serviceUser.getAccounts= -pollen.error.serviceUser.getFavoriteLists= -pollen.error.serviceUser.getFavoriteParticipants= -pollen.error.serviceUser.getNbAccounts= -pollen.error.serviceUser.getNbFavoriteParticipants= -pollen.error.serviceUser.getNbUsers= -pollen.error.serviceUser.getNewAccount= -pollen.error.serviceUser.getNewFavoriteList= -pollen.error.serviceUser.getNewFavoriteParticipant= -pollen.error.serviceUser.getNewList= -pollen.error.serviceUser.getNewPerson= -pollen.error.serviceUser.getNewUser= -pollen.error.serviceUser.getPerson= -pollen.error.serviceUser.getUsers= -pollen.error.serviceUser.updateFavoriteParticipant= -pollen.error.serviceUser.updateUser= -pollen.error.serviceVote.canVote= -pollen.error.serviceVote.deleteVote= -pollen.error.serviceVote.findPollAccount= -pollen.error.serviceVote.getNbVotes= -pollen.error.serviceVote.getNewPollAccount= -pollen.error.serviceVote.getNewVote= -pollen.error.serviceVote.getPollAccount= -pollen.error.serviceVote.getVote= -pollen.error.serviceVote.getVotes= -pollen.error.serviceVote.getVotesByPoll=Unable to load votes from poll with uid \= %1$s -pollen.error.serviceVote.hasAlreadyVoted=Unable test vote existing for account with votingId \= %1$s and poll with uid \= %2$s -pollen.error.serviceVote.saveVote= -pollen.exception.favorite_list_name_exist= -pollen.exception.favorite_participant_exist= -pollen.exception.favorite_participant_exist_without_email= -pollen.exception.load_configuration= -pollen.exception.participant_doubloons= -pollen.exception.participant_exist= -pollen.exception.participant_exist_without_email= -pollen.exception.poll_exist= -pollen.exception.poll_not_exist=No such poll exists. Please make sure that you are using the correct link and copy it completely into your browser's address field. -pollen.exception.smtp_not_available= -pollen.exception.user_email_exist= -pollen.exception.user_login_exist= -pollen.exception.user_not_exist= -pollen.exception.user_wrong_password= -pollen.exception.vote_doubloon= -pollen.exception.vote_not_allowed= -pollen.info.admin.created=Super admin was created with login %1$s -pollen.info.admin.exists=Super admin already exists -pollen.info.start=Start Pollen -pollen.info.started=Pollen is started \! -pollen.info.stop=Stop Pollen -pollen.text.empty= Deleted: trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties =================================================================== --- trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-business/src/main/resources/i18n/pollen-business-fr_FR.properties 2011-09-25 21:52:20 UTC (rev 3079) @@ -1,114 +0,0 @@ -pollen.error.context.close=Erreur lors de la fermeture de la transaction -pollen.error.context.getRootContext=Erreur lors de la r\u00E9cup\u00E9ration du contexte principale -pollen.error.context.parse=Erreur lors du parse du fichier de configuration %1$s -pollen.error.context.rollback=Erreur lors de l'annulation de la transaction -pollen.error.context.start=Erreur lors du d\u00E9marrage de l'application -pollen.error.context.stop=Erreur lors de l'arr\u00EAt de l'application -pollen.error.encodePassword= -pollen.error.serviceEmail.getNewEmail= -pollen.error.serviceEmail.sendEmail= -pollen.error.serviceFavorite.createFavoriteList= -pollen.error.serviceFavorite.createFavoriteParticipant= -pollen.error.serviceFavorite.deleteFavoriteList= -pollen.error.serviceFavorite.deleteFavoriteParticipant= -pollen.error.serviceFavorite.getFavoriteLists= -pollen.error.serviceFavorite.getFavoriteParticipant= -pollen.error.serviceFavorite.getFavoriteParticipants= -pollen.error.serviceFavorite.getNbFavoriteParticipants= -pollen.error.serviceFavorite.getNewFavoriteList= -pollen.error.serviceFavorite.getNewFavoriteParticipant= -pollen.error.serviceFavorite.updateFavoriteParticipant= -pollen.error.serviceList.createAccountForPersonList= -pollen.error.serviceList.deleteAccountFromPersonList= -pollen.error.serviceMail.sendEmail=Erreur lors de l'envoi de l'email sur le serveur %1$s\:%2$d pour %3$s de la part de %4$s -pollen.error.servicePoll.addComment=Impossible d'ajouter un nouveau commentaire cr\u00E9\u00E9 par %1$s pour le sondage %2$s (%3$s) -pollen.error.servicePoll.canAdminPoll= -pollen.error.servicePoll.createChoice= -pollen.error.servicePoll.createComment= -pollen.error.servicePoll.createPoll=Impossible d'enregistrer le sondage %1$s cr\u00E9\u00E9 par %2$s -pollen.error.servicePoll.createUpdateVote= -pollen.error.servicePoll.deleteChoice= -pollen.error.servicePoll.deleteComment=Impossible de supprimer le commentaire ayant pour identifiant "%1$s", appartenenant au sondage %2$s (%3$s) -pollen.error.servicePoll.deletePoll=Impossible de supprimer le sondage ayant pou identifiant "%1$s" -pollen.error.servicePoll.deleteVote= -pollen.error.servicePoll.getAllPolls= -pollen.error.servicePoll.getComments= -pollen.error.servicePoll.getNbComments= -pollen.error.servicePoll.getNbPollsByUser= -pollen.error.servicePoll.getNbTotalPolls= -pollen.error.servicePoll.getNewChoice= -pollen.error.servicePoll.getNewComment= -pollen.error.servicePoll.getNewPoll= -pollen.error.servicePoll.getNewPollList= -pollen.error.servicePoll.getNewPollParticipant= -pollen.error.servicePoll.getPoll= -pollen.error.servicePoll.getPollForResults= -pollen.error.servicePoll.getPollForUpdate= -pollen.error.servicePoll.getPollForVote= -pollen.error.servicePoll.getPolls= -pollen.error.servicePoll.getPollsByUser= -pollen.error.servicePoll.getRestrictedAccount=Unable to retrieve restricted account with accountUid \= %1$s and poll with uid \= %2$s -pollen.error.servicePoll.getRunningPolls= -pollen.error.servicePoll.getVotes= -pollen.error.servicePoll.savePoll= -pollen.error.servicePoll.updatePoll=Impossible de mettre \u00E0 jour le sondage %1$s (%2$s) -pollen.error.serviceResults.importPoll= -pollen.error.serviceUser.connect=Impossible d'\u00E9tablir la connexion pour l'identifiant %1$s et le mot de passe encod\u00E9 %2$s -pollen.error.serviceUser.createDefaultAdmin=Impossible de cr\u00E9er l'administrateur par d\u00E9faut \: %1$s (%2$s) -pollen.error.serviceUser.createFavoriteList= -pollen.error.serviceUser.createFavoriteParticipant= -pollen.error.serviceUser.createList= -pollen.error.serviceUser.createUpdateList= -pollen.error.serviceUser.createUpdateUser=Impossible de cr\u00E9er l'utilisateur '%1$s' <%2$s> (admin \= %$3b) -pollen.error.serviceUser.createUser= -pollen.error.serviceUser.deleteFavoriteList= -pollen.error.serviceUser.deleteFavoriteParticipant= -pollen.error.serviceUser.deleteList= -pollen.error.serviceUser.deleteUser= -pollen.error.serviceUser.getAccounts= -pollen.error.serviceUser.getFavoriteLists= -pollen.error.serviceUser.getFavoriteParticipants= -pollen.error.serviceUser.getNbAccounts= -pollen.error.serviceUser.getNbFavoriteParticipants= -pollen.error.serviceUser.getNbUsers= -pollen.error.serviceUser.getNewAccount= -pollen.error.serviceUser.getNewFavoriteList= -pollen.error.serviceUser.getNewFavoriteParticipant= -pollen.error.serviceUser.getNewList= -pollen.error.serviceUser.getNewPerson= -pollen.error.serviceUser.getNewUser=Impossible d'instancier un nouvel utilisateur. -pollen.error.serviceUser.getPerson= -pollen.error.serviceUser.getUsers= -pollen.error.serviceUser.updateFavoriteParticipant= -pollen.error.serviceUser.updateUser= -pollen.error.serviceVote.canVote= -pollen.error.serviceVote.deleteVote= -pollen.error.serviceVote.findPollAccount= -pollen.error.serviceVote.getNbVotes= -pollen.error.serviceVote.getNewPollAccount= -pollen.error.serviceVote.getNewVote= -pollen.error.serviceVote.getPollAccount= -pollen.error.serviceVote.getVote= -pollen.error.serviceVote.getVotes= -pollen.error.serviceVote.getVotesByPoll= -pollen.error.serviceVote.hasAlreadyVoted= -pollen.error.serviceVote.saveVote= -pollen.exception.favorite_list_name_exist=La liste %1$s existe d\u00E9j\u00E0 pour l'utilisateur %2$s -pollen.exception.load_configuration=La configuration n'a pas \u00E9t\u00E9 charg\u00E9e correctement \! Veuillez v\u00E9rifier le d\u00E9marrage de l'application. -pollen.exception.participant_doubloons=Les doublons de la liste %1$s ont \u00E9t\u00E9 ignor\u00E9s \: %2$s -pollen.exception.participant_exist=La liste %1$s contient d\u00E9j\u00E0 un votant nomm\u00E9 %2$s avec un email %3$s -pollen.exception.participant_exist_without_email=La liste %1$s contient d\u00E9j\u00E0 un votant nomm\u00E9 %2$s avec aucun email -pollen.exception.poll_exist= -pollen.exception.poll_not_exist=Il n'y a pas de sondage \u00E0 cette adresse. Veuillez verifier que vous utilisez le lien correcte et copiez-le compl\u00E8tement dans le champ d'adresse de votre navigateur. -pollen.exception.smtp_not_available=Impossible d'envoyer un email \u00E0 %1$s. Serveur smtp indisponible pour l'envoi d'email, veuillez contacter un administrateur. -pollen.exception.user_email_exist=Un utilisateur est d\u00E9j\u00E0 enregistr\u00E9 avec cet email. -pollen.exception.user_login_exist=Un utilisateur est d\u00E9j\u00E0 enregistr\u00E9 avec cet identifiant. -pollen.exception.user_not_exist=L'identifiant '%1$s' ne correspond \u00E0 aucun utilisateur connu. -pollen.exception.user_wrong_password=Le mot de passe renseign\u00E9 est incorrect pour l'utilisateur '%1$s'. -pollen.exception.vote_doubloon= -pollen.exception.vote_not_allowed= -pollen.info.admin.created=Le super admin a \u00E9t\u00E9 cr\u00E9\u00E9 avec l'identifiant %1$s. -pollen.info.admin.exists=Le super admin existe d\u00E9j\u00E0 -pollen.info.start=D\u00E9marrage de Pollen... -pollen.info.started=Pollen a \u00E9t\u00E9 d\u00E9marr\u00E9 avec succ\u00E8s \! -pollen.info.stop=Arr\u00EAt de Pollen Added: trunk/pollen-business/src/main/resources/i18n/pollen-business_en_GB.properties =================================================================== --- trunk/pollen-business/src/main/resources/i18n/pollen-business_en_GB.properties (rev 0) +++ trunk/pollen-business/src/main/resources/i18n/pollen-business_en_GB.properties 2011-09-25 21:52:20 UTC (rev 3079) @@ -0,0 +1,119 @@ +pollen.error.context.close= +pollen.error.context.getRootContext= +pollen.error.context.parse= +pollen.error.context.rollback= +pollen.error.context.start= +pollen.error.context.stop= +pollen.error.encodePassword= +pollen.error.serviceEmail.getNewEmail= +pollen.error.serviceEmail.sendEmail= +pollen.error.serviceFavorite.createFavoriteList= +pollen.error.serviceFavorite.createFavoriteParticipant= +pollen.error.serviceFavorite.deleteFavoriteList= +pollen.error.serviceFavorite.deleteFavoriteParticipant= +pollen.error.serviceFavorite.getFavoriteLists= +pollen.error.serviceFavorite.getFavoriteParticipant= +pollen.error.serviceFavorite.getFavoriteParticipants= +pollen.error.serviceFavorite.getNbFavoriteParticipants= +pollen.error.serviceFavorite.getNewFavoriteList= +pollen.error.serviceFavorite.getNewFavoriteParticipant= +pollen.error.serviceFavorite.updateFavoriteParticipant= +pollen.error.serviceList.createAccountForPersonList= +pollen.error.serviceList.deleteAccountFromPersonList= +pollen.error.serviceMail.sendEmail= +pollen.error.servicePoll.addComment= +pollen.error.servicePoll.canAdminPoll= +pollen.error.servicePoll.createChoice= +pollen.error.servicePoll.createComment= +pollen.error.servicePoll.createPoll= +pollen.error.servicePoll.createUpdateVote= +pollen.error.servicePoll.delete= +pollen.error.servicePoll.deleteChoice= +pollen.error.servicePoll.deleteComment= +pollen.error.servicePoll.deletePoll= +pollen.error.servicePoll.deleteVote= +pollen.error.servicePoll.getAllPolls= +pollen.error.servicePoll.getComments= +pollen.error.servicePoll.getNbComments= +pollen.error.servicePoll.getNbPollsByUser= +pollen.error.servicePoll.getNbTotalPolls= +pollen.error.servicePoll.getNewChoice= +pollen.error.servicePoll.getNewComment= +pollen.error.servicePoll.getNewPoll= +pollen.error.servicePoll.getNewPollList= +pollen.error.servicePoll.getNewPollParticipant= +pollen.error.servicePoll.getPoll= +pollen.error.servicePoll.getPollForResults= +pollen.error.servicePoll.getPollForUpdate= +pollen.error.servicePoll.getPollForVote= +pollen.error.servicePoll.getPolls= +pollen.error.servicePoll.getPollsByUser= +pollen.error.servicePoll.getRestrictedAccount=Unable to retrieve restricted account with accountUid \= %1$s and poll with uid \= %2$s +pollen.error.servicePoll.getRunningPolls= +pollen.error.servicePoll.getVotes= +pollen.error.servicePoll.savePoll= +pollen.error.servicePoll.setPollClosed= +pollen.error.servicePoll.updatePoll= +pollen.error.serviceResults.importPoll= +pollen.error.serviceUser.connect= +pollen.error.serviceUser.createDefaultAdmin= +pollen.error.serviceUser.createFavoriteList= +pollen.error.serviceUser.createFavoriteParticipant= +pollen.error.serviceUser.createList= +pollen.error.serviceUser.createUpdateList= +pollen.error.serviceUser.createUpdateUser= +pollen.error.serviceUser.createUser= +pollen.error.serviceUser.deleteFavoriteList= +pollen.error.serviceUser.deleteFavoriteParticipant= +pollen.error.serviceUser.deleteList= +pollen.error.serviceUser.deleteUser= +pollen.error.serviceUser.getAccounts= +pollen.error.serviceUser.getFavoriteLists= +pollen.error.serviceUser.getFavoriteParticipants= +pollen.error.serviceUser.getNbAccounts= +pollen.error.serviceUser.getNbFavoriteParticipants= +pollen.error.serviceUser.getNbUsers= +pollen.error.serviceUser.getNewAccount= +pollen.error.serviceUser.getNewFavoriteList= +pollen.error.serviceUser.getNewFavoriteParticipant= +pollen.error.serviceUser.getNewList= +pollen.error.serviceUser.getNewPerson= +pollen.error.serviceUser.getNewUser= +pollen.error.serviceUser.getPerson= +pollen.error.serviceUser.getUsers= +pollen.error.serviceUser.updateFavoriteParticipant= +pollen.error.serviceUser.updateUser= +pollen.error.serviceVote.canVote= +pollen.error.serviceVote.deleteVote= +pollen.error.serviceVote.findPollAccount= +pollen.error.serviceVote.getNbVotes= +pollen.error.serviceVote.getNewPollAccount= +pollen.error.serviceVote.getNewVote= +pollen.error.serviceVote.getPollAccount= +pollen.error.serviceVote.getVote= +pollen.error.serviceVote.getVotes= +pollen.error.serviceVote.getVotesByPoll=Unable to load votes from poll with uid \= %1$s +pollen.error.serviceVote.hasAlreadyVoted=Unable test vote existing for account with votingId \= %1$s and poll with uid \= %2$s +pollen.error.serviceVote.saveVote= +pollen.exception.favorite_list_name_exist= +pollen.exception.favorite_participant_exist= +pollen.exception.favorite_participant_exist_without_email= +pollen.exception.load_configuration= +pollen.exception.participant_doubloons= +pollen.exception.participant_exist= +pollen.exception.participant_exist_without_email= +pollen.exception.poll_exist= +pollen.exception.poll_not_exist=No such poll exists. Please make sure that you are using the correct link and copy it completely into your browser's address field. +pollen.exception.smtp_not_available= +pollen.exception.user_email_exist= +pollen.exception.user_login_exist= +pollen.exception.user_not_exist= +pollen.exception.user_wrong_password= +pollen.exception.vote_doubloon= +pollen.exception.vote_not_allowed= +pollen.info.admin.created=Super admin was created with login %1$s +pollen.info.admin.exists=Super admin already exists +pollen.info.start=Start Pollen +pollen.info.started=Pollen is started \! +pollen.info.stop=Stop Pollen +pollen.text.empty= Added: trunk/pollen-business/src/main/resources/i18n/pollen-business_fr_FR.properties =================================================================== --- trunk/pollen-business/src/main/resources/i18n/pollen-business_fr_FR.properties (rev 0) +++ trunk/pollen-business/src/main/resources/i18n/pollen-business_fr_FR.properties 2011-09-25 21:52:20 UTC (rev 3079) @@ -0,0 +1,115 @@ +pollen.error.context.close=Erreur lors de la fermeture de la transaction +pollen.error.context.getRootContext=Erreur lors de la récupération du contexte principale +pollen.error.context.parse=Erreur lors du parse du fichier de configuration %1$s +pollen.error.context.rollback=Erreur lors de l'annulation de la transaction +pollen.error.context.start=Erreur lors du démarrage de l'application +pollen.error.context.stop=Erreur lors de l'arrêt de l'application +pollen.error.encodePassword= +pollen.error.serviceEmail.getNewEmail= +pollen.error.serviceEmail.sendEmail= +pollen.error.serviceFavorite.createFavoriteList= +pollen.error.serviceFavorite.createFavoriteParticipant= +pollen.error.serviceFavorite.deleteFavoriteList= +pollen.error.serviceFavorite.deleteFavoriteParticipant= +pollen.error.serviceFavorite.getFavoriteLists= +pollen.error.serviceFavorite.getFavoriteParticipant= +pollen.error.serviceFavorite.getFavoriteParticipants= +pollen.error.serviceFavorite.getNbFavoriteParticipants= +pollen.error.serviceFavorite.getNewFavoriteList= +pollen.error.serviceFavorite.getNewFavoriteParticipant= +pollen.error.serviceFavorite.updateFavoriteParticipant= +pollen.error.serviceList.createAccountForPersonList= +pollen.error.serviceList.deleteAccountFromPersonList= +pollen.error.serviceMail.sendEmail=Erreur lors de l'envoi de l'email sur le serveur %1$s\:%2$d pour %3$s de la part de %4$s +pollen.error.servicePoll.addComment=Impossible d'ajouter un nouveau commentaire créé par %1$s pour le sondage %2$s (%3$s) +pollen.error.servicePoll.canAdminPoll= +pollen.error.servicePoll.createChoice= +pollen.error.servicePoll.createComment= +pollen.error.servicePoll.createPoll=Impossible d'enregistrer le sondage %1$s créé par %2$s +pollen.error.servicePoll.createUpdateVote= +pollen.error.servicePoll.deleteChoice= +pollen.error.servicePoll.deleteComment=Impossible de supprimer le commentaire ayant pour identifiant "%1$s", appartenenant au sondage %2$s (%3$s) +pollen.error.servicePoll.deletePoll=Impossible de supprimer le sondage ayant pou identifiant "%1$s" +pollen.error.servicePoll.deleteVote= +pollen.error.servicePoll.getAllPolls= +pollen.error.servicePoll.getComments= +pollen.error.servicePoll.getNbComments= +pollen.error.servicePoll.getNbPollsByUser= +pollen.error.servicePoll.getNbTotalPolls= +pollen.error.servicePoll.getNewChoice= +pollen.error.servicePoll.getNewComment= +pollen.error.servicePoll.getNewPoll= +pollen.error.servicePoll.getNewPollList= +pollen.error.servicePoll.getNewPollParticipant= +pollen.error.servicePoll.getPoll= +pollen.error.servicePoll.getPollForResults= +pollen.error.servicePoll.getPollForUpdate= +pollen.error.servicePoll.getPollForVote= +pollen.error.servicePoll.getPolls= +pollen.error.servicePoll.getPollsByUser= +pollen.error.servicePoll.getRestrictedAccount=Unable to retrieve restricted account with accountUid \= %1$s and poll with uid \= %2$s +pollen.error.servicePoll.getRunningPolls= +pollen.error.servicePoll.getVotes= +pollen.error.servicePoll.savePoll= +pollen.error.servicePoll.setPollClosed= +pollen.error.servicePoll.updatePoll=Impossible de mettre à jour le sondage %1$s (%2$s) +pollen.error.serviceResults.importPoll= +pollen.error.serviceUser.connect=Impossible d'établir la connexion pour l'identifiant %1$s et le mot de passe encodé %2$s +pollen.error.serviceUser.createDefaultAdmin=Impossible de créer l'administrateur par défaut \: %1$s (%2$s) +pollen.error.serviceUser.createFavoriteList= +pollen.error.serviceUser.createFavoriteParticipant= +pollen.error.serviceUser.createList= +pollen.error.serviceUser.createUpdateList= +pollen.error.serviceUser.createUpdateUser=Impossible de créer l'utilisateur '%1$s' <%2$s> (admin \= %$3b) +pollen.error.serviceUser.createUser= +pollen.error.serviceUser.deleteFavoriteList= +pollen.error.serviceUser.deleteFavoriteParticipant= +pollen.error.serviceUser.deleteList= +pollen.error.serviceUser.deleteUser= +pollen.error.serviceUser.getAccounts= +pollen.error.serviceUser.getFavoriteLists= +pollen.error.serviceUser.getFavoriteParticipants= +pollen.error.serviceUser.getNbAccounts= +pollen.error.serviceUser.getNbFavoriteParticipants= +pollen.error.serviceUser.getNbUsers= +pollen.error.serviceUser.getNewAccount= +pollen.error.serviceUser.getNewFavoriteList= +pollen.error.serviceUser.getNewFavoriteParticipant= +pollen.error.serviceUser.getNewList= +pollen.error.serviceUser.getNewPerson= +pollen.error.serviceUser.getNewUser=Impossible d'instancier un nouvel utilisateur. +pollen.error.serviceUser.getPerson= +pollen.error.serviceUser.getUsers= +pollen.error.serviceUser.updateFavoriteParticipant= +pollen.error.serviceUser.updateUser= +pollen.error.serviceVote.canVote= +pollen.error.serviceVote.deleteVote= +pollen.error.serviceVote.findPollAccount= +pollen.error.serviceVote.getNbVotes= +pollen.error.serviceVote.getNewPollAccount= +pollen.error.serviceVote.getNewVote= +pollen.error.serviceVote.getPollAccount= +pollen.error.serviceVote.getVote= +pollen.error.serviceVote.getVotes= +pollen.error.serviceVote.getVotesByPoll= +pollen.error.serviceVote.hasAlreadyVoted= +pollen.error.serviceVote.saveVote= +pollen.exception.favorite_list_name_exist=La liste %1$s existe déjà pour l'utilisateur %2$s +pollen.exception.load_configuration=La configuration n'a pas été chargée correctement \! Veuillez vérifier le démarrage de l'application. +pollen.exception.participant_doubloons=Les doublons de la liste %1$s ont été ignorés \: %2$s +pollen.exception.participant_exist=La liste %1$s contient déjà un votant nommé %2$s avec un email %3$s +pollen.exception.participant_exist_without_email=La liste %1$s contient déjà un votant nommé %2$s avec aucun email +pollen.exception.poll_exist= +pollen.exception.poll_not_exist=Il n'y a pas de sondage à cette adresse. Veuillez verifier que vous utilisez le lien correcte et copiez-le complètement dans le champ d'adresse de votre navigateur. +pollen.exception.smtp_not_available=Impossible d'envoyer un email à %1$s. Serveur smtp indisponible pour l'envoi d'email, veuillez contacter un administrateur. +pollen.exception.user_email_exist=Un utilisateur est déjà enregistré avec cet email. +pollen.exception.user_login_exist=Un utilisateur est déjà enregistré avec cet identifiant. +pollen.exception.user_not_exist=L'identifiant '%1$s' ne correspond à aucun utilisateur connu. +pollen.exception.user_wrong_password=Le mot de passe renseigné est incorrect pour l'utilisateur '%1$s'. +pollen.exception.vote_doubloon= +pollen.exception.vote_not_allowed= +pollen.info.admin.created=Le super admin a été créé avec l'identifiant %1$s. +pollen.info.admin.exists=Le super admin existe déjà +pollen.info.start=Démarrage de Pollen... +pollen.info.started=Pollen a été démarré avec succès \! +pollen.info.stop=Arrêt de Pollen Modified: trunk/pollen-business/src/main/xmi/pollen.zargo =================================================================== (Binary files differ) Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java =================================================================== --- trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -23,6 +23,7 @@ */ package org.chorem.pollen.service; +import org.apache.commons.lang.time.DateUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.pollen.PollenBusinessException; @@ -32,6 +33,7 @@ import org.chorem.pollen.common.PollType; import org.chorem.pollen.common.VoteCountingType; import org.chorem.pollen.entity.Choice; +import org.chorem.pollen.entity.ChoiceDAO; import org.chorem.pollen.entity.FavoriteList; import org.chorem.pollen.entity.Participant; import org.chorem.pollen.entity.ParticipantList; @@ -49,8 +51,12 @@ import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.EntityFilter; +import javax.swing.event.ListSelectionEvent; import java.util.ArrayList; +import java.util.Calendar; import java.util.Collection; +import java.util.Date; +import java.util.GregorianCalendar; import java.util.List; /** @@ -73,8 +79,7 @@ private Poll poll; - //@Before - + @Override public void init() throws Exception { // Initialize service and default user getServicePoll(); @@ -124,13 +129,73 @@ } @Test + public void testUpdatePollNotStartedWithChoice() throws PollenBusinessException, TopiaException { + + // ---- PREPARE DATA ---- // + + // Prepare restricted Poll with 3 choices + poll.setType(PollType.RESTRICTED); + List<ParticipantList> participantLists = new ArrayList<ParticipantList>(); + participantLists.add(list1); + // begin in 3 days + Date beginDate = DateUtils.addDays(context.getCurrentDate(), 3); + poll.setBeginDate(beginDate); + poll.setChoiceType(ChoiceType.TEXT); + poll.addNewChoice("choice1", null); + poll.addNewChoice("choice2", "desc2"); + poll.addNewChoice("choice3", "desc3"); + + Poll pollCreated = servicePoll.createPoll(poll, participantLists); + // Ensure not started and not closed + Assert.assertFalse(pollCreated.isStarted()); + Assert.assertFalse(pollCreated.isClosed()); + + // Update Choices + pollCreated.setChoiceType(ChoiceType.DATE); + // Reset previous List + pollCreated.setChoice(null); + pollCreated.addNewChoice("choiceDate1", null); + pollCreated.addNewChoice("choiceDate2", null); + pollCreated.addNewChoice("choiceDate3", null); + + // ---- EXECUTE #1 : override choices ---- // + + Poll result = servicePoll.updatePoll(pollCreated); + // Changing type is efficient + Assert.assertEquals(ChoiceType.DATE, result.getChoiceType()); + + // ---- CHECK RESULT ---- // + + TopiaContext transaction = beginTransaction(); + try { + ChoiceDAO choiceDAO = PollenDAOHelper.getChoiceDAO(transaction); + + // This assume that only 3 choices exist, previous ones have been deleted + long nbChoices = choiceDAO.count(); + Assert.assertEquals(3, nbChoices); + } finally { + transaction.closeContext(); + } + + // ---- EXECUTE #2 : update existing choice name ---- // + + Choice choiceDate1 = result.getChoice().get(0); + choiceDate1.setName("changeChoice"); + result = servicePoll.updatePoll(result); + + // ---- CHECK RESULT ---- // + + Assert.assertEquals("changeChoice", result.getChoice().get(0).getName()); + } + + @Test public void testInternalCreateBasicPoll() throws Exception { //start("testInternalCreateBasicPoll"); - /** PREPARE DATA **/ + // ---- PREPARE DATA ---- // // done in init() method - /** EXEC METHOD **/ + // ---- EXECUTE ---- // log.info("test 1 : create poll with creator from existing user"); @@ -188,7 +253,7 @@ public void testInternalCreatePollAccounts() throws Exception { //start("testInternalCreatePollAccounts"); - /** PREPARE DATA **/ + // ---- PREPARE DATA ---- // // list initializations in init() method Collection<ParticipantList> lists = new ArrayList<ParticipantList>(); @@ -197,7 +262,7 @@ // Second list : existing list from user favorites lists.add(list2); - /** EXEC METHOD **/ + // ---- EXECUTE ---- // log.info("test 1 : createPollAccounts from one new list : RESTRICTED"); @@ -263,17 +328,18 @@ @Test public void integrationCreatePollFree() throws Exception { - /** PREPARE DATA **/ + + // ---- PREPARE DATA ---- // user = null; poll = servicePoll.getNewPoll(user); poll.getCreator().setName("homer"); - poll.setPollType(PollType.FREE); + poll.setType(PollType.FREE); poll.setChoiceType(ChoiceType.TEXT); poll.addNewChoice("choice1", null); poll.addNewChoice("choice2", "desc2"); poll.addNewChoice("choice3", "desc3"); - /** EXEC METHOD **/ + // ---- EXECUTE ---- // servicePoll.createPoll(poll, null); /** VERIFICATION RESULT **/ @@ -285,7 +351,7 @@ Poll pollFound = dao.findByNaturalId(poll.getUid()); // Check pollType and accounts - Assert.assertEquals(PollType.FREE, pollFound.getPollType()); + Assert.assertEquals(PollType.FREE, pollFound.getType()); Assert.assertEquals(0, pollFound.getPollAccount().size()); // Check choices @@ -306,7 +372,7 @@ public void integrationCreatePollRestrictedFromNewList() throws Exception { /** PREPARE DATA **/ poll = servicePoll.getNewPoll(user); - poll.setPollType(PollType.RESTRICTED); + poll.setType(PollType.RESTRICTED); poll.setChoiceType(ChoiceType.DATE); poll.addNewChoice("date1", null); poll.addNewChoice("date2", "desc2"); @@ -342,7 +408,7 @@ Poll pollFound = dao.findByNaturalId(poll.getUid()); // Check pollType and accounts - Assert.assertEquals(PollType.RESTRICTED, pollFound.getPollType()); + Assert.assertEquals(PollType.RESTRICTED, pollFound.getType()); Assert.assertEquals(2, pollFound.getPollAccount().size()); // Check choices Modified: trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java =================================================================== --- trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -55,6 +55,7 @@ import org.junit.Ignore; import org.junit.Rule; import org.junit.rules.TestName; +import org.junit.runner.Description; import org.junit.runners.model.FrameworkMethod; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; @@ -104,7 +105,7 @@ public TestName rule = new TestName() { @Override - public void starting(FrameworkMethod method) { + public void starting(Description method) { super.starting(method); try { getTest().start(getMethodName()); @@ -311,11 +312,11 @@ Poll poll = pollDAO.create(context.createPollenUrlId()); poll.setCreator(creator); poll.setTitle(title); - poll.setPollType(type); + poll.setType(type); if (voteCounting == null) { voteCounting = VoteCountingType.NORMAL; } - poll.setVoteCountingType(voteCounting); + poll.setVoteCounting(voteCounting); return poll; } @@ -346,7 +347,7 @@ for (String choice : choices) { Choice newChoice = dao.create(); newChoice.setName(choice); - newChoice.setChoiceType(choiceType); + newChoice.setType(choiceType); poll.addChoice(newChoice); } Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/data/ChoiceField.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/data/ChoiceField.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/data/ChoiceField.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -41,14 +41,14 @@ * to be an image or a date depends on the choice type. You have to set the type * when needed (changing) or using static methods : * <pre> - * - {@link #getChoiceDate(java.lang.String)} : need the date pattern to format + * - {@link #getChoiceDate()} : need the date pattern to format * - {@link #getChoiceImage(java.lang.String)} : need the pollId to save the * image * - {@link #getChoiceText()} * </pre> * <p/> * Before saving choices using servicePoll, you have to save the name using - * {@link #saveName()} method : the name to save depends on the choice type. + * {@link #saveName(ServiceImage)} method : the name to save depends on the choice type. * <p/> * Created: 6 mars 2010 * @@ -287,11 +287,11 @@ } public void setChoiceType(ChoiceType choiceType) { - getChoice().setChoiceType(choiceType); + getChoice().setType(choiceType); } public ChoiceType getChoiceType() { - return getChoice().getChoiceType(); + return getChoice().getType(); } public boolean isHidden() { Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/PollFormModel.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/PollFormModel.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/models/PollFormModel.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -206,7 +206,7 @@ } else if (type.isGroup()) { listModel.reset(); } - poll.setPollType(type); + poll.setType(type); listsChanged = false; } Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/PollForm.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/PollForm.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/PollForm.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -329,7 +329,7 @@ public boolean isChoiceNbDisabled() { // voteCounting not set to NORMAL - return !getPoll().getVoteCountingType().isNormal(); + return !getPoll().getVoteCounting().isNormal(); } @@ -390,7 +390,7 @@ */ public boolean isReminderDisabled() { // pollType is FREE - return getPoll().getPollType().isFree(); + return getPoll().getType().isFree(); } /** ****************** LISTS **************************************** */ @@ -473,7 +473,7 @@ @Log public boolean canDisplayLists() { - return getPoll().getPollType().isRestrictedOrGroup(); + return getPoll().getType().isRestrictedOrGroup(); } /** GROUPS MANAGMENT ** */ @@ -750,7 +750,7 @@ pollLinks.addInfo(messages.get( "pollen.ui.poll.links.creatorEmail.notDefined")); } - if (getPoll().getPollType().isRestrictedOrGroup()) { + if (getPoll().getType().isRestrictedOrGroup()) { pollLinks.addInfo("Les votants ont reçu un mail !"); } return pollLinks; Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/Results.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/Results.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/Results.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -310,20 +310,20 @@ } public boolean isFreePoll() { - return poll.getPollType() == PollType.FREE; + return poll.getType() == PollType.FREE; } public boolean isRestrictedPoll() { - return poll.getPollType() == PollType.RESTRICTED; + return poll.getType() == PollType.RESTRICTED; } public boolean isGroupPoll() { - return poll.getPollType() == PollType.GROUP; + return poll.getType() == PollType.GROUP; } /** Retourne le message d'aide correspondant au type de sondage. */ public String getHelpMessage() { - switch (poll.getVoteCountingType()) { + switch (poll.getVoteCounting()) { case NORMAL: return messages.get("normalVote-help"); case PERCENTAGE: @@ -339,7 +339,7 @@ /** Retourne le message de victoire indiquant le ou les gagnants. */ public String getVictoryMessage() { - if (poll.getVoteCountingType().equals(VoteCountingType.NUMBER)) { + if (poll.getVoteCounting().equals(VoteCountingType.NUMBER)) { return null; } Modified: trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java =================================================================== --- trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pollen-ui/src/main/java/org/chorem/pollen/ui/pages/poll/VoteForPoll.java 2011-09-25 21:52:20 UTC (rev 3079) @@ -654,10 +654,6 @@ return editedVotes; } - public void isTrue(double voteValue) { - - } - public boolean canVote() throws PollenBusinessException { if (canVote == null) { canVote = serviceVote.canVote(getPoll(), getPollAccount()); @@ -776,7 +772,7 @@ Object redirect = this; // Case of new Free vote - if (newFreeVote && getPoll().getPollType().isFree()) { + if (newFreeVote && getPoll().getType().isFree()) { redirect = manageFreeVote(); } page = 1; Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2011-09-22 17:32:06 UTC (rev 3078) +++ trunk/pom.xml 2011-09-25 21:52:20 UTC (rev 3079) @@ -331,14 +331,14 @@ <!-- customized versions --> <!--javadoc.version>2.4</javadoc.version--> - <topiaVersion>2.5</topiaVersion> - <eugenePluginVersion>2.3</eugenePluginVersion> - <nuitonI18nVersion>1.2.2</nuitonI18nVersion> + <topiaVersion>2.6.3-SNAPSHOT</topiaVersion> + <eugenePluginVersion>2.4</eugenePluginVersion> + <nuitonI18nVersion>2.4.1</nuitonI18nVersion> <tapestryVersion>5.1.0.5</tapestryVersion> <nuitonWebVersion>0.1</nuitonWebVersion> - <nuitonUtilsVersion>1.5.3</nuitonUtilsVersion> - <processorPluginVersion>1.0.2</processorPluginVersion> - <slf4jVersion>1.5.10</slf4jVersion> + <nuitonUtilsVersion>2.3</nuitonUtilsVersion> + <processorPluginVersion>1.2.2</processorPluginVersion> + <slf4jVersion>1.6.2</slf4jVersion> <jFreeVersion>1.0.12</jFreeVersion> <!--Multilanguage maven-site -->
participants (1)
-
fdesbois@users.chorem.org