diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java index bc8d28a3bc7e23abc1b7cd544d369c5fdde32c3c..f0307c3b2d614be8e8d11cd0b7dd7bb2678e9d50 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java @@ -6,6 +6,7 @@ import unipotsdam.gf.modules.annotation.controller.AnnotationController; import unipotsdam.gf.modules.assessment.controller.service.AssessmentDBCommunication; import unipotsdam.gf.modules.assessment.controller.service.PeerAssessment; import unipotsdam.gf.modules.communication.service.CommunicationDummyService; +import unipotsdam.gf.modules.feedback.FeedbackImpl; import unipotsdam.gf.modules.group.DummyProjectCreationService; import unipotsdam.gf.modules.group.GroupDAO; import unipotsdam.gf.modules.group.GroupfindingImpl; @@ -55,6 +56,7 @@ public class GFApplicationBinder extends AbstractBinder { bind(ProjectDAO.class).to(ProjectDAO.class); bind(GroupDAO.class).to(GroupDAO.class); bind(TaskDAO.class).to(TaskDAO.class); + bind(FeedbackImpl.class).to(Feedback.class); bindMore(); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/FeedbackImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/FeedbackImpl.java index 300635446604ccfcaef281bc7becdc445da8fa47..fabd7d37d1b621c40cb0d99b1684bb9c6368d429 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/FeedbackImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/FeedbackImpl.java @@ -43,11 +43,11 @@ public class FeedbackImpl implements Feedback { case SingleUser: List<User> usersByProjectName = userDAO.getUsersByProjectName(project.getName()); User firstUser = usersByProjectName.get(0); - User lastUser = usersByProjectName.get(usersByProjectName.size()); + User lastUser = usersByProjectName.get(usersByProjectName.size()-1); submissionController.updateFullSubmission(firstUser, lastUser); - for (int i = 0; i<usersByProjectName.size()-1;i++) { - User submissionOwner = usersByProjectName.get(i+1); + for (int i = 0; i <= usersByProjectName.size()-2;i++) { User feedbackGiver =usersByProjectName.get(i); + User submissionOwner = usersByProjectName.get(i+1); submissionController.updateFullSubmission(submissionOwner, feedbackGiver); } break; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java index 7574532bd0534d49af1a66037d3924cbab128f6b..b5aeb64848d9b4dda47e5c6ba8e3c79b50bfb708 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java @@ -585,14 +585,14 @@ public class SubmissionController implements ISubmission, HasProgress { * link the full submission with a user who is supposed to give feedback to it. * this creates a 1:1 relationship between user and submissions * in case gorup work is selected the relationship should be with a group instead + * * @param submissionOwner * @param feedbackGiver */ public void updateFullSubmission(User submissionOwner, User feedbackGiver) { connection.connect(); String query = "update fullsubmissions set feedbackUser = ? where user = ?"; - connection.issueUpdateStatement(query, feedbackGiver.getEmail(), - submissionOwner.getEmail()); + connection.issueUpdateStatement(query, feedbackGiver.getEmail(), submissionOwner.getEmail()); connection.close(); // TODO implement linking submission with group } @@ -601,20 +601,22 @@ public class SubmissionController implements ISubmission, HasProgress { * @param target * @return */ - public FeedbackTaskData getFeedbackTaskData(User target) { + public FeedbackTaskData getFeedbackTaskData(User target, Project project) { connection.connect(); - String query = "SELECT * from fullsubmissions where feedbackUser = ?"; - VereinfachtesResultSet vereinfachtesResultSet = connection.issueSelectStatement(query, target.getEmail()); - vereinfachtesResultSet.next(); - String submissionId = vereinfachtesResultSet.getString("id"); - String projectName = vereinfachtesResultSet.getString("projectName"); - Category category = Category.RECHERCHE; - FullSubmission fullSubmission = new FullSubmission(submissionId); - fullSubmission.setProjectName(projectName); - connection.close(); - - return new FeedbackTaskData(target, fullSubmission, category); + String query = "SELECT * from fullsubmissions where feedbackUser = ? and projectName = ?"; + VereinfachtesResultSet vereinfachtesResultSet = connection.issueSelectStatement(query, target.getEmail(), + project.getName()); + if (vereinfachtesResultSet.next()) { + String submissionId = vereinfachtesResultSet.getString("id"); + String projectName = vereinfachtesResultSet.getString("projectName"); + Category category = Category.RECHERCHE; + FullSubmission fullSubmission = new FullSubmission(submissionId); + fullSubmission.setProjectName(projectName); + connection.close(); + return new FeedbackTaskData(target, fullSubmission, category); + } else + return null; } public int getFinalizedDossiersCount(Project project) { @@ -642,7 +644,8 @@ public class SubmissionController implements ISubmission, HasProgress { progressData.setNumberNeeded(dossiersNeeded(project)); List<User> strugglersWithSubmission = getStrugglersWithSubmission(project); progressData.setUsersMissing(strugglersWithSubmission); - progressData.setAlmostComplete((progressData.getNumberNeeded()/progressData.getNumberOfCompletion()) <= (1/10)); + progressData + .setAlmostComplete((progressData.getNumberOfCompletion() / progressData.getNumberNeeded()) <= (1 / 10)); return progressData; } @@ -694,8 +697,9 @@ public class SubmissionController implements ISubmission, HasProgress { public List<User> getAllUsersWithFeedbackGiven(Project project) { List<User> result = new ArrayList<>(); connection.connect(); - String query = "select * feedbackUser from fullsubmissions where projectName = ?"; + String query = "select * from fullsubmissions where projectName = ?"; VereinfachtesResultSet vereinfachtesResultSet = connection.issueSelectStatement(query, project.getName()); + while (vereinfachtesResultSet.next()) { result.add(userDAO.getUserByEmail(vereinfachtesResultSet.getString("feedbackUser"))); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java index 6392aeedea5c893c7b35830253aba088aa3a295d..7bb9373b37ab0cf96514f5dcfd060f3df7e422b9 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java @@ -25,12 +25,6 @@ public class DossierCreationProcess { @Inject private SubmissionController submissionController; - @Inject - private Management management; - - @Inject - private UserDAO userDAO; - @Inject private TaskDAO taskDAO; @@ -98,7 +92,7 @@ public class DossierCreationProcess { // persist tasks for feedback taskDAO.persistMemberTask( - new Project(fullSubmission.getProjectName()), TaskName.GIVE_FEEDBACK, Phase.DossierFeedback); + project, TaskName.GIVE_FEEDBACK, 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 9d15f7379f6b99e9b86815ecbcfa74db66c5e1ae..eba823b58994a5c36fd94e7d2c65b9620a287cb1 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java @@ -174,7 +174,9 @@ public class TaskDAO { } case GIVE_FEEDBACK: { - Task feedbackTask = getFeedbackTask(user, vereinfachtesResultSet); + Task feedbackTask = getGeneralTask(vereinfachtesResultSet); + feedbackTask.setTaskData(submissionController.getFeedbackTaskData(user, project)); + feedbackTask.setHasRenderModel(true); result.add(feedbackTask); break; } @@ -268,10 +270,4 @@ public class TaskDAO { persist(project, feedbackTaskData.getTarget(), TaskName.GIVE_FEEDBACK, Phase.DossierFeedback, TaskType.LINKED); } - public Task getFeedbackTask(User target, VereinfachtesResultSet vereinfachtesResultSet) { - Task task = getGeneralTask(vereinfachtesResultSet); - FeedbackTaskData feedbackTaskData = submissionController.getFeedbackTaskData(target); - task.setTaskData(feedbackTaskData); - return task; - } }