Skip to content

Commit

Permalink
private messages feature implemented.
Browse files Browse the repository at this point in the history
  • Loading branch information
fink-stanislav committed Jun 5, 2011
1 parent 56f9921 commit 07cdd53
Show file tree
Hide file tree
Showing 17 changed files with 134 additions and 66 deletions.
Expand Up @@ -36,6 +36,14 @@ public void setMessage(String message) {
this.message = message;
}

public void setReceiverId(Integer receiverId) {
this.receiverId = receiverId;
}

public Integer getReceiverId() {
return receiverId;
}

@Override
public void setSession(Map<String, Object> session) {
sessionHelper = new SessionHelper(session);
Expand Down
Expand Up @@ -16,19 +16,19 @@
* Time: 23:22
*/

public class ShowSenders extends UserAction implements SessionAware {
public class ShowConversations extends UserAction implements SessionAware {
private SessionHelper sessionHelper;
private List<User> senderList;
private List<User> recipients;
private List<User> friendList;
private Boolean notEmpty;

@Override
public String execute() {
try {
User receiver = (User) sessionHelper.getFromSession(UserUtils.getUserSessionKey());
senderList = FriendfaceService.getService().getMessagesService().getPrivateMessagesSenders(receiver);
friendList = FriendfaceService.getService().getFriendsService().getApproved(receiver);
notEmpty = !senderList.isEmpty();
User me = (User) sessionHelper.getFromSession(UserUtils.getUserSessionKey());
recipients = FriendfaceService.getService().getMessagesService().getConversations(me);
friendList = FriendfaceService.getService().getFriendsService().getApproved(me);
notEmpty = !recipients.isEmpty();
return SUCCESS;
} catch (Exception e) {
return resultAndErrorMessage(ERROR, e.getMessage());
Expand All @@ -39,8 +39,8 @@ public Boolean getNotEmpty() {
return notEmpty;
}

public List<User> getSenderList() {
return senderList;
public List<User> getRecipients() {
return recipients;
}

public List<User> getFriendList() {
Expand Down
Expand Up @@ -22,16 +22,16 @@ public class ShowPrivateMessages extends UserAction implements SessionAware {
private SessionHelper sessionHelper;
private List<PrivateMessageBean<PrivateMessage>> messageList;
private List<User> friendList;
private Integer senderId;
private Integer otherId;
private Boolean notEmpty;

@Override
public String execute() {
try {
User receiver = (User) sessionHelper.getFromSession(UserUtils.getUserSessionKey());
User sender = FriendfaceService.getService().getUserService().getById(senderId);
messageList = FriendfaceService.getService().getMessagesService().getPrivateMessages(receiver, sender);
friendList = FriendfaceService.getService().getFriendsService().getApproved(receiver);
User me = (User) sessionHelper.getFromSession(UserUtils.getUserSessionKey());
User other = FriendfaceService.getService().getUserService().getById(otherId);
messageList = FriendfaceService.getService().getMessagesService().getPrivateMessages(me, other);
friendList = FriendfaceService.getService().getFriendsService().getApproved(me);
notEmpty = !messageList.isEmpty();
return SUCCESS;
} catch (Exception e) {
Expand All @@ -43,8 +43,12 @@ public Boolean getNotEmpty() {
return notEmpty;
}

public void setSenderId(Integer senderId) {
this.senderId = senderId;
public Integer getOtherId() {
return otherId;
}

public void setOtherId(Integer otherId) {
this.otherId = otherId;
}

public List<PrivateMessageBean<PrivateMessage>> getMessageList() {
Expand Down
Expand Up @@ -19,5 +19,5 @@ public interface PrivateMessageDAO {

List<PrivateMessage> getUserMessages(User receiver, User sender) throws RepositoryException;

List<User> getSenders(User receiver);
public List<User> getConversations(User user);
}
Expand Up @@ -50,6 +50,7 @@ public List<PrivateMessage> getUserMessages(User receiver, User sender) throws R
try {
DefaultQueryParams<User> queryParams = new DefaultQueryParams<User>("getPrivateMessages");
queryParams.setParam("rec", receiver);
queryParams.setParam("sen", sender);
List<PrivateMessage> result =
queryExecutor.executeNamedQueryList(queryParams, PrivateMessage.class);
return repositoryManager.retrieveContent(result, getPath(receiver));
Expand All @@ -59,11 +60,18 @@ public List<PrivateMessage> getUserMessages(User receiver, User sender) throws R
}

@Override
public List<User> getSenders(User receiver) {
public List<User> getConversations(User user) {
try {
DefaultQueryParams<User> queryParams = new DefaultQueryParams<User>("getPrivateMessagesSenders");
queryParams.setParam("rec", receiver);
return queryExecutor.executeNamedQueryList(queryParams, User.class);
DefaultQueryParams<User> queryParams = new DefaultQueryParams<User>("getSenders");
queryParams.setParam("user", user);

List<User> result = queryExecutor.executeNamedQueryList(queryParams, User.class);

queryParams = new DefaultQueryParams<User>("getReceivers");
queryParams.setParam("user", user);

result.addAll(queryExecutor.executeNamedQueryList(queryParams, User.class));
return result;
} catch (NoResultException e) {
return null;
}
Expand Down
Expand Up @@ -15,7 +15,8 @@
@Table(name = "private_messages")
@NamedQueries(value = {
@NamedQuery(name = "getPrivateMessages", query = "select m from PrivateMessage m where m.receiver = :rec and m.sender = :sen"),
@NamedQuery(name = "getPrivateMessagesSenders", query = "select m.sender from PrivateMessage m where m.receiver = :rec")
@NamedQuery(name = "getSenders", query = "select m.sender from PrivateMessage m where m.receiver = :user"),
@NamedQuery(name = "getReceivers", query = "select m.receiver from PrivateMessage m where m.sender = :user")
})
public class PrivateMessage implements ContentEntity {
@Id
Expand Down
Expand Up @@ -73,13 +73,28 @@ public void postPrivateMessage(User sender, User receiver, String message) throw
privateMessageDAO.insertMessage(privateMessage);
}

public List<User> getPrivateMessagesSenders(User receiver) {
return privateMessageDAO.getSenders(receiver);
public List<User> getConversations(User user) {
List<User> userList = privateMessageDAO.getConversations(user);
List<User> result = new ArrayList<User>(userList.size());

if (userList.size() > 0) {
result.add(userList.get(0));
}

for (User u : userList) {
for (int i = 0; i < result.size(); i++) {
if (!u.equals(result.get(i))) {
result.add(u);
break;
}
}
}
return result;
}

public List<PrivateMessageBean<PrivateMessage>> getPrivateMessages(User receiver, User sender) throws RepositoryException {
List<PrivateMessage> messagesTo = privateMessageDAO.getUserMessages(receiver, sender);
List<PrivateMessage> messagesFrom = privateMessageDAO.getUserMessages(receiver, sender);
List<PrivateMessage> messagesFrom = privateMessageDAO.getUserMessages(sender, receiver);
List<PrivateMessageBean<PrivateMessage>> beans = new ArrayList<PrivateMessageBean<PrivateMessage>>(messagesTo.size() + messagesFrom.size());

for (PrivateMessage message : messagesTo) {
Expand Down
Expand Up @@ -35,6 +35,6 @@ public String getTextContent() {

@Override
public int compareTo(T message) {
return message.getId() - this.getId();
return this.getId() - message.getId();
}
}
4 changes: 2 additions & 2 deletions webapp/src/main/resources/strutsactions/menu.xml
Expand Up @@ -11,9 +11,9 @@
<result name="login" type="tiles">entrance.tiles</result>
<result name="error" type="tiles">errorpage.tiles</result>
</action>
<action name="showSenders" class="net.friendface.friendface.controllers.actions.messages.ShowSenders">
<action name="showSenders" class="net.friendface.friendface.controllers.actions.messages.ShowConversations">
<param name="userId">${userId}</param>
<result name="success" type="tiles">showsenders.tiles</result>
<result name="success" type="tiles">conversations.tiles</result>
<result name="login" type="tiles">entrance.tiles</result>
<result name="error" type="tiles">errorpage.tiles</result>
</action>
Expand Down
3 changes: 2 additions & 1 deletion webapp/src/main/resources/strutsactions/messages.xml
Expand Up @@ -9,7 +9,7 @@
<action name="showPrivateMessages"
class="net.friendface.friendface.controllers.actions.messages.ShowPrivateMessages">
<param name="userId">${userId}</param>
<param name="senderId">${senderId}</param>
<param name="otherId">${otherId}</param>
<result name="success" type="tiles">showmessages.tiles</result>
<result name="login" type="tiles">entrance.tiles</result>
<result name="error" type="tiles">errorpage.tiles</result>
Expand All @@ -22,6 +22,7 @@
<result name="success" type="redirectAction">
<param name="actionName">showPrivateMessages</param>
<param name="userId">${userId}</param>
<param name="otherId">${receiverId}</param>
</result>
<result name="login" type="tiles">entrance.tiles</result>
<result name="error" type="tiles">errorpage.tiles</result>
Expand Down
20 changes: 17 additions & 3 deletions webapp/src/main/webapp/WEB-INF/jsps/content/friends/approved.jspx
@@ -1,9 +1,12 @@
<jsp:root xmlns="http://www.w3.org/1999/xhtml"
xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
xmlns:s="/struts-tags">

<style type="text/css">
@import "css/list.css";
@import "css/images.css";
</style>

<script type="text/javascript" src="js/formHandlers.js"></script>

<div id="list">
Expand All @@ -20,9 +23,20 @@
</s:a>
</div>
<div class="list-item-content">
<a href="">
<img class="frontpic" alt="" src="/images/littleuserpic.png"/>
</a>
<s:if test="true">
<div class="frontpic frontpic-small">
<s:a href="#">
<span class="ref"><img alt="" src="images/no_image.png"/></span>
</s:a>
</div>
</s:if>
<s:else>
<div class="frontpic frontpic-small">
<s:a href="#">
<span class="ref"><img alt="" src="images/littleuserpic.png"/></span>
</s:a>
</div>
</s:else>

<div class="list-item-text">
<s:url var="userUrl" value="userpage.action">
Expand Down
20 changes: 17 additions & 3 deletions webapp/src/main/webapp/WEB-INF/jsps/content/friends/pending.jspx
@@ -1,9 +1,12 @@
<jsp:root xmlns="http://www.w3.org/1999/xhtml"
xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
xmlns:s="/struts-tags">

<style type="text/css">
@import "css/list.css";
@import "css/images.css";
</style>

<script type="text/javascript" src="js/formHandlers.js"></script>

<div id="list">
Expand All @@ -20,9 +23,20 @@
</s:a>
</div>
<div class="list-item-content">
<a href="">
<img class="frontpic" alt="" src="/images/littleuserpic.png"/>
</a>
<s:if test="true">
<div class="frontpic frontpic-small">
<s:a href="#">
<span class="ref"><img alt="" src="images/no_image.png"/></span>
</s:a>
</div>
</s:if>
<s:else>
<div class="frontpic frontpic-small">
<s:a href="#">
<span class="ref"><img alt="" src="images/littleuserpic.png"/></span>
</s:a>
</div>
</s:else>

<div class="list-item-text">
<s:url var="userUrl" value="userpage.action">
Expand Down
20 changes: 17 additions & 3 deletions webapp/src/main/webapp/WEB-INF/jsps/content/friends/proposed.jspx
@@ -1,9 +1,12 @@
<jsp:root xmlns="http://www.w3.org/1999/xhtml"
xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
xmlns:s="/struts-tags">

<style type="text/css">
@import "css/list.css";
@import "css/images.css";
</style>

<script type="text/javascript" src="js/formHandlers.js"></script>

<div id="list">
Expand All @@ -27,9 +30,20 @@
</s:a>
</div>
<div class="list-item-content">
<a href="">
<img class="frontpic" alt="" src="/images/littleuserpic.png"/>
</a>
<s:if test="true">
<div class="frontpic frontpic-small">
<s:a href="#">
<span class="ref"><img alt="" src="images/no_image.png"/></span>
</s:a>
</div>
</s:if>
<s:else>
<div class="frontpic frontpic-small">
<s:a href="#">
<span class="ref"><img alt="" src="images/littleuserpic.png"/></span>
</s:a>
</div>
</s:else>

<div class="list-item-text">
<s:url var="userUrl" value="userpage.action">
Expand Down
Expand Up @@ -14,12 +14,12 @@
<s:i18n name="jsps.content.conversations">
<div id="list">
<s:if test="notEmpty">
<s:iterator value="senderList" status="status">
<s:iterator value="recipients" status="status">
<div class="list-item list-item-for-text">
<div class="list-item-header">
<s:url var="messagesUrl">
<s:param name="userId" value="%{[0].receiver.getId()}"/>
<s:param name="senderId" value="%{[0].sender.getId()}"/>
<s:url var="messagesUrl" value="showPrivateMessages.action">
<s:param name="userId" value="%{userId}"/>
<s:param name="otherId" value="%{[0].id}"/>
</s:url>
<s:a href="%{messagesUrl}">
<s:text name="link.view_messages.value"/>
Expand All @@ -43,11 +43,11 @@

<div class="list-item-text">
<s:url var="userUrl" value="userpage.action">
<s:param name="userId" value="%{[0].sender.getId()}"/>
<s:param name="userId" value="%{[0].id}"/>
</s:url>
<s:a href="%{userUrl}">
<s:property value="%{[0].sender.getUsername()}"/>&#8201;
<s:property value="%{[0].sender.getUserSurname()}"/>
<s:property value="%{[0].username}"/>&#8201;
<s:property value="%{[0].userSurname}"/>
</s:a>
</div>
</div>
Expand Down

0 comments on commit 07cdd53

Please sign in to comment.