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.setPrivateMessage(pm);
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;
import java.util.List;
import java.util.Properties;
import org.apache.wicket.IClusterable;
import org.apache.wicket.injection.web.InjectorHolder;
import org.apache.wicket.spring.injection.annot.SpringBean;
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.RecipientDao;
import se.su.dsv.scipro.data.dataobjects.PrivateMessage;
import se.su.dsv.scipro.data.dataobjects.Recipient;
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 {
@ -21,6 +27,8 @@ public class ReplyMessageModel implements IClusterable {
private PrivateMessageDao pmDao;
@SpringBean
private RecipientDao recipientDao;
@SpringBean
private NotificationController notificationController;
private PrivateMessage originalMessage;
@ -81,5 +89,10 @@ public class ReplyMessageModel implements IClusterable {
r.setToUser(originalMessage.getFromUser());
r.setPrivateMessage(pm);
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 org.apache.wicket.PageParameters;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
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.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.protocol.http.RequestUtils;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.odlabs.wiquery.ui.dialog.Dialog;
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) {
private static final long serialVersionUID = 7851212974239684966L;
protected Recipient rec;
protected PrivateMessage pm;
@Override
protected void populateItem(final ListItem<Recipient> item) {
this.rec = item.getModelObject();
this.pm = rec.getPrivateMessage();
final Recipient rec = item.getModelObject();
final PrivateMessage pm = rec.getPrivateMessage();
item.add(new Label("dateField", dateFormat.format(pm.getDateCreated())));
item.add(new Label("fromField", pm.getFromUser().getFirstName() + " "
+ pm.getFromUser().getLastName()));
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 AjaxLink<String>("readLink") {
@ -114,13 +112,12 @@ public class PrivateMessagesPanel extends Panel {
@Override
public void onClick(AjaxRequestTarget target) {
pm = pmDao.reLoad(pm);
currentMessage = pm;
currentMessage = pmDao.reLoad(pm);
rec = recipientDao.reLoad(item.getModelObject());
if (rec.getDateRead() == null) {
rec.setDateRead(GregorianCalendar.getInstance().getTime());
recipientDao.save(rec);
Recipient rec2 = recipientDao.reLoad(item.getModelObject());
if (rec2.getDateRead() == null) {
rec2.setDateRead(GregorianCalendar.getInstance().getTime());
recipientDao.save(rec2);
}
messageContainer = new WebMarkupContainer("messageContainer");