Moved all create notifiavtions to notifiactioncontroller and added
notifications to finalseminarcontroller Change-Id: I85022739718296f67b64daf3299992b34419bcc0
This commit is contained in:
parent
0135f410d9
commit
76e8c992b7
src/main/java/se/su/dsv/scipro/data/controllers
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user