notificationscontroller

Change-Id: Ibf8ce4d27665b40977e9a8c24fe235de63734c6d
This commit is contained in:
joha-asc 2011-07-22 16:19:56 +02:00
parent 5db061e81c
commit 6f06dbb7ba
4 changed files with 10 additions and 166 deletions

@ -26,8 +26,5 @@ public interface PeerPortalController {
PeerRequest storePeerRequest(final FileUpload upload, PeerRequest request) throws Exception;
void notifyOfReviewRating(PeerReview review);
void notifyCompletionOfReview(PeerReview review);
}

@ -5,22 +5,16 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.wicket.PageParameters;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.markup.html.form.upload.FileUpload;
import org.apache.wicket.protocol.http.RequestUtils;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import se.su.dsv.scipro.conference.pages.SupervisorConferencePage;
import se.su.dsv.scipro.data.controllers.NotificationController;
import se.su.dsv.scipro.data.controllers.NotificationMessage;
import se.su.dsv.scipro.data.dao.interfaces.FileDescriptionDao;
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
import se.su.dsv.scipro.data.dataobjects.FileDescription;
@ -28,22 +22,14 @@ import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
import se.su.dsv.scipro.data.dataobjects.ProjectClassSettings;
import se.su.dsv.scipro.data.dataobjects.Student;
import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.data.enums.NotificationEventType;
import se.su.dsv.scipro.data.enums.NotificationPriority;
import se.su.dsv.scipro.exceptions.UpdatedSincePageLoadException;
import se.su.dsv.scipro.peer.data.dao.interfaces.PeerRequestDao;
import se.su.dsv.scipro.peer.data.dao.interfaces.PeerReviewDao;
import se.su.dsv.scipro.peer.data.dataobjects.PeerRequest;
import se.su.dsv.scipro.peer.data.dataobjects.PeerReview;
import se.su.dsv.scipro.peer.enums.RequestStatus;
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.repository.FileRepository;
import se.su.dsv.scipro.repository.util.FileStorageException;
import se.su.dsv.scipro.security.auth.roles.Roles;
import se.su.dsv.scipro.util.PropsUtils;
/**
*
@ -247,7 +233,7 @@ public class PeerPortalControllerImpl implements PeerPortalController {
request = peerRequestDao.save(request);
// Notify the requester
notifyAcceptOfReview(request, student, project);
notificationController.notifyAcceptOfReview(request, student, project);
return review;
} catch (Exception e) {
@ -267,151 +253,7 @@ public class PeerPortalControllerImpl implements PeerPortalController {
}
}
/**
* TODO Rewrite using template engine of some sort
*
* @param request
* @param student
* @param project
*/
protected 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());
notificationController.processNotification(requestingUser, notificationMessage,
peerStatsUrl, NotificationPriority.MEDIUM);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* TODO Rewrite
*
* @param review
*/
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);
notificationController.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);
notificationController.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);
notificationController.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);
notificationController.processNotification(reviewingUser, notificationMessage,
projectReviewUrl, NotificationPriority.MEDIUM);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Store file to a pre-populated PeerRequest

@ -33,6 +33,7 @@ import org.odlabs.wiquery.core.javascript.JsStatement;
import se.su.dsv.scipro.SciProSession;
import se.su.dsv.scipro.components.JavascriptCountdown;
import se.su.dsv.scipro.data.DomainObjectDetachableModel;
import se.su.dsv.scipro.data.controllers.NotificationController;
import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.peer.data.dao.controllers.PeerPortalController;
import se.su.dsv.scipro.peer.data.dao.interfaces.PeerRequestDao;
@ -66,6 +67,9 @@ public class PeerReviewPerformReviewPanel extends Panel {
@SpringBean
private PeerPortalController peerPortalController;
@SpringBean
private NotificationController notificationController;
public PeerReviewPerformReviewPanel(String id, final PeerReview peerReview) {
super(id);
/*
@ -257,7 +261,7 @@ public class PeerReviewPerformReviewPanel extends Panel {
peerReview.setSubmitted(true);
peerRequest.setStatus(RequestStatus.FINISHED);
getSession().info("Your review has been saved, thank you!");
peerPortalController.notifyCompletionOfReview(peerReview);
notificationController.notifyCompletionOfReview(peerReview);
}
peerRequest = peerRequestDao.save(peerRequest);

@ -19,6 +19,7 @@ import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.SciProSession;
import se.su.dsv.scipro.components.StarRater;
import se.su.dsv.scipro.data.controllers.NotificationController;
import se.su.dsv.scipro.peer.data.dao.controllers.PeerPortalController;
import se.su.dsv.scipro.peer.data.dao.interfaces.ReviewRatingDao;
import se.su.dsv.scipro.peer.data.dataobjects.PeerReview;
@ -31,7 +32,7 @@ public class PeerReviewRatingPanel extends Panel {
@SpringBean
private ReviewRatingDao reviewRatingDao;
@SpringBean
private PeerPortalController peerPortalController;
private NotificationController notificationController;
public PeerReviewRatingPanel(String id, final IModel<PeerReview> model) {
super(id, model);
@ -108,7 +109,7 @@ public class PeerReviewRatingPanel extends Panel {
starRating.setReadOnly(true);
target.addComponent(PeerReviewRatingPanel.this);
peerPortalController.notifyOfReviewRating(rating.getPeerReview());
notificationController.notifyOfReviewRating(rating.getPeerReview());
}