Moved all create notifiavtions to notifiactioncontroller and added

notifications to finalseminarcontroller

Change-Id: I85022739718296f67b64daf3299992b34419bcc0
This commit is contained in:
joha-asc 2011-07-22 16:02:02 +02:00
parent 0135f410d9
commit 76e8c992b7
4 changed files with 317 additions and 2 deletions

@ -24,5 +24,4 @@ public interface FinalSeminarUploadController extends IClusterable {
void storeSeminarDocument(FileUpload upload, User uploader, FinalSeminar seminar) throws Exception;
void storeOpposition(FileUpload upload, User uploader, FinalSeminarOpposition opposition) throws Exception;
}

@ -1,5 +1,7 @@
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.User;
import se.su.dsv.scipro.data.enums.NotificationPriority;
@ -10,5 +12,32 @@ import se.su.dsv.scipro.data.enums.NotificationPriority;
*/
public interface NotificationController {
public void processNotification(User usertoNotify, NotificationMessage notificationMessage, String absoluteUrl, NotificationPriority notificationPriority);
public void processNotification(User usertoNotify, NotificationMessage notificationMessage,
String absoluteUrl, NotificationPriority notificationPriority);
public void createNotificationForPrivateMessage(final User user, final String message,
final String url);
public void createNotificationForConference(final User user, final String message,
final String messageboardTitle, final NotificationPriority notificationPriority,
final String absolutePath);
public void createNotificationForComment(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,
final String url);
public void createNotificationForFinalSeminarEdited(final User user,
final FinalSeminar finalSeminar, final NotificationPriority notificationPriority,
final String absolutePath);
public void createNotificationForCreateFinalSeminar(final User user, final FinalSeminar finalSemniar,
final NotificationPriority notificationPriority, final String absolutePath, final boolean opponent);
public void createNotificationForThesisUploaded(final User user,
final FinalSeminar finalSeminar, final NotificationPriority notificationPriority,
final String absolutePath);
public void createNotificationForOppositionUploaded(final User user,
final FinalSeminarOpposition opposition,
final NotificationPriority notificationPriority, final String absolutePath);
}

@ -3,16 +3,23 @@ package se.su.dsv.scipro.data.controllers.impl;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.persistence.PersistenceException;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import se.su.dsv.scipro.SciProSession;
import se.su.dsv.scipro.data.controllers.FinalSeminarUploadController;
import se.su.dsv.scipro.data.controllers.NotificationController;
import se.su.dsv.scipro.data.controllers.NotificationMessage;
import se.su.dsv.scipro.data.dao.interfaces.CheckPlagiarismEventDao;
import se.su.dsv.scipro.data.dao.interfaces.FileDescriptionDao;
import se.su.dsv.scipro.data.dao.interfaces.FinalSeminarDao;
@ -22,12 +29,20 @@ import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
import se.su.dsv.scipro.data.dataobjects.CheckPlagiarismEvent;
import se.su.dsv.scipro.data.dataobjects.FileDescription;
import se.su.dsv.scipro.data.dataobjects.FinalSeminar;
import se.su.dsv.scipro.data.dataobjects.FinalSeminarActiveParticipation;
import se.su.dsv.scipro.data.dataobjects.FinalSeminarOpposition;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.ProjectFollower;
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.project.pages.ProjectOppositionPage;
import se.su.dsv.scipro.project.pages.ProjectStartPage;
import se.su.dsv.scipro.repository.FileRepository;
import se.su.dsv.scipro.repository.util.FileStorageException;
import se.su.dsv.scipro.supervisor.pages.SupervisorProjectsFinalSeminarPage;
import se.su.dsv.scipro.supervisor.pages.SupervisorStartPage;
import se.su.dsv.scipro.util.PropsUtils;
@Controller("seminarUploadController")
public class FinalSeminarUploadControllerImpl implements FinalSeminarUploadController {
@ -57,6 +72,9 @@ public class FinalSeminarUploadControllerImpl implements FinalSeminarUploadContr
@Autowired
private CheckPlagiarismEventDao checkPlagiarismEventDao;
@Autowired
private NotificationController notificationController;
private FileDescription store(FileUpload upload, String storeToPath) throws IOException {
fileRepository.storeFile(upload, storeToPath);
List<FileDescription> fds = fileRepository.searchFiles(storeToPath);
@ -148,6 +166,27 @@ public class FinalSeminarUploadControllerImpl implements FinalSeminarUploadContr
checkPlagiarismEventDao.save(checkPlagiarismEvent);
}
for (FinalSeminarActiveParticipation fa : seminar.getActiveParticipations()) {
notificationController.createNotificationForThesisUploaded(fa.getUser(), seminar,
NotificationPriority.HIGH, ProjectOppositionPage.getAbsoluteURL());
}
for (FinalSeminarOpposition fo : seminar.getOppositions()) {
notificationController.createNotificationForThesisUploaded(fo.getOpponent().getUser(), seminar,
NotificationPriority.HIGH, ProjectOppositionPage.getAbsoluteURL());
}
for (ProjectFollower pf : seminar.getProject().getProjectFollowers()) {
notificationController.createNotificationForThesisUploaded(pf.getFollower().getUser(), seminar,
NotificationPriority.HIGH, SupervisorProjectsFinalSeminarPage.getAbsoluteURL());
}
if (seminar.getProject().getHeadSupervisor() != null) {
notificationController.createNotificationForThesisUploaded(seminar.getProject().getHeadSupervisor()
.getUser(), seminar, NotificationPriority.HIGH,
SupervisorProjectsFinalSeminarPage.getAbsoluteURL());
}
} catch (IOException e) {
Logger.getRootLogger().log(Level.ERROR,
"Error while storing seminardocument: " + e.getMessage());
@ -178,6 +217,20 @@ public class FinalSeminarUploadControllerImpl implements FinalSeminarUploadContr
opposition.setOpponentReport(fd);
opposition.setDateReported(new Date());
opposition = finalSeminarOppositionDao.save(opposition);
for (Student student : opposition.getFinalSeminar().getProject().getProjectParticipants()) {
notificationController.createNotificationForOppositionUploaded(student.getUser(), opposition,
NotificationPriority.HIGH, ProjectStartPage.getAbsoluteURL());
}
for (ProjectFollower pf : opposition.getFinalSeminar().getProject().getProjectFollowers()) {
notificationController.createNotificationForOppositionUploaded(pf.getFollower().getUser(), opposition,
NotificationPriority.HIGH, SupervisorProjectsFinalSeminarPage.getAbsoluteURL());
}
if (opposition.getFinalSeminar().getProject().getHeadSupervisor() != null) {
notificationController.createNotificationForOppositionUploaded(opposition.getFinalSeminar().getProject().getHeadSupervisor()
.getUser(), opposition, NotificationPriority.HIGH,
SupervisorProjectsFinalSeminarPage.getAbsoluteURL());
}
} catch (IOException e) {
Logger.getRootLogger().log(Level.ERROR,
"Error while storing opposition report: " + e.getMessage());
@ -205,4 +258,10 @@ public class FinalSeminarUploadControllerImpl implements FinalSeminarUploadContr
+ String.valueOf(o.getId()) + "/";
}
}

@ -1,16 +1,21 @@
package se.su.dsv.scipro.data.controllers.impl;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Properties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
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.GeneralSystemSettingsDao;
import se.su.dsv.scipro.data.dao.interfaces.MailEventDao;
import se.su.dsv.scipro.data.dao.interfaces.UserSettingsDao;
import se.su.dsv.scipro.data.dao.interfaces.WebNotificationDao;
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.User;
@ -138,4 +143,227 @@ public class NotificationControllerImpl implements NotificationController {
return message;
}
@Override
public void createNotificationForPrivateMessage(final User user, final String message,
final String url) {
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);
processNotification(user, notificationMessage, url, NotificationPriority.MEDIUM);
}
@Override
public void createNotificationForConference(final User user, final String message,
final String messageboardTitle, final NotificationPriority notificationPriority,
final String absolutePath) {
Properties props = null;
try {
props = PropsUtils.load("notification.properties");
} catch (Exception e) {
e.printStackTrace();
}
String mailSubject = props.getProperty("mailSubject");
String conferenceNotification = props.getProperty("conferenceNotification");
String twoNewLines = props.getProperty("twoNewLines");
String quote = props.getProperty("quote");
String webNotificationMessage = SciProSession.get().getUser() + conferenceNotification
+ quote + messageboardTitle + quote;
String mailMessage = webNotificationMessage + twoNewLines + message;
NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
mailSubject, mailMessage);
processNotification(user, notificationMessage, absolutePath, notificationPriority);
}
@Override
public void createNotificationForComment(final User user, final String message,
final NotificationPriority notificationPriority, final String title,
final String classId, final String absolutePath) {
Properties props = null;
try {
props = PropsUtils.load("notification.properties");
} catch (Exception e) {
e.printStackTrace();
}
String mailSubject = props.getProperty("mailSubject");
String conferenceNotification = props.getProperty("conferenceNotificationComment");
String twoNewLines = props.getProperty("twoNewLines");
String webNotificationMessage = SciProSession.get().getUser() + conferenceNotification
+ title;
String mailMessage = webNotificationMessage + twoNewLines + message;
NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
mailSubject, mailMessage);
processNotification(user, notificationMessage, absolutePath + "&" + classId,
notificationPriority);
}
@Override
public void createNotificationForReplyPrivateMessage(final User user, final String message,
final String absolutePath) {
Properties props = null;
try {
props = PropsUtils.load("notification.properties");
} catch (Exception e) {
e.printStackTrace();
}
String mailSubject = props.getProperty("mailSubject");
String privateMessageNotification = props.getProperty("privateMessageReplyNotification");
String twoNewLines = props.getProperty("twoNewLines");
String webNotificationMessage = SciProSession.get().getUser() + privateMessageNotification;
String mailMessage = webNotificationMessage + twoNewLines + message;
NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
mailSubject, mailMessage);
processNotification(user, notificationMessage, absolutePath, NotificationPriority.MEDIUM);
}
@Override
public void createNotificationForFinalSeminarEdited(final User user,
final FinalSeminar finalSeminar, final NotificationPriority notificationPriority,
final String absolutePath) {
Properties props = null;
try {
props = PropsUtils.load("notification.properties");
} catch (Exception e) {
e.printStackTrace();
}
String mailSubject = props.getProperty("mailSubject");
String finalSeminarReportEdited = props.getProperty("finalSeminarOppositionReportEdited");
String finalSeminarOppositionReportBeenEdited = props
.getProperty("finalSeminarOppositionReportBeenEdited");
String quote = props.getProperty("quote");
String webNotificationMessage = finalSeminarReportEdited + quote
+ finalSeminar.getProject().getTitle() + quote
+ finalSeminarOppositionReportBeenEdited;
String mailMessage = webNotificationMessage;
NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
mailSubject, mailMessage);
processNotification(user, notificationMessage, absolutePath,
notificationPriority);
}
@Override
public void createNotificationForCreateFinalSeminar(final User user, final FinalSeminar finalSemniar,
final NotificationPriority notificationPriority, final String absolutePath, final boolean opponent) {
Properties props = null;
try {
props = PropsUtils.load("notification.properties");
} catch (Exception e) {
e.printStackTrace();
}
String created = props.getProperty("finalSeminarCreated");
String mailSubject = props.getProperty("mailSubject");
String project = "";
if(!opponent){
project = props.getProperty("finalSeminarProject");
}else{
project = props.getProperty("finalSeminarProjectOpponnent");
}
String comma = props.getProperty("comma");
String space = props.getProperty("space");
String quote = props.getProperty("quote");
DateFormat dfFrom = new SimpleDateFormat("yyyy-MM-dd HH:mm");
DateFormat dfTo = new SimpleDateFormat("-HH:mm");
String webNotificationMessage = created + quote + finalSemniar.getProject().getTitle()
+ quote + project + finalSemniar.getRoom() + comma + space
+ dfFrom.format(finalSemniar.getStartDate())
+ dfTo.format(finalSemniar.getEndDate());
String mailMessage = webNotificationMessage;
NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
mailSubject, mailMessage);
processNotification(user, notificationMessage, absolutePath,
notificationPriority);
}
@Override
public void createNotificationForThesisUploaded(final User user,
final FinalSeminar finalSeminar, final NotificationPriority notificationPriority,
final String absolutePath) {
Properties props = null;
try {
props = PropsUtils.load("notification.properties");
} catch (Exception e) {
e.printStackTrace();
}
String mailSubject = props.getProperty("mailSubject");
String finalSeminarReportUploaded = props.getProperty("finalSeminarReportUploaded");
String finalSeminarReportBeenUploaded = props.getProperty("finalSeminarReportBeenUploaded");
String quote = props.getProperty("quote");
String webNotificationMessage = finalSeminarReportUploaded + quote
+ finalSeminar.getProject().getTitle() + quote + finalSeminarReportBeenUploaded;
String mailMessage = webNotificationMessage;
NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
mailSubject, mailMessage);
processNotification(user, notificationMessage, absolutePath,
notificationPriority);
}
@Override
public void createNotificationForOppositionUploaded(final User user,
final FinalSeminarOpposition opposition,
final NotificationPriority notificationPriority, final String absolutePath) {
Properties props = null;
try {
props = PropsUtils.load("notification.properties");
} catch (Exception e) {
e.printStackTrace();
}
String mailSubject = props.getProperty("mailSubject");
String finalSeminarOppositionReportUploaded = props
.getProperty("finalSeminarOppositionReportUploaded");
String finalSeminarOppositionReportBeenUploaded = props
.getProperty("finalSeminarOppositionReportBeenUploaded");
String dot = props.getProperty("dot");
String quote = props.getProperty("quote");
String space = props.getProperty("space");
String webNotificationMessage = finalSeminarOppositionReportUploaded + quote
+ opposition.getFinalSeminar().getProject().getTitle() + quote
+ finalSeminarOppositionReportBeenUploaded
+ opposition.getOpponent().getUser().getFirstName() + space
+ opposition.getOpponent().getUser().getLastName() + dot;
String mailMessage = webNotificationMessage;
NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
mailSubject, mailMessage);
processNotification(user, notificationMessage, absolutePath,
notificationPriority);
}
}