getabsoulteurl och peer notifications

Change-Id: Ie110885d4a8b79ae438426f52d1e31ff721826da
This commit is contained in:
joha-asc 2011-07-22 16:17:05 +02:00
parent 04ae4cbaef
commit 804d035a0d
3 changed files with 189 additions and 38 deletions

@ -2,8 +2,12 @@ package se.su.dsv.scipro.data.controllers;
import se.su.dsv.scipro.data.dataobjects.FinalSeminar;
import se.su.dsv.scipro.data.dataobjects.FinalSeminarOpposition;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.Student;
import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.data.enums.NotificationPriority;
import se.su.dsv.scipro.peer.data.dataobjects.PeerRequest;
import se.su.dsv.scipro.peer.data.dataobjects.PeerReview;
/**
*
@ -12,32 +16,38 @@ import se.su.dsv.scipro.data.enums.NotificationPriority;
*/
public interface NotificationController {
public void createNotificationForPrivateMessage(final User user, final String message,
public void notifyPrivateMessage(final User user, final String message,
final String url);
public void createNotificationForConference(final User user, final String message,
public void notifyConferencePost(final User user, final String message,
final String messageboardTitle, final NotificationPriority notificationPriority,
final String absolutePath);
public void createNotificationForComment(final User user, final String message,
public void notifyForComment(final User user, final String message,
final NotificationPriority notificationPriority, final String title,
final String classId, final String absolutePath);
public void createNotificationForReplyPrivateMessage(final User user, final String message,
public void notifyReplyPrivateMessage(final User user, final String message,
final String url);
public void createNotificationForFinalSeminarEdited(final User user,
public void notifyFinalSeminarEdited(final User user,
final FinalSeminar finalSeminar, final NotificationPriority notificationPriority,
final String absolutePath);
public void createNotificationForCreateFinalSeminar(final User user, final FinalSeminar finalSemniar,
public void notifyCreateFinalSeminar(final User user, final FinalSeminar finalSemniar,
final NotificationPriority notificationPriority, final String absolutePath, final boolean opponent);
public void createNotificationForThesisUploaded(final User user,
public void notifyThesisUploaded(final User user,
final FinalSeminar finalSeminar, final NotificationPriority notificationPriority,
final String absolutePath);
public void createNotificationForOppositionUploaded(final User user,
public void notifyOppositionUploaded(final User user,
final FinalSeminarOpposition opposition,
final NotificationPriority notificationPriority, final String absolutePath);
public void notifyOfReviewRating(PeerReview review);
public void notifyCompletionOfReview(PeerReview review);
public void notifyAcceptOfReview(PeerRequest request, Student student, Project project);
}

@ -168,21 +168,21 @@ public class FinalSeminarUploadControllerImpl implements FinalSeminarUploadContr
for (FinalSeminarActiveParticipation fa : seminar.getActiveParticipations()) {
notificationController.createNotificationForThesisUploaded(fa.getUser(), seminar,
notificationController.notifyThesisUploaded(fa.getUser(), seminar,
NotificationPriority.HIGH, ProjectOppositionPage.getAbsoluteURL());
}
for (FinalSeminarOpposition fo : seminar.getOppositions()) {
notificationController.createNotificationForThesisUploaded(fo.getOpponent().getUser(), seminar,
notificationController.notifyThesisUploaded(fo.getOpponent().getUser(), seminar,
NotificationPriority.HIGH, ProjectOppositionPage.getAbsoluteURL());
}
for (ProjectFollower pf : seminar.getProject().getProjectFollowers()) {
notificationController.createNotificationForThesisUploaded(pf.getFollower().getUser(), seminar,
notificationController.notifyThesisUploaded(pf.getFollower().getUser(), seminar,
NotificationPriority.HIGH, SupervisorProjectsFinalSeminarPage.getAbsoluteURL());
}
if (seminar.getProject().getHeadSupervisor() != null) {
notificationController.createNotificationForThesisUploaded(seminar.getProject().getHeadSupervisor()
notificationController.notifyThesisUploaded(seminar.getProject().getHeadSupervisor()
.getUser(), seminar, NotificationPriority.HIGH,
SupervisorProjectsFinalSeminarPage.getAbsoluteURL());
}
@ -219,15 +219,15 @@ public class FinalSeminarUploadControllerImpl implements FinalSeminarUploadContr
opposition = finalSeminarOppositionDao.save(opposition);
for (Student student : opposition.getFinalSeminar().getProject().getProjectParticipants()) {
notificationController.createNotificationForOppositionUploaded(student.getUser(), opposition,
notificationController.notifyOppositionUploaded(student.getUser(), opposition,
NotificationPriority.HIGH, ProjectStartPage.getAbsoluteURL());
}
for (ProjectFollower pf : opposition.getFinalSeminar().getProject().getProjectFollowers()) {
notificationController.createNotificationForOppositionUploaded(pf.getFollower().getUser(), opposition,
notificationController.notifyOppositionUploaded(pf.getFollower().getUser(), opposition,
NotificationPriority.HIGH, SupervisorProjectsFinalSeminarPage.getAbsoluteURL());
}
if (opposition.getFinalSeminar().getProject().getHeadSupervisor() != null) {
notificationController.createNotificationForOppositionUploaded(opposition.getFinalSeminar().getProject().getHeadSupervisor()
notificationController.notifyOppositionUploaded(opposition.getFinalSeminar().getProject().getHeadSupervisor()
.getUser(), opposition, NotificationPriority.HIGH,
SupervisorProjectsFinalSeminarPage.getAbsoluteURL());
}

@ -4,6 +4,9 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Properties;
import org.apache.wicket.PageParameters;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.protocol.http.RequestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@ -18,10 +21,17 @@ import se.su.dsv.scipro.data.dataobjects.FinalSeminar;
import se.su.dsv.scipro.data.dataobjects.FinalSeminarOpposition;
import se.su.dsv.scipro.data.dataobjects.GeneralSystemSettings;
import se.su.dsv.scipro.data.dataobjects.MailEvent;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.Student;
import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.data.dataobjects.UserSettings;
import se.su.dsv.scipro.data.dataobjects.WebNotification;
import se.su.dsv.scipro.data.enums.NotificationPriority;
import se.su.dsv.scipro.peer.data.dataobjects.PeerRequest;
import se.su.dsv.scipro.peer.data.dataobjects.PeerReview;
import se.su.dsv.scipro.peer.pages.ProjectPeerReviewPage;
import se.su.dsv.scipro.peer.pages.ProjectPeerStatsPage;
import se.su.dsv.scipro.peer.pages.SupervisorPeerReviewPage;
import se.su.dsv.scipro.util.PropsUtils;
/**
@ -144,7 +154,7 @@ public class NotificationControllerImpl implements NotificationController {
}
@Override
public void createNotificationForPrivateMessage(final User user, final String message,
public void notifyPrivateMessage(final User user, final String message,
final String url) {
Properties props = null;
try {
@ -167,7 +177,7 @@ public class NotificationControllerImpl implements NotificationController {
}
@Override
public void createNotificationForConference(final User user, final String message,
public void notifyConferencePost(final User user, final String message,
final String messageboardTitle, final NotificationPriority notificationPriority,
final String absolutePath) {
@ -193,7 +203,7 @@ public class NotificationControllerImpl implements NotificationController {
}
@Override
public void createNotificationForComment(final User user, final String message,
public void notifyForComment(final User user, final String message,
final NotificationPriority notificationPriority, final String title,
final String classId, final String absolutePath) {
@ -219,7 +229,7 @@ public class NotificationControllerImpl implements NotificationController {
}
@Override
public void createNotificationForReplyPrivateMessage(final User user, final String message,
public void notifyReplyPrivateMessage(final User user, final String message,
final String absolutePath) {
Properties props = null;
try {
@ -239,9 +249,9 @@ public class NotificationControllerImpl implements NotificationController {
mailSubject, mailMessage);
processNotification(user, notificationMessage, absolutePath, NotificationPriority.MEDIUM);
}
@Override
public void createNotificationForFinalSeminarEdited(final User user,
public void notifyFinalSeminarEdited(final User user,
final FinalSeminar finalSeminar, final NotificationPriority notificationPriority,
final String absolutePath) {
@ -264,13 +274,13 @@ public class NotificationControllerImpl implements NotificationController {
NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
mailSubject, mailMessage);
processNotification(user, notificationMessage, absolutePath,
notificationPriority);
processNotification(user, notificationMessage, absolutePath, notificationPriority);
}
@Override
public void createNotificationForCreateFinalSeminar(final User user, final FinalSeminar finalSemniar,
final NotificationPriority notificationPriority, final String absolutePath, final boolean opponent) {
public void notifyCreateFinalSeminar(final User user,
final FinalSeminar finalSemniar, final NotificationPriority notificationPriority,
final String absolutePath, final boolean opponent) {
Properties props = null;
try {
@ -282,9 +292,9 @@ public class NotificationControllerImpl implements NotificationController {
String created = props.getProperty("finalSeminarCreated");
String mailSubject = props.getProperty("mailSubject");
String project = "";
if(!opponent){
if (!opponent) {
project = props.getProperty("finalSeminarProject");
}else{
} else {
project = props.getProperty("finalSeminarProjectOpponnent");
}
@ -303,12 +313,11 @@ public class NotificationControllerImpl implements NotificationController {
NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
mailSubject, mailMessage);
processNotification(user, notificationMessage, absolutePath,
notificationPriority);
processNotification(user, notificationMessage, absolutePath, notificationPriority);
}
@Override
public void createNotificationForThesisUploaded(final User user,
public void notifyThesisUploaded(final User user,
final FinalSeminar finalSeminar, final NotificationPriority notificationPriority,
final String absolutePath) {
@ -329,12 +338,11 @@ public class NotificationControllerImpl implements NotificationController {
NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
mailSubject, mailMessage);
processNotification(user, notificationMessage, absolutePath,
notificationPriority);
processNotification(user, notificationMessage, absolutePath, notificationPriority);
}
@Override
public void createNotificationForOppositionUploaded(final User user,
public void notifyOppositionUploaded(final User user,
final FinalSeminarOpposition opposition,
final NotificationPriority notificationPriority, final String absolutePath) {
@ -362,7 +370,140 @@ public class NotificationControllerImpl implements NotificationController {
NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
mailSubject, mailMessage);
processNotification(user, notificationMessage, absolutePath,
notificationPriority);
processNotification(user, notificationMessage, absolutePath, notificationPriority);
}
public void notifyAcceptOfReview(PeerRequest request, Student student, Project project) {
try {
Properties props = null;
props = PropsUtils.load("notification.properties");
String mailSubject = props.getProperty("acceptPeerReviewSubject");
String requestAccepted = props.getProperty("requestAccepted");
String heShe = props.getProperty("heShe");
String complete = props.getProperty("complete");
User requestingUser = request.getRequester().getUser();
String messageBody = requestAccepted
+ student.getUser().toString()
+ heShe
+ project.getProjectClass().getProjectClassSettings()
.getNumDaysToSubmitPeerReview() + complete;
String webNotificationMessage = requestAccepted + student.getUser().toString();
NotificationMessage notificationMessage = new NotificationMessage(
webNotificationMessage, mailSubject, messageBody);
PageParameters pp = new PageParameters();
String peerStatsUrl = RequestUtils.toAbsolutePath(RequestCycle.get()
.urlFor(ProjectPeerStatsPage.class, pp).toString());
processNotification(requestingUser, notificationMessage, peerStatsUrl,
NotificationPriority.MEDIUM);
} catch (Exception e) {
e.printStackTrace();
}
}
public void notifyCompletionOfReview(PeerReview review) {
try {
Properties props = null;
props = PropsUtils.load("notification.properties");
String mailSubject = props.getProperty("completedReviewSubject");
String requestReviewed = props.getProperty("requestReviewed");
String supervisorMessageBody = props.getProperty("supervisorMessageBody");
String supervisorMessageBody2 = props.getProperty("supervisorMessageBody2");
String supervisorMessageBody3 = props.getProperty("supervisorMessageBody3");
String commaWithLinebreak = props.getProperty("commaWithLinebreak");
String inProject = props.getProperty("inProject");
String hasPerformed = props.getProperty("hasPerformed");
PeerRequest peerRequest = review.getPeerRequest();
User requestingUser = peerRequest.getRequester().getUser();
PageParameters pp = new PageParameters();
pp.add(PeerReview.PP_PEER_REVIEW_ID, review.getId().toString());
String reviewUrl = RequestUtils.toAbsolutePath(RequestCycle.get()
.urlFor(ProjectPeerReviewPage.class, pp).toString());
String supervisorReviewUrl = RequestUtils.toAbsolutePath(RequestCycle.get()
.urlFor(SupervisorPeerReviewPage.class, pp).toString());
// Message for student when his/her review request is completed.
String messageBody = requestReviewed;
NotificationMessage notificationMessage = new NotificationMessage(messageBody,
mailSubject, messageBody);
processNotification(requestingUser, notificationMessage, reviewUrl,
NotificationPriority.MEDIUM);
// Message for supervisor of the project with a completed review.
messageBody = supervisorMessageBody + peerRequest.getProject().getTitle()
+ supervisorMessageBody2;
User requestSupervisor = peerRequest.getProject().getHeadSupervisor().getUser();
NotificationMessage notificationMessageSupervisorOfProject = new NotificationMessage(
messageBody, mailSubject, messageBody);
processNotification(requestSupervisor, notificationMessageSupervisorOfProject,
supervisorReviewUrl, NotificationPriority.MEDIUM);
// Message for supervisor of the reviewer that have made a review
// for another project.
String webNotificationMessage = review.getReviewer().getUser().toString() + inProject
+ review.getProject().getTitle() + hasPerformed;
messageBody = supervisorMessageBody + review.getProject().getTitle()
+ commaWithLinebreak + review.getReviewer().getUser().toString()
+ supervisorMessageBody3;
User reviewSupervisor = review.getProject().getHeadSupervisor().getUser();
NotificationMessage notificationMessageSupervisorOfReviewer = new NotificationMessage(
webNotificationMessage, mailSubject, messageBody);
processNotification(reviewSupervisor, notificationMessageSupervisorOfReviewer,
supervisorReviewUrl, NotificationPriority.MEDIUM);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* TODO Rewrite
*
* @param review
*/
public void notifyOfReviewRating(PeerReview review) {
try {
Properties props = null;
props = PropsUtils.load("notification.properties");
String mailSubject = props.getProperty("reviewRatedSubject");
String reviewRatedBody = props.getProperty("reviewRatedBody");
User reviewingUser = review.getReviewer().getUser();
PageParameters pp = new PageParameters();
pp.add(PeerReview.PP_PEER_REVIEW_ID, review.getId().toString());
String projectReviewUrl = RequestUtils.toAbsolutePath(RequestCycle.get()
.urlFor(ProjectPeerReviewPage.class, pp).toString());
String messageBody = reviewRatedBody;
NotificationMessage notificationMessage = new NotificationMessage(messageBody,
mailSubject, messageBody);
processNotification(reviewingUser, notificationMessage, projectReviewUrl,
NotificationPriority.MEDIUM);
} catch (Exception e) {
e.printStackTrace();
}
}
}