Skip to content
Snippets Groups Projects
Commit 20f92f43 authored by Axel's avatar Axel
Browse files

Merge branch 'development_master' of https://github.com/juliandehne/fltrail into development_master

parents 4b2f00d0 0e21662c
No related branches found
No related tags found
No related merge requests found
Showing
with 112 additions and 55 deletions
...@@ -2,7 +2,6 @@ package unipotsdam.gf.modules.group; ...@@ -2,7 +2,6 @@ package unipotsdam.gf.modules.group;
import unipotsdam.gf.modules.project.Management; import unipotsdam.gf.modules.project.Management;
import unipotsdam.gf.modules.project.Project; import unipotsdam.gf.modules.project.Project;
import unipotsdam.gf.modules.project.ProjectConfiguration;
import unipotsdam.gf.modules.project.ProjectDAO; import unipotsdam.gf.modules.project.ProjectDAO;
import unipotsdam.gf.interfaces.IGroupFinding; import unipotsdam.gf.interfaces.IGroupFinding;
import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
...@@ -15,7 +14,6 @@ import java.io.IOException; ...@@ -15,7 +14,6 @@ import java.io.IOException;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
@Path("/group") @Path("/group")
public class GroupView { public class GroupView {
...@@ -96,7 +94,7 @@ public class GroupView { ...@@ -96,7 +94,7 @@ public class GroupView {
@Path("/projects/{projectName}") @Path("/projects/{projectName}")
public void saveGroups(@PathParam("projectName") String projectName, Group[] groups) { public void saveGroups(@PathParam("projectName") String projectName, Group[] groups) {
Project project = new Project(projectName); Project project = new Project(projectName);
groupFormationProcess.finalizeGroups(project, groups); groupfinding.persistGroups(Arrays.asList(groups), project);
} }
} }
...@@ -39,7 +39,7 @@ public class DossierCreationProcess { ...@@ -39,7 +39,7 @@ public class DossierCreationProcess {
* *
* @param project * @param project
*/ */
public void startDossierPhase(Project project) { public void start(Project project) {
Task task = new Task(TaskName.CLOSE_GROUP_FINDING_PHASE, project.getAuthorEmail(), project.getName(), Task task = new Task(TaskName.CLOSE_GROUP_FINDING_PHASE, project.getAuthorEmail(), project.getName(),
Progress.FINISHED); Progress.FINISHED);
taskDAO.updateForUser(task); taskDAO.updateForUser(task);
......
...@@ -57,11 +57,19 @@ public class GroupFormationProcess { ...@@ -57,11 +57,19 @@ public class GroupFormationProcess {
* @param project * @param project
* @param groups * @param groups
*/ */
public void finalizeGroups( Project project, Group ... groups) { public void finish(Project project, Group ... groups) {
groupfinding.persistGroups(Arrays.asList(groups), project);
taskDAO.persistTeacherTask(project, TaskName.CLOSE_GROUP_FINDING_PHASE, Phase.GroupFormation); taskDAO.persistTeacherTask(project, TaskName.CLOSE_GROUP_FINDING_PHASE, Phase.GroupFormation);
/**
* Gruppenphase wird beendet
*/
Task task = new Task(TaskName.CLOSE_GROUP_FINDING_PHASE, project.getAuthorEmail(), project.getName(), Progress.FINISHED); Task task = new Task(TaskName.CLOSE_GROUP_FINDING_PHASE, project.getAuthorEmail(), project.getName(), Progress.FINISHED);
taskDAO.updateForUser(task); taskDAO.updateForUser(task);
// Der Dozent muss nicht mehr auf weitere Studierende warten
Task task2 = new Task(TaskName.WAIT_FOR_PARTICPANTS, project.getAuthorEmail(), project.getName(), Progress
.FINISHED);
taskDAO.updateForUser(task2);
// Die Studierenden müssen nicht mehr auf die Gruppenfindung warten
taskDAO.finishMemberTask(project, TaskName.WAITING_FOR_GROUP);
taskDAO.persistMemberTask(project, TaskName.CONTACT_GROUP_MEMBERS, Phase.GroupFormation); taskDAO.persistMemberTask(project, TaskName.CONTACT_GROUP_MEMBERS, Phase.GroupFormation);
} }
......
package unipotsdam.gf.process.phases; package unipotsdam.gf.process.phases;
import unipotsdam.gf.modules.project.Project; import unipotsdam.gf.modules.project.Project;
import unipotsdam.gf.interfaces.Feedback;
import unipotsdam.gf.interfaces.ICommunication; import unipotsdam.gf.interfaces.ICommunication;
import unipotsdam.gf.interfaces.IJournal; import unipotsdam.gf.interfaces.IJournal;
import unipotsdam.gf.interfaces.IPeerAssessment; import unipotsdam.gf.interfaces.IPeerAssessment;
...@@ -11,7 +10,6 @@ import unipotsdam.gf.modules.communication.Messages; ...@@ -11,7 +10,6 @@ import unipotsdam.gf.modules.communication.Messages;
import unipotsdam.gf.mysql.MysqlConnect; import unipotsdam.gf.mysql.MysqlConnect;
import unipotsdam.gf.process.DossierCreationProcess; import unipotsdam.gf.process.DossierCreationProcess;
import unipotsdam.gf.process.GroupFormationProcess; import unipotsdam.gf.process.GroupFormationProcess;
import unipotsdam.gf.process.constraints.ConstraintsImpl;
import unipotsdam.gf.process.constraints.ConstraintsMessages; import unipotsdam.gf.process.constraints.ConstraintsMessages;
import javax.annotation.ManagedBean; import javax.annotation.ManagedBean;
...@@ -44,6 +42,9 @@ public class PhasesImpl implements IPhases { ...@@ -44,6 +42,9 @@ public class PhasesImpl implements IPhases {
@Inject @Inject
private DossierCreationProcess dossierCreationProcess; private DossierCreationProcess dossierCreationProcess;
@Inject
private GroupFormationProcess groupFormationProcess;
...@@ -83,7 +84,8 @@ public class PhasesImpl implements IPhases { ...@@ -83,7 +84,8 @@ public class PhasesImpl implements IPhases {
// inform users about the formed groups, optionally giving them a hint on what happens next // inform users about the formed groups, optionally giving them a hint on what happens next
iCommunication.sendMessageToUsers(project, Messages.GroupFormation(project)); iCommunication.sendMessageToUsers(project, Messages.GroupFormation(project));
saveState(project, changeToPhase); saveState(project, changeToPhase);
dossierCreationProcess.startDossierPhase(project); groupFormationProcess.finish(project);
dossierCreationProcess.start(project);
break; break;
case DossierFeedback: case DossierFeedback:
// check if everybody has uploaded a dossier // check if everybody has uploaded a dossier
......
...@@ -45,12 +45,14 @@ public class TaskDAO { ...@@ -45,12 +45,14 @@ public class TaskDAO {
task.setProjectName(vereinfachtesResultSet.getString("projectName")); task.setProjectName(vereinfachtesResultSet.getString("projectName"));
task.setGroupTask(vereinfachtesResultSet.getBoolean("groupTask")); task.setGroupTask(vereinfachtesResultSet.getBoolean("groupTask"));
task.setProgress(Progress.valueOf(vereinfachtesResultSet.getString("progress"))); task.setProgress(Progress.valueOf(vereinfachtesResultSet.getString("progress")));
try{ try {
task.setEventCreated(vereinfachtesResultSet.getTimestamp("created").getTime()); task.setEventCreated(vereinfachtesResultSet.getTimestamp("created").getTime());
}catch(Exception e){ } } catch (Exception e) {
try{ }
try {
task.setDeadline(vereinfachtesResultSet.getTimestamp("due").getTime()); task.setDeadline(vereinfachtesResultSet.getTimestamp("due").getTime());
}catch(Exception e){ } } catch (Exception e) {
}
task.setPhase(Phase.valueOf(vereinfachtesResultSet.getString("phase"))); task.setPhase(Phase.valueOf(vereinfachtesResultSet.getString("phase")));
task.setTaskName(TaskName.valueOf(vereinfachtesResultSet.getString("taskName"))); task.setTaskName(TaskName.valueOf(vereinfachtesResultSet.getString("taskName")));
task.setHasRenderModel(false); task.setHasRenderModel(false);
...@@ -107,7 +109,7 @@ public class TaskDAO { ...@@ -107,7 +109,7 @@ public class TaskDAO {
return task; return task;
} }
private void persist(Task task) { private void persist(Task task) {
if (task.getTaskName() == null) { if (task.getTaskName() == null) {
throw new Error("no taskName given"); throw new Error("no taskName given");
...@@ -126,10 +128,7 @@ public class TaskDAO { ...@@ -126,10 +128,7 @@ public class TaskDAO {
connect.connect(); connect.connect();
String query = String query =
"INSERT IGNORE INTO fltrail.tasks (userEmail, projectName, taskName, " + "INSERT IGNORE INTO fltrail.tasks (userEmail, projectName, taskName, " + "groupTask, importance, progress, phase, created, due, " + "taskMode, taskMode2, taskMode3)" + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
"groupTask, importance, progress, phase, created, due, " +
"taskMode, taskMode2, taskMode3)" +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
if (task.getTaskType() == null || task.getTaskType().length == 0) { if (task.getTaskType() == null || task.getTaskType().length == 0) {
try { try {
...@@ -150,7 +149,8 @@ public class TaskDAO { ...@@ -150,7 +149,8 @@ public class TaskDAO {
connect.connect(); connect.connect();
String query = "Select * from tasks where userEmail = ? AND projectName = ?"; String query = "Select * from tasks where userEmail = ? AND projectName = ?";
ArrayList<Task> result = new ArrayList<>(); ArrayList<Task> result = new ArrayList<>();
VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(query, user.getEmail(),project.getName()); VereinfachtesResultSet vereinfachtesResultSet =
connect.issueSelectStatement(query, user.getEmail(), project.getName());
while (vereinfachtesResultSet.next()) { while (vereinfachtesResultSet.next()) {
String taskName = vereinfachtesResultSet.getString("taskName"); String taskName = vereinfachtesResultSet.getString("taskName");
...@@ -199,7 +199,8 @@ public class TaskDAO { ...@@ -199,7 +199,8 @@ public class TaskDAO {
private Task getFinalizeDossierTask(VereinfachtesResultSet vereinfachtesResultSet) { private Task getFinalizeDossierTask(VereinfachtesResultSet vereinfachtesResultSet) {
Task task = getGeneralTask(vereinfachtesResultSet); Task task = getGeneralTask(vereinfachtesResultSet);
task.setTaskData(submissionController.getSubmissionData(new User(task.getUserEmail()), new Project(task.getProjectName()))); task.setTaskData(submissionController
.getSubmissionData(new User(task.getUserEmail()), new Project(task.getProjectName())));
return task; return task;
} }
...@@ -208,6 +209,12 @@ public class TaskDAO { ...@@ -208,6 +209,12 @@ public class TaskDAO {
persist(aDefault); persist(aDefault);
} }
public void persist(Project project, User target, TaskName taskName, Phase phase, Progress progress) {
Task aDefault = createDefault(project, target, taskName, phase);
aDefault.setProgress(progress);
persist(aDefault);
}
public void persistTeacherTask(Project project, TaskName taskName, Phase phase) { public void persistTeacherTask(Project project, TaskName taskName, Phase phase) {
User user = new User(projectDAO.getProjectByName(project.getName()).getAuthorEmail()); User user = new User(projectDAO.getProjectByName(project.getName()).getAuthorEmail());
Task aDefault = createDefault(project, user, taskName, phase); Task aDefault = createDefault(project, user, taskName, phase);
...@@ -236,8 +243,7 @@ public class TaskDAO { ...@@ -236,8 +243,7 @@ public class TaskDAO {
public void updateForUser(Task task) { public void updateForUser(Task task) {
connect.connect(); connect.connect();
String query = String query = "UPDATE tasks set progress = ? where userEmail = ? AND projectName = ? AND taskName = ?";
"UPDATE tasks set progress = ? where userEmail = ? AND projectName = ? AND taskName = ?";
connect.issueUpdateStatement( connect.issueUpdateStatement(
query, task.getProgress().name(), task.getUserEmail(), task.getProjectName(), task.getTaskName()); query, task.getProgress().name(), task.getUserEmail(), task.getProjectName(), task.getTaskName());
connect.close(); connect.close();
...@@ -245,10 +251,8 @@ public class TaskDAO { ...@@ -245,10 +251,8 @@ public class TaskDAO {
public void updateForAll(Task task) { public void updateForAll(Task task) {
connect.connect(); connect.connect();
String query = String query = "UPDATE tasks set progress = ? where projectName = ? AND taskName = ?";
"UPDATE tasks set progress = ? where projectName = ? AND taskName = ?"; connect.issueUpdateStatement(query, task.getProgress().name(), task.getProjectName(), task.getTaskName());
connect.issueUpdateStatement(
query, task.getProgress().name(), task.getProjectName(), task.getTaskName());
connect.close(); connect.close();
} }
...@@ -270,4 +274,14 @@ public class TaskDAO { ...@@ -270,4 +274,14 @@ public class TaskDAO {
persist(project, feedbackTaskData.getTarget(), TaskName.GIVE_FEEDBACK, Phase.DossierFeedback, TaskType.LINKED); persist(project, feedbackTaskData.getTarget(), TaskName.GIVE_FEEDBACK, Phase.DossierFeedback, TaskType.LINKED);
} }
/*
* if this takes long rewrite it as batch update
*/
public void finishMemberTask(Project project, TaskName taskName) {
java.util.List<User> members = userDAO.getUsersByProjectName(project.getName());
for (User member : members) {
Task task = new Task(taskName, member.getEmail(), project.getName(), Progress.FINISHED);
updateForUser(task);
}
}
} }
...@@ -12,6 +12,10 @@ $(document).ready(function() { ...@@ -12,6 +12,10 @@ $(document).ready(function() {
var fullSubmissionId = getQueryVariable("fullSubmissionId"); var fullSubmissionId = getQueryVariable("fullSubmissionId");
var category = getQueryVariable("category"); var category = getQueryVariable("category");
if(category == "TITEL" || category == "titel" ) {
$('#btnBack').hide();
}
// fetch full submission from database // fetch full submission from database
getFullSubmission(getQueryVariable("fullSubmissionId"), function (response) { getFullSubmission(getQueryVariable("fullSubmissionId"), function (response) {
...@@ -70,29 +74,63 @@ $(document).ready(function() { ...@@ -70,29 +74,63 @@ $(document).ready(function() {
$('#btnContinue').click(function () { $('#btnContinue').click(function () {
var submissionId = getQueryVariable("fullSubmissionId"); var submissionId = getQueryVariable("fullSubmissionId");
var category = getQueryVariable("category");
var nextCategory = calculateNextCategory(category);
switch (getQueryVariable("category")) { if (!nextCategory) {
case "RECHERCE" : { // TODO go to feedback page
var nextCategory = "LITERATURVERZEICHNIS"; location.href = "../project/give-feedback.jsp?projectName=" + getProjectName();
location.href = "../annotation/annotation-document.jsp?fullSubmissionId="+submissionId + "&category="+nextCategory; }
} else {
case "LITERATURVERZEICHNIS" : { location.href = "../annotation/annotation-document.jsp?fullSubmissionId="+submissionId + "&category="+nextCategory;
location.href = "../project/give-feedback.jsp?projectName=" + getProjectName();
//location.href = "../annotation/annotation-document.jsp?fullSubmissionId="+submissionId +
// "&category="+nextCategory;
}
} }
}); });
/** /**
* back button * back button
*/ */
$('#btnBack').click(function () { $('#btnBack').click(function () {
location.href = "../../project/projects-student.jsp" ;
var submissionId = getQueryVariable("fullSubmissionId");
var category = getQueryVariable("category");
var nextCategory = calculateLastCategory(category);
if (!nextCategory) {
}
else {
location.href = "../annotation/annotation-document.jsp?fullSubmissionId="+submissionId + "&category="+nextCategory;
}
}); });
function calculateNextCategory(current) {
var categories = ["TITEL", "RECHERCHE", "LITERATURVERZEICHNIS", "FORSCHUNGSFRAGE", "UNTERSUCHUNGSKONZEPT", "METHODIK", "DURCHFUEHRUNG", "AUSWERTUNG"];
var result = false;
for (var i = 0; i< categories.length -1; i++) {
if (categories[i] == current) {
result = categories[i + 1];
}
}
return result
}
function calculateLastCategory(current) {
var categories = ["TITEL", "RECHERCHE", "LITERATURVERZEICHNIS", "FORSCHUNGSFRAGE", "UNTERSUCHUNGSKONZEPT", "METHODIK", "DURCHFUEHRUNG", "AUSWERTUNG"];
var result = false;
for (var i = 1; i< categories.length; i++) {
if (categories[i] == current) {
result = categories[i - 1];
}
}
return result
}
/** /**
* validation of annotation create form inside the modal * validation of annotation create form inside the modal
*/ */
......
...@@ -4,7 +4,7 @@ function connect(targetId, targetCategory) { ...@@ -4,7 +4,7 @@ function connect(targetId, targetCategory) {
var host = document.location.host; var host = document.location.host;
var pathname = document.location.pathname; var pathname = document.location.pathname;
ws = new WebSocket("ws://" + host + "/ws/annotation/" + targetId + "/" + targetCategory); ws = new WebSocket("ws://" + host + "/gemeinsamforschen/ws/annotation/" + targetId + "/" + targetCategory);
ws.onmessage = function (e) { ws.onmessage = function (e) {
var message = JSON.parse(e.data); var message = JSON.parse(e.data);
......
...@@ -93,7 +93,7 @@ public class GroupPhaseTaskTest { ...@@ -93,7 +93,7 @@ public class GroupPhaseTaskTest {
for (User student : students) { for (User student : students) {
group.addMember(student); group.addMember(student);
} }
groupFormationProcess.finalizeGroups(project, group); groupFormationProcess.finish(project, group);
} }
......
...@@ -177,9 +177,6 @@ ALTER TABLE `fullsubmissions` ...@@ -177,9 +177,6 @@ ALTER TABLE `fullsubmissions`
ALTER TABLE `groups` ALTER TABLE `groups`
ADD PRIMARY KEY (`id`); ADD PRIMARY KEY (`id`);
ALTER TABLE `tasks`
ADD PRIMARY KEY (`id`);
ALTER TABLE `groupuser` ALTER TABLE `groupuser`
ADD KEY `userEmail` (`userEmail`), ADD KEY `userEmail` (`userEmail`),
ADD KEY `groupId` (`groupId`); ADD KEY `groupId` (`groupId`);
......
INSERT IGNORE INTO projects (name, password, active, timecreated, author, adminPassword, phase) VALUES ("test1", "", 1,
current_timestamp, "vodka@yolo.com", "", "GroupFormation" );
INSERT IGNORE INTO projects (name, password, active, timecreated, author, adminPassword, phase) VALUES ("test2", "", 1,
current_timestamp, "vodka@yolo.com", "", "GroupFormation" );
insert IGNORE into projectuser (projectName, userEmail) VALUES ("test1", "vodkas@yolo.com");
insert IGNORE into projectuser (projectName, userEmail) VALUES ("test1", "vodkass@yolo.com");
insert IGNORE into projectuser (projectName, userEmail) VALUES ("test2", "vodkas@yolo.com");
insert IGNORE into projectuser (projectName, userEmail) VALUES ("test2", "vodkass@yolo.com");
\ No newline at end of file
...@@ -8,14 +8,3 @@ INSERT IGNORE INTO users (name, password, email, rocketChatId, rocketChatAuthTok ...@@ -8,14 +8,3 @@ INSERT IGNORE INTO users (name, password, email, rocketChatId, rocketChatAuthTok
"egal", "vodka@yolo.com", "egal", "egal", 0); "egal", "vodka@yolo.com", "egal", "egal", 0);
INSERT IGNORE INTO projects (name, password, active, timecreated, author, adminPassword, phase) VALUES ("test1", "", 1,
current_timestamp, "vodka@yolo.com", "", "GroupFormation" );
INSERT IGNORE INTO projects (name, password, active, timecreated, author, adminPassword, phase) VALUES ("test2", "", 1,
current_timestamp, "vodka@yolo.com", "", "GroupFormation" );
insert IGNORE into projectuser (projectName, userEmail) VALUES ("test1", "vodkas@yolo.com");
insert IGNORE into projectuser (projectName, userEmail) VALUES ("test1", "vodkass@yolo.com");
insert IGNORE into projectuser (projectName, userEmail) VALUES ("test2", "vodkas@yolo.com");
insert IGNORE into projectuser (projectName, userEmail) VALUES ("test2", "vodkass@yolo.com");
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment