Bugfix and uses notifications on sending and replying private messages

Change-Id: I1dc386b2c9d337d39989bdcbfa45e2f00fe04871
This commit is contained in:
joha-asc 2011-07-22 16:01:08 +02:00
parent be51065103
commit d928d0de4e
4 changed files with 30 additions and 41 deletions

@ -74,39 +74,10 @@ public class PrivateMessageModel implements IClusterable {
rec.setToUser(selectedUser); rec.setToUser(selectedUser);
rec.setPrivateMessage(pm); rec.setPrivateMessage(pm);
rec = recipientDao.save(rec); rec = recipientDao.save(rec);
notificationController.createNotificationForPrivateMessage(selectedUser, subject +"\n\n" + textMessage, PrivateMessagesPage.getAbsoluteForPrivateMessageURL());
} }
for(User user: users){
createNotification(user, subject +"\n\n" + textMessage);
}
} }
} }
private void createNotification(final User user,final String message){
Properties props = null;
try {
props = PropsUtils.load("notification.properties");
} catch (Exception e) {
e.printStackTrace();
}
String mailSubject = props.getProperty("mailSubject");
String privateMessageNotification = props.getProperty("privateMessageNotification");
String twoNewLines = props.getProperty("twoNewLines");
String webNotificationMessage = SciProSession.get()
.getUser()
+ privateMessageNotification;
String mailMessage = webNotificationMessage + twoNewLines + message;
NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage, mailSubject, mailMessage);
notificationController.processNotification(user, notificationMessage,
getAbsoluteForPrivateMessageURL(), NotificationPriority.MEDIUM);
}
private String getAbsoluteForPrivateMessageURL() {
PageParameters pageParameters = new PageParameters();
return RequestUtils.toAbsolutePath(RequestCycle.get().urlFor(PrivateMessagesPage.class, pageParameters).toString());
}
} }

@ -1,17 +1,23 @@
package se.su.dsv.scipro.message.models; package se.su.dsv.scipro.message.models;
import java.util.List; import java.util.List;
import java.util.Properties;
import org.apache.wicket.IClusterable; import org.apache.wicket.IClusterable;
import org.apache.wicket.injection.web.InjectorHolder; import org.apache.wicket.injection.web.InjectorHolder;
import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.SciProSession; import se.su.dsv.scipro.SciProSession;
import se.su.dsv.scipro.data.controllers.NotificationController;
import se.su.dsv.scipro.data.controllers.NotificationMessage;
import se.su.dsv.scipro.data.dao.interfaces.PrivateMessageDao; import se.su.dsv.scipro.data.dao.interfaces.PrivateMessageDao;
import se.su.dsv.scipro.data.dao.interfaces.RecipientDao; import se.su.dsv.scipro.data.dao.interfaces.RecipientDao;
import se.su.dsv.scipro.data.dataobjects.PrivateMessage; import se.su.dsv.scipro.data.dataobjects.PrivateMessage;
import se.su.dsv.scipro.data.dataobjects.Recipient; import se.su.dsv.scipro.data.dataobjects.Recipient;
import se.su.dsv.scipro.data.dataobjects.User; import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.data.enums.NotificationPriority;
import se.su.dsv.scipro.message.pages.PrivateMessagesPage;
import se.su.dsv.scipro.util.PropsUtils;
public class ReplyMessageModel implements IClusterable { public class ReplyMessageModel implements IClusterable {
@ -21,6 +27,8 @@ public class ReplyMessageModel implements IClusterable {
private PrivateMessageDao pmDao; private PrivateMessageDao pmDao;
@SpringBean @SpringBean
private RecipientDao recipientDao; private RecipientDao recipientDao;
@SpringBean
private NotificationController notificationController;
private PrivateMessage originalMessage; private PrivateMessage originalMessage;
@ -81,5 +89,10 @@ public class ReplyMessageModel implements IClusterable {
r.setToUser(originalMessage.getFromUser()); r.setToUser(originalMessage.getFromUser());
r.setPrivateMessage(pm); r.setPrivateMessage(pm);
r = recipientDao.save(r); r = recipientDao.save(r);
notificationController.createNotificationForReplyPrivateMessage(originalMessage.getFromUser(), getReplySubject() +"\n\n" + getReplyText(), PrivateMessagesPage.getAbsoluteForPrivateMessageURL());
} }
} }

@ -3,6 +3,7 @@ package se.su.dsv.scipro.message.pages;
import java.util.Iterator; import java.util.Iterator;
import org.apache.wicket.PageParameters; import org.apache.wicket.PageParameters;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.form.AjaxButton; import org.apache.wicket.ajax.markup.html.form.AjaxButton;
@ -14,6 +15,7 @@ import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model; import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.protocol.http.RequestUtils;
import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.spring.injection.annot.SpringBean;
import org.odlabs.wiquery.ui.dialog.Dialog; import org.odlabs.wiquery.ui.dialog.Dialog;
import org.odlabs.wiquery.ui.tabs.Tabs; import org.odlabs.wiquery.ui.tabs.Tabs;
@ -192,5 +194,11 @@ public class PrivateMessagesPage extends MenuPage {
} }
} }
public static String getAbsoluteForPrivateMessageURL() {
PageParameters pageParameters = new PageParameters();
return RequestUtils.toAbsolutePath(RequestCycle.get()
.urlFor(PrivateMessagesPage.class, pageParameters).toString());
}
} }

@ -95,18 +95,16 @@ public class PrivateMessagesPanel extends Panel {
PageableListView<Recipient> lv = new PageableListView<Recipient>("message-list-item", new PropertyModel<List<Recipient>>(messageListModel, "privateMessages"), PAGE_LIMIT) { PageableListView<Recipient> lv = new PageableListView<Recipient>("message-list-item", new PropertyModel<List<Recipient>>(messageListModel, "privateMessages"), PAGE_LIMIT) {
private static final long serialVersionUID = 7851212974239684966L; private static final long serialVersionUID = 7851212974239684966L;
protected Recipient rec;
protected PrivateMessage pm;
@Override @Override
protected void populateItem(final ListItem<Recipient> item) { protected void populateItem(final ListItem<Recipient> item) {
this.rec = item.getModelObject(); final Recipient rec = item.getModelObject();
this.pm = rec.getPrivateMessage(); final PrivateMessage pm = rec.getPrivateMessage();
item.add(new Label("dateField", dateFormat.format(pm.getDateCreated()))); item.add(new Label("dateField", dateFormat.format(pm.getDateCreated())));
item.add(new Label("fromField", pm.getFromUser().getFirstName() + " " item.add(new Label("fromField", pm.getFromUser().getFirstName() + " "
+ pm.getFromUser().getLastName())); + pm.getFromUser().getLastName()));
item.add(new Label("subjectField", pm.getSubject())); item.add(new Label("subjectField", pm.getSubject()));
if (this.rec.getDateRead() == null) if (rec.getDateRead() == null)
item.add(new SimpleAttributeModifier("class", "unread-message-table-row")); item.add(new SimpleAttributeModifier("class", "unread-message-table-row"));
item.add(new AjaxLink<String>("readLink") { item.add(new AjaxLink<String>("readLink") {
@ -114,13 +112,12 @@ public class PrivateMessagesPanel extends Panel {
@Override @Override
public void onClick(AjaxRequestTarget target) { public void onClick(AjaxRequestTarget target) {
pm = pmDao.reLoad(pm); currentMessage = pmDao.reLoad(pm);
currentMessage = pm;
rec = recipientDao.reLoad(item.getModelObject()); Recipient rec2 = recipientDao.reLoad(item.getModelObject());
if (rec.getDateRead() == null) { if (rec2.getDateRead() == null) {
rec.setDateRead(GregorianCalendar.getInstance().getTime()); rec2.setDateRead(GregorianCalendar.getInstance().getTime());
recipientDao.save(rec); recipientDao.save(rec2);
} }
messageContainer = new WebMarkupContainer("messageContainer"); messageContainer = new WebMarkupContainer("messageContainer");