diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java index 685e6018bd27b08078e15765b3f52c1d92dac648..15b4be6f88db355d026698f1b53fd9d59a77b709 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java @@ -3,6 +3,7 @@ package unipotsdam.gf.core.states; import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.core.states.model.ProjectPhase; import unipotsdam.gf.interfaces.*; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; @@ -75,7 +76,7 @@ public class PhasesImpl implements IPhases { @Override public void endPhase(ProjectPhase currentPhase, Project project) { ProjectPhase changeToPhase = getNextPhase(currentPhase); - Map<StudentIdentifier, Constraints> tasks = new HashMap<>(); + Map<StudentIdentifier, ConstraintsMessages> tasks = new HashMap<>(); switch (changeToPhase) { case CourseCreation: // saving the state @@ -89,9 +90,9 @@ public class PhasesImpl implements IPhases { case DossierFeedback: // check if everybody has uploaded a dossier - Boolean feedbacksGiven = feedback.checkFeedbackConstraints(project); - if (!feedbacksGiven) { - feedback.assigningMissingFeedbackTasks(project); + tasks = feedback.checkFeedbackConstraints(project); + if (tasks.size()>0) { + iCommunication.informAboutMissingTasks(tasks, project); } else { // send a message to the users informing them about the start of the new phase iCommunication.sendMessageToUsers(project, Messages.NewFeedbackTask(project)); @@ -100,19 +101,18 @@ public class PhasesImpl implements IPhases { break; case Execution: // check if the portfolios have been prepared for evaluation (relevant entries selected) - // todo: Boolean portfoliosReady = iJournal.getPortfoliosForEvaluationPrepared(project); - Boolean portfoliosReady = true; - if (portfoliosReady) { + tasks = iJournal.getPortfoliosForEvaluationPrepared(project); + if (tasks.size()<1) { // inform users about the end of the phase iCommunication.sendMessageToUsers(project, Messages.AssessmentPhaseStarted(project)); saveState(project,changeToPhase); } else { - iJournal.assignMissingPortfolioTasks(project); + iCommunication.informAboutMissingTasks(tasks, project); } break; case Assessment: - Boolean allAssessmentsDone = iPeerAssessment.allAssessmentsDone(project.getId()); - if(allAssessmentsDone){ + tasks = iPeerAssessment.allAssessmentsDone(project.getId()); + if(tasks.size()<1){ iCommunication.sendMessageToUsers(project, Messages.CourseEnds(project)); saveState(project, changeToPhase); }else{ diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java index ac413e63a173d5a8dbbbffbebb90267c06bc984f..27c3d4c54370f6eb056a533bdc098507a703eeeb 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java @@ -1,34 +1,12 @@ package unipotsdam.gf.core.states.model; -import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; - -public class Constraints { - - public static String DossierWritten(StudentIdentifier student){ - return student.getStudentId()+" hat noch kein Dossier hochgeladen."; - } - - public static String FeedbackCount(StudentIdentifier student){ - return student.getStudentId()+" hat noch nicht das erwartete Feedack gegeben."; - } - - public static String QuizCount(StudentIdentifier student){ - return student.getStudentId()+" hat noch kein Quiz erstellt."; - } - - public static String JournalCount(StudentIdentifier student){ - return student.getStudentId()+" hat noch nicht genug Tagebucheinträge verfasst."; - } - - public static String DossierFinalized(StudentIdentifier student){ - return student.getStudentId()+" hat sein Dossier noch nicht finalisiert."; - } - - public static String JournalFinalized(StudentIdentifier student){ - return student.getStudentId()+" hat sein Tagebuch noch nicht finalisiert"; - } - - public static String AssessmentDone(StudentIdentifier student){ - return student.getStudentId()+" hat die Bewertung noch nicht abgeschlossen."; - } +public enum Constraints { + DossierMissing, + FeedbackCount, + QuizCount, + JournalCount, + DossierOpen, + DescriptionsOpen, + JournalOpen, + AssessmentOpen } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ConstraintsMessages.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ConstraintsMessages.java new file mode 100644 index 0000000000000000000000000000000000000000..0d9d940d6212a8cb8353bf908f46386eb362f5bd --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ConstraintsMessages.java @@ -0,0 +1,28 @@ +package unipotsdam.gf.core.states.model; + +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; + +public class ConstraintsMessages { + private final Constraints constraint; + private final StudentIdentifier student; + + public ConstraintsMessages(Constraints enumConstraints, StudentIdentifier student) { + this.constraint = enumConstraints; + this.student = student; + } + + @Override + public String toString() { + switch (constraint) { + case QuizCount: return student.getStudentId()+" hat noch kein Quiz erstellt."; + case DossierMissing: return student.getStudentId()+" hat noch kein Dossier hochgeladen."; + case FeedbackCount: return student.getStudentId()+" hat noch nicht das erwartete Feedack gegeben."; + case JournalCount: return student.getStudentId()+" hat noch nicht genug Tagebucheinträge verfasst."; + case DossierOpen: return student.getStudentId()+" hat sein Dossier noch nicht finalisiert."; + case DescriptionsOpen: return student.getStudentId()+" hat die Descriptions noch nicht abgeschlossen."; + case JournalOpen: return student.getStudentId()+" hat sein Tagebuch noch nicht finalisiert"; + case AssessmentOpen: return student.getStudentId()+" hat die Bewertung noch nicht abgeschlossen."; + default: return "default message"; + } + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java index 773103d2bff7c333fe4ece1983d8e21f420c4341..ab43f4b2d1e756bdf6fec1f0d186d047e671e4f5 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java @@ -1,11 +1,15 @@ package unipotsdam.gf.interfaces; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.peer2peerfeedback.peerfeedback.Model.Peer2PeerFeedback; import unipotsdam.gf.modules.researchreport.ResearchReport; import java.io.File; import java.util.ArrayList; +import java.util.Map; /** @@ -66,7 +70,7 @@ public interface Feedback { * @param project * @return */ - Boolean checkFeedbackConstraints(Project project); + Map<StudentIdentifier, ConstraintsMessages> checkFeedbackConstraints(Project project); /** * TODO implement a routine that assigns missing feedback tasks if someone drops out of a course diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java index 2705893f7f91d50b0052c22d9171aa74de43681c..8c3a7c89b46ae8a9ea0caefe776c43ff93adfb7c 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java @@ -3,11 +3,15 @@ package unipotsdam.gf.interfaces; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.assignments.NotImplementedLogger; +import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.communication.model.Message; import unipotsdam.gf.modules.communication.model.chat.ChatMessage; import unipotsdam.gf.modules.communication.model.chat.ChatRoom; import java.util.List; +import java.util.Map; /** * Provides connection to rocket chat @@ -90,6 +94,9 @@ public interface ICommunication { // TODO implement as Email or whatever void sendSingleMessage(Message message, User user); + //added by Axel. + void informAboutMissingTasks(Map<StudentIdentifier, ConstraintsMessages> tasks, Project project); + // TODO implement as Email or whatever void sendMessageToUsers(Project project, String message); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java index 6d28297f6abd51384a1cd68eeea02043e83948e4..f3b8786d88903d6f703ffcd3a4dad71c2f6d4c36 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java @@ -3,12 +3,14 @@ package unipotsdam.gf.interfaces; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.modules.journal.model.EPortfolio; import unipotsdam.gf.modules.journal.model.Journal; import unipotsdam.gf.modules.researchreport.ResearchReport; import java.io.File; import java.util.List; +import java.util.Map; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; @@ -23,7 +25,7 @@ public interface IJournal { * @return * @param project */ - Boolean getPortfoliosForEvaluationPrepared(Project project) ; + Map<StudentIdentifier, ConstraintsMessages> getPortfoliosForEvaluationPrepared(Project project) ; /** * find out, who hasn't prepared their portfolio for evaluation and send message or highlight in view diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java index 1892ec3961260ec76a97bf0fa2aa0362fdad5070..600ab4578c2b1fabd876fd816df0e73835769d16 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java @@ -1,6 +1,7 @@ package unipotsdam.gf.interfaces; import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.modules.assessment.controller.model.*; import java.util.ArrayList; @@ -98,7 +99,7 @@ public interface IPeerAssessment { String whatToRate(StudentIdentifier student); - Boolean allAssessmentsDone(String projectId); + Map<StudentIdentifier, ConstraintsMessages> allAssessmentsDone(String projectId); void assignMissingAssessmentTasks(Project project); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java index 866d46be26992a8be17bd44f4b2cb6823ca60d37..e373e650be8cddb1e1761fd6675c9755b751550b 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java @@ -1,6 +1,7 @@ package unipotsdam.gf.modules.assessment.controller.service; import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.modules.assessment.controller.model.*; import java.util.ArrayList; @@ -86,7 +87,7 @@ public class FBAssessement extends AssessmentDAO { } @Override - public Boolean allAssessmentsDone(String projectId) { + public Map<StudentIdentifier, ConstraintsMessages> allAssessmentsDone(String projectId) { return null; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java index 871b3c94af79f47dc054d632240a8648ee0992af..9662d75ec20146dd8c6cd74c036cf6bbc46e3bea 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java @@ -1,6 +1,7 @@ package unipotsdam.gf.modules.assessment.controller.service; import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.interfaces.IPeerAssessment; import unipotsdam.gf.modules.assessment.controller.model.*; @@ -61,7 +62,7 @@ public class PeerAssessment implements IPeerAssessment { } @Override - public Boolean allAssessmentsDone(String projectId) { + public Map<StudentIdentifier, ConstraintsMessages> allAssessmentsDone(String projectId) { return null; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java index a5cb9fae5bdddcc98bf3b438665e17860e50a969..06fb0dbb7768c68d3732ff1bfc1555f890a294e6 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java @@ -3,6 +3,7 @@ package unipotsdam.gf.modules.assessment.controller.service; import unipotsdam.gf.assignments.Assignee; import unipotsdam.gf.assignments.NotImplementedLogger; import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.interfaces.IPeerAssessment; import unipotsdam.gf.modules.assessment.controller.model.*; @@ -90,8 +91,8 @@ public class PeerAssessmentDummy implements IPeerAssessment { } @Override - public Boolean allAssessmentsDone(String projectId) { - return true; + public Map<StudentIdentifier, ConstraintsMessages> allAssessmentsDone(String projectId) { + return new HashMap<StudentIdentifier, ConstraintsMessages>(); } @Override diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java index 1aa5c32fee0d669a6956d7822e9b084f294c264f..7f17f00c997b5b5f4897e54f786565c3741619a7 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java @@ -6,7 +6,10 @@ import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.assignments.Assignee; import unipotsdam.gf.assignments.NotImplementedLogger; +import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.interfaces.ICommunication; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.communication.model.Message; import unipotsdam.gf.modules.communication.model.chat.ChatMessage; import unipotsdam.gf.modules.communication.model.chat.ChatRoom; @@ -18,6 +21,7 @@ import javax.inject.Singleton; import java.time.Instant; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; @Resource @@ -115,6 +119,11 @@ public class CommunicationDummyService implements ICommunication { NotImplementedLogger.logAssignment(Assignee.MARTIN, CommunicationDummyService.class, message2); } + @Override + public void informAboutMissingTasks(Map<StudentIdentifier, ConstraintsMessages> tasks, Project project) { + + } + @Override public void sendMessageToUsers(Project project, String message) { // TODO implement as email or directed message, popup after login or whatever diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/IJournalImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/IJournalImpl.java index d4e9d8a8e99438365fa13c1b2ddad1c30c3d7957..9ed61e8c67dc6ca25c3c8c15cfd1113cd7ed8f8e 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/IJournalImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/IJournalImpl.java @@ -4,6 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.interfaces.IJournal; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.journal.model.EPortfolio; @@ -12,7 +13,9 @@ import unipotsdam.gf.modules.researchreport.ResearchReport; import java.io.File; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class IJournalImpl implements IJournal { @@ -23,8 +26,11 @@ public class IJournalImpl implements IJournal { @Override - public Boolean getPortfoliosForEvaluationPrepared(Project project) { - return descriptionService.checkIfAllDescriptionsClosed(project) && journalService.checkIfAllJournalClosed(project); + public Map<StudentIdentifier, ConstraintsMessages> getPortfoliosForEvaluationPrepared(Project project) { + Map<StudentIdentifier, ConstraintsMessages> result =new HashMap<>(); + result.putAll(descriptionService.checkIfAllDescriptionsClosed(project)); + result.putAll(journalService.checkIfAllJournalClosed(project)); + return result; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalService.java index be8dc781a90624f648196f0a74a55203ae053215..028ea0315d2862e76b3f4cea05fc9bb61fdeca6f 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalService.java @@ -2,10 +2,13 @@ package unipotsdam.gf.modules.journal.service; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.model.ConstraintsMessages; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.journal.model.Journal; import unipotsdam.gf.modules.journal.model.JournalFilter; import java.util.ArrayList; +import java.util.Map; /** * Service for learning Journal @@ -57,7 +60,7 @@ public interface JournalService { void closeJournal(String journal); - boolean checkIfAllJournalClosed(Project project); + Map<StudentIdentifier, ConstraintsMessages> checkIfAllJournalClosed(Project project); ArrayList<User> getOpenUserByProject(Project project); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java index e6367199fb8ecea4fc583389ca7cef4b553027d1..a48d76daf6626ab70dcfd2662f85768157e974f7 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java @@ -5,6 +5,8 @@ import org.slf4j.LoggerFactory; import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.journal.model.Journal; import unipotsdam.gf.modules.journal.model.JournalFilter; @@ -14,6 +16,8 @@ import unipotsdam.gf.modules.journal.model.dao.JournalDAOImpl; import unipotsdam.gf.modules.journal.util.JournalUtils; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; public class JournalServiceImpl implements JournalService { @@ -99,8 +103,13 @@ public class JournalServiceImpl implements JournalService { } @Override - public boolean checkIfAllJournalClosed(Project project) { - return (journalDAO.getOpenJournals(project).size() == 0); + public Map<StudentIdentifier, ConstraintsMessages> checkIfAllJournalClosed(Project project) { + Map<StudentIdentifier, ConstraintsMessages> result = new HashMap<>(); + for (String studentId: journalDAO.getOpenJournals(project)) { + StudentIdentifier student = new StudentIdentifier(project.getId(), studentId); + result.put(student, new ConstraintsMessages(Constraints.JournalOpen, student)); + } + return result; } @Override diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java index 22ca2a4b63429bdda422f3be7547439caa8c1f0d..5dbeccab665dad77db6a1283bd7f3266144a8465 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java @@ -3,6 +3,8 @@ package unipotsdam.gf.modules.journal.service; import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.journal.model.Link; import unipotsdam.gf.modules.journal.model.ProjectDescription; @@ -12,6 +14,8 @@ import unipotsdam.gf.modules.journal.model.dao.ProjectDescriptionDAO; import unipotsdam.gf.modules.journal.model.dao.ProjectDescriptionDAOImpl; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; public class ProjectDescriptionImpl implements ProjectDescriptionService { @@ -65,8 +69,14 @@ public class ProjectDescriptionImpl implements ProjectDescriptionService { } @Override - public boolean checkIfAllDescriptionsClosed(Project project) { - return (descriptionDAO.getOpenDescriptions(project).size() == 0); + public Map<StudentIdentifier, ConstraintsMessages> checkIfAllDescriptionsClosed(Project project) { + ArrayList<String> missingStudents = descriptionDAO.getOpenDescriptions(project); + Map<StudentIdentifier, ConstraintsMessages> result = new HashMap<>(); + for (String studentId: missingStudents) { + StudentIdentifier student = new StudentIdentifier(project.getId(), studentId); + result.put(student, new ConstraintsMessages(Constraints.DescriptionsOpen, student)); + } + return result; } @Override diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java index a99aef7d96d10670e5e6b580481b5df727a543cf..03fa481606ba79f2fa30695b4ffb0d76afdedd7e 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java @@ -2,10 +2,12 @@ package unipotsdam.gf.modules.journal.service; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.journal.model.ProjectDescription; import java.util.ArrayList; +import java.util.Map; /** * Service for learning Journal @@ -25,7 +27,7 @@ public interface ProjectDescriptionService { void closeDescription(String projectDescriptionId); - boolean checkIfAllDescriptionsClosed(Project project); + Map<StudentIdentifier, ConstraintsMessages> checkIfAllDescriptionsClosed(Project project); ArrayList<User> getOpenUserByProject(Project project); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java index 0bf9d071c9cdeed87676e3570771afc632324aca..fbfb134cef7a3025f25512123f38ab6345fe95dd 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java @@ -6,12 +6,17 @@ import unipotsdam.gf.assignments.Assignee; import unipotsdam.gf.assignments.NotImplementedLogger; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.interfaces.Feedback; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.peer2peerfeedback.peerfeedback.Model.Peer2PeerFeedback; import unipotsdam.gf.modules.researchreport.ResearchReport; import java.io.File; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; public class DummyFeedback implements Feedback { @@ -21,7 +26,7 @@ public class DummyFeedback implements Feedback { PodamFactory factory = new PodamFactoryImpl(); private static Boolean missingTaskAssigned = false; - private Boolean constraintsFulfilled = false; + private Map<StudentIdentifier, Constraints> openTasks; public DummyFeedback() { @@ -52,12 +57,12 @@ public class DummyFeedback implements Feedback { } @Override - public Boolean checkFeedbackConstraints(Project project) { + public Map<StudentIdentifier, ConstraintsMessages> checkFeedbackConstraints(Project project) { // TODO implement constraints NotImplementedLogger.logAssignment(Assignee.KATHARINA, Feedback.class, "check Feedback constraints", "checking feedback constraints "); - constraintsFulfilled = true; - return constraintsFulfilled; + Map<StudentIdentifier, ConstraintsMessages> result = new HashMap<>(); + return result; } @Override diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java index 284258c144cf54efabc89250533c0573edcd4e43..5a56ac27eaadc58b73e0ca50294af7d0b7557d8a 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java @@ -31,8 +31,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import static org.mockito.Mockito.verify; @@ -232,7 +231,7 @@ public class ActivityFlowTest { verify(feedback).assigningMissingFeedbackTasks(project); // assert that everybody has given and received mockfeedback - assertTrue(feedback.checkFeedbackConstraints(project)); + assertEquals(0, feedback.checkFeedbackConstraints(project).size()); // docent finishes phase phases.endPhase(ProjectPhase.DossierFeedback, project); diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java index 05ce97fb48f7880edf0b40c40b79be515661bc81..63cdccef533e2184eb35533ec5271407b26b7c1f 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java @@ -181,13 +181,13 @@ public class JournalServiceImplTest { ArrayList<Journal> resultJournals = journalDAO.getAllByProject(testProject,testStudent); - assertFalse(journalService.checkIfAllJournalClosed(project)); + assertEquals(0, journalService.checkIfAllJournalClosed(project).size()); for(Journal j : resultJournals){ journalDAO.closeJournal(j.getId()); } - assertTrue(journalService.checkIfAllJournalClosed(project)); + assertEquals(0, journalService.checkIfAllJournalClosed(project).size()); } diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java index 66b84406055c680e3c314354ec6897e9126eff5e..bf20b9726cbb4bd08090c16fb0b665b209ec4099 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java @@ -172,13 +172,13 @@ public class ProjectDescriptionImplTest { Project project = new Project(); project.setId(testProject); - assertFalse(projectDescriptionService.checkIfAllDescriptionsClosed(project)); + assertEquals(0, projectDescriptionService.checkIfAllDescriptionsClosed(project).size()); ProjectDescription resDescription = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent)); descriptionDAO.closeDescription(resDescription.getId()); - assertTrue(projectDescriptionService.checkIfAllDescriptionsClosed(project)); + assertEquals(0,projectDescriptionService.checkIfAllDescriptionsClosed(project).size()); }