r3217 - in branches/pollen-1.2.6-struts2: pollen-persistence/src/main/java/org/chorem/pollen/business/persistence pollen-services/src/main/java/org/chorem/pollen/services/impl
Author: fdesbois Date: 2012-03-28 18:40:01 +0200 (Wed, 28 Mar 2012) New Revision: 3217 Url: http://chorem.org/repositories/revision/pollen/3217 Log: - resolve issue on personToList creation (missing votingList reference) - manage weight on restricted poll Added: branches/pollen-1.2.6-struts2/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PersonToListDAOImpl.java Modified: branches/pollen-1.2.6-struts2/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PollAccountDAOImpl.java branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java Added: branches/pollen-1.2.6-struts2/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PersonToListDAOImpl.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PersonToListDAOImpl.java (rev 0) +++ branches/pollen-1.2.6-struts2/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PersonToListDAOImpl.java 2012-03-28 16:40:01 UTC (rev 3217) @@ -0,0 +1,34 @@ +package org.chorem.pollen.business.persistence; + +import java.util.List; + +/** + * Created: 28/03/12 + * + * @author fdesbois <desbois@codelutin.com> + * $Id$ + */ +public class PersonToListDAOImpl<E extends PersonToList> extends PersonToListDAOAbstract<E> { + + public PersonToList findByPollAndAccount(Poll poll, PollAccount account) { + +// TopiaQuery query = createQuery("e") +// .addFrom(Poll.class, "p") +// .addFrom(VotingList.class, "v") +// .addEquals("p", poll) +// .addInElements("v", "p." + Poll.PROPERTY_VOTING_LIST) +// .addWhere("e." + PersonToList.PROPERTY_VOTING_LIST + " = v." + VotingList.PROPERTY_POLL_ACCOUNT_PERSON_TO_LIST) +// .addEquals("e." + PersonToList.PROPERTY_POLL_ACCOUNT, account); + + PersonToList result; + List<VotingList> votingLists = poll.getVotingList(); + for (VotingList votingList : votingLists) { + result = votingList.getPollAccountPersonToList(account); + if (result != null) { + return result; + } + } + return null; + } + +} Modified: branches/pollen-1.2.6-struts2/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PollAccountDAOImpl.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PollAccountDAOImpl.java 2012-03-28 16:39:54 UTC (rev 3216) +++ branches/pollen-1.2.6-struts2/pollen-persistence/src/main/java/org/chorem/pollen/business/persistence/PollAccountDAOImpl.java 2012-03-28 16:40:01 UTC (rev 3217) @@ -107,6 +107,7 @@ TopiaQuery query = createQuery("e") .addFrom(Poll.class, "p") .addFrom(Vote.class, "v") + .addEquals("p", poll) .addInElements("v", "p." + Poll.PROPERTY_VOTE) .addWhere("e = v." + Vote.PROPERTY_POLL_ACCOUNT) .addEquals("e." + PollAccount.PROPERTY_USER_ACCOUNT, user); Modified: branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java 2012-03-28 16:39:54 UTC (rev 3216) +++ branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/PollService.java 2012-03-28 16:40:01 UTC (rev 3217) @@ -188,7 +188,6 @@ PersonToList personToListCreated = create(personToListDAO); personToListCreated.setHasVoted(personToList.isHasVoted()); personToListCreated.setWeight(personToList.getWeight()); - votingListCreated.addPollAccountPersonToList(personToListCreated); PollAccount pollAccount = personToList.getPollAccount(); PollAccount pollAccountCreated = create(pollAccountDAO); @@ -198,6 +197,10 @@ pollAccountCreated.setVotingId(pollAccount.getVotingId()); personToListCreated.setPollAccount(pollAccountCreated); + + // The model doesn't have any composition for this relation, the link must be set in both objects + personToListCreated.setVotingList(votingListCreated); + votingListCreated.addPollAccountPersonToList(personToListCreated); } } result.addVotingList(votingListCreated); Modified: branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java =================================================================== --- branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java 2012-03-28 16:39:54 UTC (rev 3216) +++ branches/pollen-1.2.6-struts2/pollen-services/src/main/java/org/chorem/pollen/services/impl/VoteService.java 2012-03-28 16:40:01 UTC (rev 3217) @@ -31,6 +31,8 @@ import org.chorem.pollen.PollenTechnicalException; import org.chorem.pollen.bean.PollUri; import org.chorem.pollen.business.persistence.Choice; +import org.chorem.pollen.business.persistence.PersonToList; +import org.chorem.pollen.business.persistence.PersonToListDAO; import org.chorem.pollen.business.persistence.Poll; import org.chorem.pollen.business.persistence.PollAccount; import org.chorem.pollen.business.persistence.PollAccountDAO; @@ -43,6 +45,7 @@ import org.chorem.pollen.entities.PollenBinderHelper; import org.chorem.pollen.entities.PollenDAOHelper; import org.chorem.pollen.services.PollenServiceSupport; +import org.chorem.pollen.services.exceptions.PollAccountNotFound; import org.chorem.pollen.services.exceptions.VoteNotFoundException; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; @@ -67,7 +70,6 @@ Vote result = newInstance(voteDAO); result.setPollAccount(account); - // TODO weight ? result.setWeight(1.); // Prepare the List of VoteToChoice with Poll's choices @@ -126,6 +128,12 @@ } else { result = getNewVote(poll, accountEditable); } + + if (poll.getPollType() != PollType.FREE && accountEditable.getTopiaId() != null) { + PersonToListDAO personToListDAO = getDAO(PersonToList.class); + PersonToList personToList = personToListDAO.findByPollAndAccount(poll, accountEditable); + result.setWeight(personToList.getWeight()); + } return result; } @@ -150,7 +158,7 @@ return result; } - public Vote createVote(Vote vote) { + public Vote createVote(Vote vote) throws PollAccountNotFound { VoteDAO voteDAO = getDAO(Vote.class); @@ -163,14 +171,16 @@ String pollAccountId = pollAccount.getTopiaId(); PollAccount pollAccountLoaded = null; - // Load existing account only if not anonymous, otherwise a new pollAccount must be created - if (pollAccountId != null && !vote.isAnonymous()) { + // Load existing account (restricted poll) + if (pollAccountId != null) { pollAccountLoaded = getEntityById(PollAccount.class, pollAccountId); - } + + if (pollAccountLoaded == null) { + throw new PollAccountNotFound(); + } - // Create the new PollAccount - if (pollAccountLoaded == null) { - + // Create new account + } else { PollAccountDAO pollAccountDAO = getDAO(PollAccount.class); pollAccountLoaded = create(pollAccountDAO); pollAccountLoaded.setAccountId(pollAccount.getAccountId()); @@ -188,6 +198,7 @@ pollAccountLoaded.setUserAccount(userAccountLoaded); } } + // TODO Manage anonymous for existing account ??? problem with restricted and email result.setPollAccount(pollAccountLoaded); // -- List of VoteToChoice -- //
participants (1)
-
fdesbois@users.chorem.org