From b7202b947415475f6bfaf73f045dcccea09259fc Mon Sep 17 00:00:00 2001
From: wiepke <wiepke@uni-potsdam.de>
Date: Wed, 24 Jul 2019 13:09:29 +0200
Subject: [PATCH] tool works with just one group fix #115

---
 .../unipotsdam/gf/config/FLTrailConfig.java   |  2 +-
 .../gf/modules/assessment/AssessmentDAO.java  |  6 ++-
 .../submission/view/SubmissionService.java    |  3 +-
 .../gf/process/DossierCreationProcess.java    | 51 ++++++++++++-------
 .../unipotsdam/gf/process/tasks/TaskDAO.java  | 13 ++---
 .../gf/process/tasks/TaskMapper.java          | 17 ++++---
 6 files changed, 56 insertions(+), 36 deletions(-)

diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/FLTrailConfig.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/FLTrailConfig.java
index 6631095f..18ede696 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/FLTrailConfig.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/FLTrailConfig.java
@@ -5,7 +5,7 @@ public class FLTrailConfig {
     public FLTrailConfig() {
     }
 
-    public static Boolean rocketChatIsOnline = true;
+    public static Boolean rocketChatIsOnline = false;
     public static Boolean wizardSimulatesFullAlgorithms = false;
 
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentDAO.java
index 33f9572c..55902541 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentDAO.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentDAO.java
@@ -69,7 +69,11 @@ public class AssessmentDAO {
         assessmentProgress.setNumberOfGroupReportsMissing(numberOfGroups - reportCount);
 
         int nEA = getNumberOfGroupsWithoutExternalAssessment(project);
-        assessmentProgress.setNumberOfGroupsWithoutExternalAssessment(nEA);
+        if (numberOfGroups > 1) {
+            assessmentProgress.setNumberOfGroupsWithoutExternalAssessment(nEA);
+        } else {
+            assessmentProgress.setNumberOfGroupsWithoutExternalAssessment(0);
+        }
 
         int nSIA = getNumberOfStudentsWithoutInternalAssesment(project);
         assessmentProgress.setNumberOfStudentsWithoutInternalAsssessment(nSIA);
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java
index 6e7bafa5..b50dc281 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java
@@ -1,6 +1,5 @@
 package unipotsdam.gf.modules.submission.view;
 
-import com.itextpdf.text.DocumentException;
 import unipotsdam.gf.modules.assessment.controller.model.Categories;
 import unipotsdam.gf.modules.fileManagement.FileRole;
 import unipotsdam.gf.modules.group.GroupDAO;
@@ -107,7 +106,7 @@ public class SubmissionService {
     @Path("/full/update")
     public Response updateFullSubmission(
             @Context HttpServletRequest req, FullSubmissionPostRequest fullSubmissionPostRequest,
-            @QueryParam("finalize") Boolean finalize) throws IOException, DocumentException {
+            @QueryParam("finalize") Boolean finalize) throws Exception {
         String userEmail = (String) req.getSession().getAttribute(GFContexts.USEREMAIL);
         User user = userDAO.getUserByEmail(userEmail);
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java
index ef38f6e4..8a563aab 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java
@@ -12,6 +12,7 @@ import unipotsdam.gf.modules.fileManagement.FileType;
 import unipotsdam.gf.modules.group.Group;
 import unipotsdam.gf.modules.group.GroupDAO;
 import unipotsdam.gf.modules.project.Project;
+import unipotsdam.gf.modules.project.ProjectDAO;
 import unipotsdam.gf.modules.reflection.model.ReflectionQuestion;
 import unipotsdam.gf.modules.submission.controller.SubmissionController;
 import unipotsdam.gf.modules.submission.model.FullSubmission;
@@ -45,6 +46,9 @@ public class DossierCreationProcess {
     @Inject
     private UserDAO userDAO;
 
+    @Inject
+    private ProjectDAO projectDao;
+
     @Inject
     private ConstraintsImpl constraints;
 
@@ -81,8 +85,8 @@ public class DossierCreationProcess {
 
 
     /**
-     *
      * add the initial dossier
+     *
      * @param fullSubmissionPostRequest*
      * @param user
      * @param project
@@ -124,6 +128,7 @@ public class DossierCreationProcess {
 
     /**
      * update dossier by group
+     *
      * @param fullSubmissionPostRequest
      * @param user
      * @param project
@@ -133,7 +138,7 @@ public class DossierCreationProcess {
      * @throws DocumentException
      */
     public FullSubmission updateSubmission(FullSubmissionPostRequest fullSubmissionPostRequest,
-                                           User user, Project project, Boolean finalize) throws IOException, DocumentException {
+                                           User user, Project project, Boolean finalize) throws Exception {
         // delete old files
         fileManagementService.deleteFiles(new Project(fullSubmissionPostRequest.getProjectName()), user, fullSubmissionPostRequest.getFileRole());
         // write new ones
@@ -145,7 +150,8 @@ public class DossierCreationProcess {
         submissionController.markAsFinal(fullSubmission, finalize);
 
         if (finalize) {
-            createCloseFeedBackPhaseTask(new Project(fullSubmission.getProjectName()), user);
+            Project project1 = projectDao.getProjectByName(fullSubmission.getProjectName());
+            createCloseFeedBackPhaseTask(project1, user);
         }
 
         return fullSubmission;
@@ -165,6 +171,7 @@ public class DossierCreationProcess {
 
     /**
      * save feedback
+     *
      * @param contributionFeedback
      * @return
      */
@@ -175,6 +182,7 @@ public class DossierCreationProcess {
 
     /**
      * Feedback is persisted and tasks are created accordingly
+     *
      * @param groupId
      * @param project
      */
@@ -195,7 +203,7 @@ public class DossierCreationProcess {
         taskDAO.updateForAll(new Task(TaskName.CONTACT_GROUP_MEMBERS, null, project, Progress.FINISHED));
 
         User user = userDAO.getUserByEmail(project.getAuthorEmail());
-        Task task = new Task(TaskName.CLOSE_DOSSIER_FEEDBACK_PHASE, user, project, Progress.FINISHED );
+        Task task = new Task(TaskName.CLOSE_DOSSIER_FEEDBACK_PHASE, user, project, Progress.FINISHED);
         taskDAO.updateForUser(task);
 
         //todo: implement communication stuff
@@ -237,8 +245,8 @@ public class DossierCreationProcess {
     }
 
     /**
-     * @param user                      User who uploaded the Submission for his / her group
-     * @param project                   the project the submission was written for
+     * @param user    User who uploaded the Submission for his / her group
+     * @param project the project the submission was written for
      * @return the fullSubmission with correct ID
      */
     private void notifyAboutSubmission(User user, Project project) {
@@ -268,19 +276,26 @@ public class DossierCreationProcess {
         Task taskAnnotate = new Task(TaskName.ANNOTATE_DOSSIER, user, project,
                 Progress.FINISHED);
         taskDAO.updateForGroup(taskAnnotate);
-        taskDAO.persistTaskGroup(project, user, TaskName.GIVE_FEEDBACK, Phase.DossierFeedback);
-        createReeditDossierTask(project, groupDAO.getMyGroupId(user, project));
-        if (constraints.checkIfFeedbackCanBeDistributed(project)) {
-            // create Task to give Feedback
-            List<Group> groupsInProject = groupDAO.getGroupsByProjectName(project.getName());
-            List<Task> allFeedbackTasks = new ArrayList<>();
-            for (Group group : groupsInProject) {
-                Task giveFeedbackTask1 = taskDAO.getTasksWithTaskName(group.getId(), project, TaskName.GIVE_FEEDBACK);
-                if (!allFeedbackTasks.contains(giveFeedbackTask1))
-                    allFeedbackTasks.add(giveFeedbackTask1);
+        List<Group> groupsInProject = groupDAO.getGroupsByProjectName(project.getName());
+        if (groupsInProject.size() > 1) {
+            taskDAO.persistTaskGroup(project, user, TaskName.GIVE_FEEDBACK, Phase.DossierFeedback);
+            createReeditDossierTask(project, groupDAO.getMyGroupId(user, project));
+            if (constraints.checkIfFeedbackCanBeDistributed(project)) {
+                // create Task to give Feedback
+                List<Task> allFeedbackTasks = new ArrayList<>();
+                for (Group group : groupsInProject) {
+                    Task giveFeedbackTask1 = taskDAO.getTasksWithTaskName(group.getId(), project, TaskName.GIVE_FEEDBACK);
+                    if (!allFeedbackTasks.contains(giveFeedbackTask1))
+                        allFeedbackTasks.add(giveFeedbackTask1);
+                }
+                //specifies user, who needs to give a feedback in DB
+                feedback.specifyFeedbackTasks(allFeedbackTasks);
             }
-            //specifies user, who needs to give a feedback in DB
-            feedback.specifyFeedbackTasks(allFeedbackTasks);
+        } else {
+            //There is just one group in the project
+
+            taskDAO.createGroupTask(project, groupDAO.getMyGroupId(user, project), TaskName.REEDIT_DOSSIER, Phase.DossierFeedback, Progress.FINISHED);
+            taskDAO.persistTeacherTask(project, TaskName.CLOSE_DOSSIER_FEEDBACK_PHASE, Phase.DossierFeedback);
         }
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java
index b96519d5..fcc5e019 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java
@@ -22,11 +22,7 @@ import unipotsdam.gf.process.phases.Phase;
 import javax.annotation.ManagedBean;
 import javax.inject.Inject;
 import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -381,7 +377,12 @@ public class TaskDAO {
             case CLOSE_DOSSIER_FEEDBACK_PHASE: {
                 Task task = getGeneralTask(vereinfachtesResultSet);
                 task.setHasRenderModel(true);
-                List<Group> missingFeedbacks = constraints.checkWhichDossiersAreNotFinalized(project);
+                List<Group> missingFeedbacks;
+                if (groupDAO.getGroupsByProjectName(project.getName()).size() > 1) {
+                    missingFeedbacks = constraints.checkWhichDossiersAreNotFinalized(project);
+                } else {
+                    missingFeedbacks = new ArrayList<>();
+                }
                 task.setTaskData(missingFeedbacks);  //frontendCheck if missingFeedbacks.size ==0
                 result = task;
                 Task waitingForDossiers = new Task(
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskMapper.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskMapper.java
index 79712912..145b2244 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskMapper.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskMapper.java
@@ -79,14 +79,15 @@ public class TaskMapper {
         Integer groupResult;
         List<Integer> groups = buildGroupIndexes(project);
         // every user gets the next group in the cycle
-        if (groups.indexOf(groupId) + 1 == groups.size()) {
-            groupResult = groups.get(0);
-        } else {
-            groupResult = groups.get(groups.indexOf(groupId) + 1);
+        if (groups.size() > 1) {
+            if (groups.indexOf(groupId) + 1 == groups.size()) {
+                groupResult = groups.get(0);
+            } else {
+                groupResult = groups.get(groups.indexOf(groupId) + 1);
+            }
+            Group group = new Group(project.getName());
+            group.setId(groupResult);
+            assessmentDAO.persistMapping(new TaskMapping(user, group, null, taskName, project));
         }
-        Group group = new Group(project.getName());
-        group.setId(groupResult);
-
-        assessmentDAO.persistMapping(new TaskMapping(user, group, null, taskName, project));
     }
 }
-- 
GitLab