r3023 - in trunk/pollen-business/src: main/java/org/chorem/pollen main/java/org/chorem/pollen/service main/xmi test/java/org/chorem/pollen/service test/java/org/chorem/pollen/test
Author: fdesbois Date: 2010-06-02 12:05:36 +0200 (Wed, 02 Jun 2010) New Revision: 3023 Url: http://chorem.org/repositories/revision/pollen/3023 Log: Implement getPollsByUser Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/EntityQueryProperty.java trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.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 Modified: trunk/pollen-business/src/main/java/org/chorem/pollen/EntityQueryProperty.java =================================================================== --- trunk/pollen-business/src/main/java/org/chorem/pollen/EntityQueryProperty.java 2010-06-01 14:06:41 UTC (rev 3022) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/EntityQueryProperty.java 2010-06-02 10:05:36 UTC (rev 3023) @@ -168,6 +168,11 @@ return nameProperty(propertyJoin); } + public String namePropertyForJoin(String collectionProperty, + EntityQueryProperty elementProperty) { + return nameProperty(collectionProperty) + " as " + elementProperty.name(); + } + /** * Get the entityClass associated with this EntityQueryProperty. Can be * useful in some case, to create other query for exemple or to use it in 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 2010-06-01 14:06:41 UTC (rev 3022) +++ trunk/pollen-business/src/main/java/org/chorem/pollen/service/ServicePollImpl.java 2010-06-02 10:05:36 UTC (rev 3023) @@ -1,12 +1,15 @@ package org.chorem.pollen.service; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.chorem.pollen.EntityQueryProperty; import org.chorem.pollen.PollenBinderHelper; import org.chorem.pollen.PollenBusinessException; import org.chorem.pollen.PollenContext; import org.chorem.pollen.PollenDAOHelper; import org.chorem.pollen.PollenException; +import org.chorem.pollen.PollenUtils; import org.chorem.pollen.common.ChoiceType; import org.chorem.pollen.common.PollType; import org.chorem.pollen.common.VoteCountingType; @@ -28,7 +31,10 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * ServicePoll @@ -43,6 +49,8 @@ */ public class ServicePollImpl extends ServicePollAbstract { + private static final Log log = LogFactory.getLog(ServicePollImpl.class); + private PollenContext context; public void setContext(PollenContext context) { @@ -284,9 +292,32 @@ } @Override - protected List<Poll> executeGetPollsByUser(TopiaContext transaction, - UserAccount user) throws TopiaException { - throw new UnsupportedOperationException("Not supported yet."); + protected Map<PollAccount, Poll> executeGetPollsByUser(TopiaContext transaction, + UserAccount user) + throws TopiaException { + + PollDAO dao = PollenDAOHelper.getPollDAO(transaction); + + TopiaQuery query = dao.createQuery("P").addDistinct(). + addFrom(PollAccount.class, "A"). + addFrom(PollAccount.class, "G"). + addInElements("G", "P." + Poll.POLL_ACCOUNT). + addEquals("A." + PollAccount.USER_ACCOUNT, user). + addWhere("A IN elements (P." + Poll.POLL_ACCOUNT + ") OR " + + "A IN elements (G." + PollAccount.CHILD + ") OR " + + "A = P." + Poll.CREATOR); + + Map<PollAccount, Poll> polls = new HashMap<PollAccount, Poll>(); + + List<Object[]> results = transaction.findByQuery(query.addSelect("A")); + + for (Object[] result : results) { + Poll poll = (Poll)result[0]; + PollAccount account = (PollAccount)result[1]; + polls.put(account, poll); + } + + return polls; } @Override 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 2010-06-01 14:06:41 UTC (rev 3022) +++ trunk/pollen-business/src/test/java/org/chorem/pollen/service/ServicePollImplTest.java 2010-06-02 10:05:36 UTC (rev 3023) @@ -2,9 +2,11 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.chorem.pollen.PollenBusinessException; import org.chorem.pollen.PollenDAOHelper; import org.chorem.pollen.common.ChoiceType; import org.chorem.pollen.common.PollType; +import org.chorem.pollen.entity.Choice; import org.chorem.pollen.entity.FavoriteList; import org.chorem.pollen.entity.Participant; import org.chorem.pollen.entity.ParticipantList; @@ -18,10 +20,12 @@ import org.junit.Assert; import org.junit.Test; import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Map; /** * Created: 14 mai 2010 @@ -62,6 +66,7 @@ poll.setCreator(creator); poll.setTitle("Poll"); poll.setUid(context.createPollenUrlId()); + poll.setChoice(new ArrayList<Choice>()); // Participant Lists // First list : new list specific for poll restriction @@ -325,4 +330,20 @@ transaction.closeContext(); } } + + @Test + public void testGetPollsByUser2() throws PollenBusinessException, TopiaException { + + poll = createGroupPoll("POLL", user, null, 3, "group1", "group2"); + + /** EXEC METHOD **/ + Map<PollAccount, Poll> polls = servicePoll.getPollsByUser(user); + + for (Map.Entry<PollAccount, Poll> poll : polls.entrySet()) { + log.debug("Poll : " + poll.getValue().getTitle()); + log.debug("Account : " + poll.getKey().getName() + + " admin (" + poll.getKey().isAdmin() + ")"); + } + + } } 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 2010-06-01 14:06:41 UTC (rev 3022) +++ trunk/pollen-business/src/test/java/org/chorem/pollen/test/AbstractServiceTest.java 2010-06-02 10:05:36 UTC (rev 3023) @@ -354,6 +354,9 @@ participant.setName(groupName + "_participant" + i); participant.setEmail(groupName + "_email" + i + "@domain.org"); participant.setWeight(1.); + if (i == 1) { + participant.setUserAccount(user); + } group.addChild(participant); }
participants (1)
-
fdesbois@users.chorem.org