You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by im...@apache.org on 2007/03/04 09:20:43 UTC
svn commit: r514369 - in /myfaces/fusion/trunk/examples/src/main:
java/org/apache/myfaces/examples/ballot/backings/
java/org/apache/myfaces/examples/ballot/dao/
java/org/apache/myfaces/examples/ballot/lib/
java/org/apache/myfaces/examples/ballot/model/...
Author: imario
Date: Sun Mar 4 00:20:42 2007
New Revision: 514369
URL: http://svn.apache.org/viewvc?view=rev&rev=514369
Log:
added page to show the votes
Added:
myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotTopicVotes.java
- copied, changed from r514225, myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoteTopic.java
myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/lib/SendMail.java
myfaces/fusion/trunk/examples/src/main/webapp/ballot/TopicVotes.jsp
- copied, changed from r514225, myfaces/fusion/trunk/examples/src/main/webapp/ballot/VoteTopic.jsp
Modified:
myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotHall.java
myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotTopic.java
myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoteTopic.java
myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoter.java
myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/dao/VoterDao.java
myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/model/Topic.java
myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/model/Voter.java
myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/applicationContext.xml
myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/faces-config.xml
myfaces/fusion/trunk/examples/src/main/webapp/ballot/Hall.jsp
Modified: myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotHall.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotHall.java?view=diff&rev=514369&r1=514368&r2=514369
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotHall.java (original)
+++ myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotHall.java Sun Mar 4 00:20:42 2007
@@ -153,6 +153,14 @@
return FacesConst.SUCCESS;
}
+ public String topicVotesAction()
+ {
+ // ensure we start with a fresh conversation on the next page
+ // TODO: we can avoid it once we have the flash scope
+ ConversationUtils.invalidateIfExists("ballotTopicVotes");
+ return FacesConst.SUCCESS;
+ }
+
public String newTopicAction()
{
return FacesConst.SUCCESS;
Modified: myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotTopic.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotTopic.java?view=diff&rev=514369&r1=514368&r2=514369
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotTopic.java (original)
+++ myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotTopic.java Sun Mar 4 00:20:42 2007
@@ -22,8 +22,10 @@
import org.apache.commons.lang.StringUtils;
import org.apache.myfaces.examples.ballot.dao.TopicDao;
import org.apache.myfaces.examples.ballot.dao.ItemDao;
+import org.apache.myfaces.examples.ballot.dao.VoterDao;
import org.apache.myfaces.examples.ballot.model.Item;
import org.apache.myfaces.examples.ballot.model.Topic;
+import org.apache.myfaces.examples.ballot.lib.BallotState;
import org.apache.myfaces.examples.lib.FacesConst;
import org.apache.myfaces.fusion.conversation.Conversation;
import org.springframework.transaction.annotation.Transactional;
@@ -34,6 +36,9 @@
{
private TopicDao topicDao;
private ItemDao itemDao;
+ private VoterDao voterDao;
+
+ private BallotState ballotState;
private Topic topic;
@@ -60,6 +65,26 @@
this.itemDao = itemDao;
}
+ public VoterDao getVoterDao()
+ {
+ return voterDao;
+ }
+
+ public void setVoterDao(VoterDao voterDao)
+ {
+ this.voterDao = voterDao;
+ }
+
+ public BallotState getBallotState()
+ {
+ return ballotState;
+ }
+
+ public void setBallotState(BallotState ballotState)
+ {
+ this.ballotState = ballotState;
+ }
+
public void initView()
{
if (topic == null)
@@ -134,6 +159,7 @@
addItemAction();
}
+ topic.setOwner(getVoterDao().getByKey(getBallotState().getVoterId()));
topicDao.save(topic);
Conversation.getCurrentInstance().invalidate();
Copied: myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotTopicVotes.java (from r514225, myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoteTopic.java)
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotTopicVotes.java?view=diff&rev=514369&p1=myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoteTopic.java&r1=514225&p2=myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotTopicVotes.java&r2=514369
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoteTopic.java (original)
+++ myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotTopicVotes.java Sun Mar 4 00:20:42 2007
@@ -35,24 +35,20 @@
import org.apache.myfaces.examples.ballot.model.Voter;
import org.apache.myfaces.examples.lib.FacesConst;
import org.apache.myfaces.examples.lib.FacesUtils;
-import org.apache.myfaces.examples.lib.SpringUtils;
-import org.apache.myfaces.fusion.conversation.Conversation;
-import org.apache.myfaces.fusion.conversation.ConversationUtils;
-import org.springframework.transaction.PlatformTransactionManager;
import javax.faces.context.FacesContext;
-import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
-import javax.servlet.ServletRequest;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
import java.util.ArrayList;
-import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-public class BallotVoteTopic
+public class BallotTopicVotes
{
- private PlatformTransactionManager transactionManager;
+ @PersistenceContext
+ private EntityManager entityManager;
private TopicDao topicDao;
private VoteDao voteDao;
@@ -60,12 +56,12 @@
private ItemDao itemDao;
private BallotState ballotState;
- private BallotVoteTopicCmp ballotVoteTopicCmp;
private Topic topic;
+ private Long selectedVoterId;
private List<ItemInfo> itemInfos;
- private List<SelectItem> choices;
+ private List<SelectItem> voters;
public static class ItemInfo
{
@@ -94,26 +90,22 @@
{
return currentVote;
}
- }
-
- public BallotVoteTopicCmp getBallotVoteTopicCmp()
- {
- return ballotVoteTopicCmp;
- }
- public void setBallotVoteTopicCmp(BallotVoteTopicCmp ballotVoteTopicCmp)
- {
- this.ballotVoteTopicCmp = ballotVoteTopicCmp;
- }
-
- public PlatformTransactionManager getTransactionManager()
- {
- return transactionManager;
- }
+ public String getVoteChoice()
+ {
+ StringBuilder choiceText=new StringBuilder();
+ if (getVote().getChoice() > 0)
+ {
+ choiceText.append("+");
+ }
+ else if (getVote().getChoice()<0)
+ {
+ choiceText.append("-");
+ }
+ choiceText.append(Integer.toString(getVote().getChoice()));
- public void setTransactionManager(PlatformTransactionManager transactionManager)
- {
- this.transactionManager = transactionManager;
+ return choiceText.toString();
+ }
}
public BallotState getBallotState()
@@ -166,16 +158,20 @@
this.voterDao = voterDao;
}
- public void initView()
+ public Long getSelectedVoterId()
{
- if (!getBallotState().isAuthenticated())
- {
- FacesUtils.addErrorMessage("you are not authenticated");
+ return selectedVoterId;
+ }
- redirectToHall();
- return;
- }
+ public void setSelectedVoterId(Long selectedVoterId)
+ {
+ this.selectedVoterId = selectedVoterId;
+ }
+ public void initView()
+ {
+ System.err.println("init view");
+
if (topic == null)
{
String topicId = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("topicId");
@@ -192,6 +188,15 @@
return;
}
}
+
+ if (getSelectedVoterId() == null)
+ {
+ setSelectedVoterId(getBallotState().getVoterId());
+ if (getSelectedVoterId() != null)
+ {
+ selectVoterAction();
+ }
+ }
}
private void redirectToHall()
@@ -204,34 +209,39 @@
{
topic = topicDao.getByKey(id);
}
-
+
public Topic getTopic()
{
return topic;
}
- public void voteChanged(ValueChangeEvent event)
+ public List<SelectItem> getVoters()
{
- Date now = new Date();
+ if (voters != null)
+ {
+ return voters;
+ }
- ItemInfo itemInfo = (ItemInfo) getBallotVoteTopicCmp().getItemInfoTable().getRowData();
- Vote vote = itemInfo.getVote();
- vote.setChanged(now);
-
- ServletRequest sr = (ServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
- vote.setRemoteIp(sr.getRemoteAddr());
+ voters = new ArrayList<SelectItem>();
+ for (Voter voter : voterDao.getVoterForTopic(getTopic()))
+ {
+ voters.add(new SelectItem(voter.getId(), voter.getName() + "(" + voter.getEmail() + ")"));
+ }
+
+ return voters;
}
- public List<ItemInfo> getItems()
+ public String selectVoterAction()
{
- if (itemInfos != null)
+ itemInfos = new ArrayList<ItemInfo>();
+
+ if (getSelectedVoterId() == null)
{
- return itemInfos;
+ FacesUtils.addErrorMessage("no voter selected");
+ return FacesConst.FAILURE;
}
- itemInfos = new ArrayList<ItemInfo>();
-
- Voter voter = voterDao.getByKey(getBallotState().getVoterId());
+ Voter voter = voterDao.getByKey(getSelectedVoterId());
Map<Item, Vote> voteMap = new HashMap<Item, Vote>();
for (Vote vote : voteDao.getVotesForVoter(voter))
@@ -253,75 +263,11 @@
itemInfos.add(new ItemInfo(item, vote, itemVotes.get(item)));
}
- return itemInfos;
- }
-
- public String saveAction()
- {
- int voteCount = 0;
-
- for (ItemInfo itemInfo : itemInfos)
- {
- if (itemInfo.getVote().getChoice() != 0)
- {
- voteCount++;
- }
-
- Date now = new Date();
-
- Vote vote = itemInfo.getVote();
- if (vote.getCreated() == null)
- {
- vote.setCreated(now);
- }
-
- if (vote.getRemoteIp() == null)
- {
- ServletRequest sr = (ServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
- vote.setRemoteIp(sr.getRemoteAddr());
- }
-
- voteDao.save(vote);
- }
-
- if (voteCount != getTopic().getMaxVoteCount())
- {
- FacesUtils.addErrorMessage("you have to choose (not 0 vote) exactly '" + getTopic().getMaxVoteCount() + "' items");
- return FacesConst.FAILURE;
- }
-
- SpringUtils.commit(transactionManager);
-
-
- BallotVoteTopic newBallotVoteTopic = (BallotVoteTopic) ConversationUtils.invalidateAndRestart(Conversation.getCurrentInstance());
- newBallotVoteTopic.initTopic(getTopic().getId());
-
return FacesConst.SUCCESS;
}
- public List<SelectItem> getChoices()
+ public List<ItemInfo> getItems()
{
- if (choices != null)
- {
- return choices;
- }
-
- choices = new ArrayList<SelectItem>();
- for (int i = getTopic().getMinVote(); i < (getTopic().getMaxVote()+1); i++)
- {
- StringBuilder choiceText=new StringBuilder();
- if (i > 0)
- {
- choiceText.append("+");
- }
- else if (i<0)
- {
- choiceText.append("-");
- }
- choiceText.append(Integer.toString(i));
- choices.add(new SelectItem(i, choiceText.toString()));
- }
-
- return choices;
+ return itemInfos;
}
}
Modified: myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoteTopic.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoteTopic.java?view=diff&rev=514369&r1=514368&r2=514369
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoteTopic.java (original)
+++ myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoteTopic.java Sun Mar 4 00:20:42 2007
@@ -29,6 +29,7 @@
import org.apache.myfaces.examples.ballot.dao.VoteDao;
import org.apache.myfaces.examples.ballot.dao.VoterDao;
import org.apache.myfaces.examples.ballot.lib.BallotState;
+import org.apache.myfaces.examples.ballot.lib.SendMail;
import org.apache.myfaces.examples.ballot.model.Item;
import org.apache.myfaces.examples.ballot.model.Topic;
import org.apache.myfaces.examples.ballot.model.Vote;
@@ -39,16 +40,20 @@
import org.apache.myfaces.fusion.conversation.Conversation;
import org.apache.myfaces.fusion.conversation.ConversationUtils;
import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.mail.javamail.JavaMailSender;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
import javax.servlet.ServletRequest;
+import javax.mail.MessagingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.io.StringWriter;
+import java.io.PrintWriter;
public class BallotVoteTopic
{
@@ -67,6 +72,8 @@
private List<ItemInfo> itemInfos;
private List<SelectItem> choices;
+ private JavaMailSender mailSender;
+
public static class ItemInfo
{
private final Item item;
@@ -116,6 +123,16 @@
this.transactionManager = transactionManager;
}
+ public JavaMailSender getMailSender()
+ {
+ return mailSender;
+ }
+
+ public void setMailSender(JavaMailSender mailSender)
+ {
+ this.mailSender = mailSender;
+ }
+
public BallotState getBallotState()
{
return ballotState;
@@ -256,10 +273,21 @@
return itemInfos;
}
- public String saveAction()
+ public String saveAction() throws MessagingException
{
int voteCount = 0;
-
+
+ StringWriter sw = new StringWriter();
+ PrintWriter out = new PrintWriter(sw);
+ out.println("Hi!");
+ out.println();
+ out.println("A new vote has been placed by:");
+ Voter voter = voterDao.getByKey(getBallotState().getVoterId());
+ out.println(voter.getId() + " " + voter.getEmail() + " " + voter.getName());
+ out.println();
+ out.println("Topic:");
+ out.println(getTopic().getName());
+
for (ItemInfo itemInfo : itemInfos)
{
if (itemInfo.getVote().getChoice() != 0)
@@ -282,7 +310,13 @@
}
voteDao.save(vote);
+
+ out.println(vote.getItem().getContent() + " " + vote.getChoice());
}
+ out.println();
+ out.println("See you,");
+ out.println("The Voting Machine - Ballot");
+ out.close();
if (voteCount != getTopic().getMaxVoteCount())
{
@@ -291,11 +325,23 @@
}
SpringUtils.commit(transactionManager);
-
+
+ SendMail.sendMail(mailSender,
+ getTopic().getOwner().getEmail(),
+ getTopic().getOwner().getEmail(),
+ "A new vote from " + voter.getName(),
+ sw.toString());
+
+ SendMail.sendMail(mailSender,
+ getTopic().getOwner().getEmail(),
+ voter.getEmail(),
+ "Your vote for " + getTopic().getName(),
+ sw.toString());
BallotVoteTopic newBallotVoteTopic = (BallotVoteTopic) ConversationUtils.invalidateAndRestart(Conversation.getCurrentInstance());
newBallotVoteTopic.initTopic(getTopic().getId());
+ FacesUtils.addInfoMessage("vote accepted, you should get a email as approvement");
return FacesConst.SUCCESS;
}
Modified: myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoter.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoter.java?view=diff&rev=514369&r1=514368&r2=514369
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoter.java (original)
+++ myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/backings/BallotVoter.java Sun Mar 4 00:20:42 2007
@@ -20,18 +20,17 @@
import org.apache.myfaces.examples.ballot.dao.VoterDao;
import org.apache.myfaces.examples.ballot.lib.BallotState;
+import org.apache.myfaces.examples.ballot.lib.SendMail;
import org.apache.myfaces.examples.ballot.model.Voter;
import org.apache.myfaces.examples.lib.FacesConst;
import org.apache.myfaces.examples.lib.FacesUtils;
import org.apache.myfaces.examples.lib.SpringUtils;
import org.apache.myfaces.fusion.conversation.Conversation;
import org.springframework.mail.javamail.JavaMailSender;
-import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.transaction.PlatformTransactionManager;
import javax.faces.context.FacesContext;
import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServletRequest;
import java.io.PrintWriter;
import java.io.StringWriter;
@@ -226,13 +225,11 @@
out.close();
- MimeMessage mimeMessage = mailSender.createMimeMessage();
- MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
- mimeMessageHelper.setSubject("Login Url For The Voting Machine");
- mimeMessageHelper.setFrom("mario@ops.co.at");
- mimeMessageHelper.setTo(voter.getEmail());
- mimeMessageHelper.setText(sw.toString(), false);
-
- mailSender.send(mimeMessage);
+ SendMail.sendMail(
+ mailSender,
+ "mario@ops.co.at",
+ voter.getEmail(),
+ "Login Url For The Voting Machine",
+ sw.toString());
}
}
Modified: myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/dao/VoterDao.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/dao/VoterDao.java?view=diff&rev=514369&r1=514368&r2=514369
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/dao/VoterDao.java (original)
+++ myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/dao/VoterDao.java Sun Mar 4 00:20:42 2007
@@ -24,11 +24,13 @@
package org.apache.myfaces.examples.ballot.dao;
import org.apache.myfaces.examples.ballot.model.Voter;
+import org.apache.myfaces.examples.ballot.model.Topic;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.NoResultException;
+import java.util.List;
public class VoterDao
{
@@ -97,5 +99,12 @@
{
Voter voter = getVoterByIdentification(identification);
return voter != null && voter.getEmail().equals(mail);
+ }
+
+ public List<Voter> getVoterForTopic(Topic topic)
+ {
+ Query query = entityManager.createNamedQuery("getVoterForTopic");
+ query.setParameter("topic", topic);
+ return query.getResultList();
}
}
Added: myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/lib/SendMail.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/lib/SendMail.java?view=auto&rev=514369
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/lib/SendMail.java (added)
+++ myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/lib/SendMail.java Sun Mar 4 00:20:42 2007
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.examples.ballot.lib;
+
+import org.springframework.mail.javamail.MimeMessageHelper;
+import org.springframework.mail.javamail.JavaMailSender;
+
+import javax.mail.internet.MimeMessage;
+import javax.mail.MessagingException;
+
+public final class SendMail
+{
+ private SendMail()
+ {
+ }
+
+ public static void sendMail(JavaMailSender mailSender, String from, String to, String subject, String text) throws MessagingException
+ {
+ MimeMessage mimeMessage = mailSender.createMimeMessage();
+ MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
+ mimeMessageHelper.setSubject(subject);
+ mimeMessageHelper.setFrom(from);
+ mimeMessageHelper.setTo(to);
+ mimeMessageHelper.setText(text, false);
+
+ mailSender.send(mimeMessage);
+ }
+}
Modified: myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/model/Topic.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/model/Topic.java?view=diff&rev=514369&r1=514368&r2=514369
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/model/Topic.java (original)
+++ myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/model/Topic.java Sun Mar 4 00:20:42 2007
@@ -28,6 +28,7 @@
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.OrderBy;
+import javax.persistence.ManyToOne;
import java.util.ArrayList;
import java.util.List;
@@ -57,6 +58,9 @@
@Column(nullable = false)
private int maxVoteCount;
+ @ManyToOne(optional = false)
+ private Voter owner;
+
@OneToMany(mappedBy="topic", cascade = CascadeType.ALL)
@OrderBy(value="content")
private List<Item> items;
@@ -165,5 +169,15 @@
public void setMaxVoteCount(int maxVoteCount)
{
this.maxVoteCount = maxVoteCount;
+ }
+
+ public Voter getOwner()
+ {
+ return owner;
+ }
+
+ public void setOwner(Voter owner)
+ {
+ this.owner = owner;
}
}
Modified: myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/model/Voter.java
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/model/Voter.java?view=diff&rev=514369&r1=514368&r2=514369
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/model/Voter.java (original)
+++ myfaces/fusion/trunk/examples/src/main/java/org/apache/myfaces/examples/ballot/model/Voter.java Sun Mar 4 00:20:42 2007
@@ -34,18 +34,21 @@
@NamedQueries(
value = {
- @NamedQuery(
- name = "getVoterByIdentification",
- query = "select voter from Voter voter where voter.identification = :identification"),
- @NamedQuery(
- name = "getVoterByEmail",
- query = "select voter from Voter voter where voter.email = :email")
+ @NamedQuery(
+ name = "getVoterByIdentification",
+ query = "select voter from Voter voter where voter.identification = :identification"),
+ @NamedQuery(
+ name = "getVoterByEmail",
+ query = "select voter from Voter voter where voter.email = :email"),
+ @NamedQuery(
+ name = "getVoterForTopic",
+ query = "select distinct voter from Vote vote join vote.voter voter where vote.item.topic = :topic")
})
@Entity
public class Voter
{
@Id
- @GeneratedValue(strategy= GenerationType.SEQUENCE)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Column(nullable = false)
Modified: myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/applicationContext.xml
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/applicationContext.xml?view=diff&rev=514369&r1=514368&r2=514369
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/applicationContext.xml (original)
+++ myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/applicationContext.xml Sun Mar 4 00:20:42 2007
@@ -186,6 +186,14 @@
</bean>
<bean
+ name="ballotTopicVotes"
+ class="org.apache.myfaces.examples.ballot.backings.BallotTopicVotes"
+ scope="conversation"
+ autowire="byName">
+
+ </bean>
+
+ <bean
name="ballotTopic"
class="org.apache.myfaces.examples.ballot.backings.BallotTopic"
scope="conversation"
Modified: myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/faces-config.xml
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/faces-config.xml?view=diff&rev=514369&r1=514368&r2=514369
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/faces-config.xml (original)
+++ myfaces/fusion/trunk/examples/src/main/webapp/WEB-INF/faces-config.xml Sun Mar 4 00:20:42 2007
@@ -95,6 +95,12 @@
<to-view-id>/ballot/VoteTopic.jsp?topicId=#{param.topicId}</to-view-id>
<redirect/>
</navigation-case>
+ <navigation-case>
+ <from-action>#{ballotHall.topicVotesAction}</from-action>
+ <from-outcome>success</from-outcome>
+ <to-view-id>/ballot/TopicVotes.jsp?topicId=#{param.topicId}</to-view-id>
+ <redirect/>
+ </navigation-case>
</navigation-rule>
<navigation-rule>
Modified: myfaces/fusion/trunk/examples/src/main/webapp/ballot/Hall.jsp
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/webapp/ballot/Hall.jsp?view=diff&rev=514369&r1=514368&r2=514369
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/webapp/ballot/Hall.jsp (original)
+++ myfaces/fusion/trunk/examples/src/main/webapp/ballot/Hall.jsp Sun Mar 4 00:20:42 2007
@@ -92,23 +92,36 @@
<h:outputText value="Action" />
</f:facet>
- <h:commandLink
- value="Show details"
- action="#{ballotHall.showItemsAction}"
- rendered="#{!topicInfo.topic.started}">
+ <h:panelGrid
+ columns="1"
+ columnClasses="nowrap">
+ <h:commandLink
+ value="Show details"
+ action="#{ballotHall.showItemsAction}"
+ rendered="#{!topicInfo.topic.started}">
- <f:param name="topicId" value="#{topicInfo.topic.id}" />
+ <f:param name="topicId" value="#{topicInfo.topic.id}" />
- </h:commandLink>
+ </h:commandLink>
- <h:commandLink
- value="Vote"
- action="#{ballotHall.voteAction}"
- rendered="#{topicInfo.topic.started}">
+ <h:commandLink
+ value="Vote"
+ action="#{ballotHall.voteAction}"
+ rendered="#{topicInfo.topic.started}">
- <f:param name="topicId" value="#{topicInfo.topic.id}" />
+ <f:param name="topicId" value="#{topicInfo.topic.id}" />
- </h:commandLink>
+ </h:commandLink>
+
+ <h:commandLink
+ value="Vote details"
+ action="#{ballotHall.topicVotesAction}"
+ rendered="#{topicInfo.topic.started}">
+
+ <f:param name="topicId" value="#{topicInfo.topic.id}" />
+
+ </h:commandLink>
+ </h:panelGrid>
</h:column>
</t:dataTable>
Copied: myfaces/fusion/trunk/examples/src/main/webapp/ballot/TopicVotes.jsp (from r514225, myfaces/fusion/trunk/examples/src/main/webapp/ballot/VoteTopic.jsp)
URL: http://svn.apache.org/viewvc/myfaces/fusion/trunk/examples/src/main/webapp/ballot/TopicVotes.jsp?view=diff&rev=514369&p1=myfaces/fusion/trunk/examples/src/main/webapp/ballot/VoteTopic.jsp&r1=514225&p2=myfaces/fusion/trunk/examples/src/main/webapp/ballot/TopicVotes.jsp&r2=514369
==============================================================================
--- myfaces/fusion/trunk/examples/src/main/webapp/ballot/VoteTopic.jsp (original)
+++ myfaces/fusion/trunk/examples/src/main/webapp/ballot/TopicVotes.jsp Sun Mar 4 00:20:42 2007
@@ -33,23 +33,13 @@
</t:htmlTag>
<s:subForm>
- <h:commandLink action="ballotHall" value="Back to Hall" />
+ <h:commandLink action="ballotHall" value="Back to Hall"/>
</s:subForm>
<h:panelGrid
columns="1"
width="100%">
- <f:facet name="footer">
- <h:panelGrid columns="2">
-
- <h:commandButton
- value="Save"
- action="#{ballotVoteTopic.saveAction}"/>
-
- </h:panelGrid>
- </f:facet>
-
<h:panelGrid
columns="2"
rowClasses="TR1, TR2"
@@ -63,25 +53,55 @@
value="Name"/>
<h:outputText
- value="#{ballotVoteTopic.topic.name}"/>
+ value="#{ballotTopicVotes.topic.name}"/>
<h:outputText
value="Description"/>
<h:outputText
- value="#{ballotVoteTopic.topic.description}"/>
+ value="#{ballotTopicVotes.topic.description}"/>
<h:outputText
value="Info"/>
<h:outputText
- value="You have to cast '#{ballotVoteTopic.topic.maxVoteCount}' not 0 votes"/>
+ value="Every voter had to cast '#{ballotTopicVotes.topic.maxVoteCount}' not 0 votes"/>
+
+ </h:panelGrid>
+
+ <h:panelGrid
+ columns="2"
+ width="40%"
+ rowClasses="TR1,TR2">
+
+ <f:facet name="header">
+ <h:outputText value="Select Voter" />
+ </f:facet>
+
+ <f:facet name="footer">
+ <h:commandButton
+ id="voterSelect"
+ action="#{ballotTopicVotes.selectVoterAction}"
+ value="Select Voter"/>
+ </f:facet>
+
+ <h:outputLabel
+ for="voter"
+ value="Voter" />
+ <h:selectOneMenu
+ id="voter"
+ value="#{ballotTopicVotes.selectedVoterId}">
+ <f:selectItems value="#{ballotTopicVotes.voters}"/>
+
+ <s:submitOnEvent
+ for="voterSelect"
+ event="change"/>
+ </h:selectOneMenu>
</h:panelGrid>
<t:dataTable
- binding="#{ballotVoteTopicCmp.itemInfoTable}"
styleClass="inputTable"
var="itemInfo"
- value="#{ballotVoteTopic.items}"
+ value="#{ballotTopicVotes.items}"
rowClasses="TR1,TR2"
columnClasses="nowrap,nowrap"
width="40%">
@@ -109,11 +129,7 @@
<h:outputText value="Vote"/>
</f:facet>
- <h:selectOneRadio
- value="#{itemInfo.vote.choice}"
- valueChangeListener="#{ballotVoteTopic.voteChanged}">
- <f:selectItems value="#{ballotVoteTopic.choices}" />
- </h:selectOneRadio>
+ <h:outputText value="#{itemInfo.voteChoice}"/>
</h:column>