Skip to content
Snippets Groups Projects
Commit d896f615 authored by Julian Dehne's avatar Julian Dehne
Browse files

bugfixing: fixed small errors in annotation module

parent cb2482e9
No related branches found
No related tags found
No related merge requests found
Showing
with 135 additions and 78 deletions
......@@ -28,7 +28,7 @@ import java.util.logging.Logger;
public class SubmissionController implements ISubmission {
@Inject
MysqlConnect connection;
private MysqlConnect connection;
private static final org.slf4j.Logger log = LoggerFactory.getLogger(SubmissionController.class);
......@@ -106,7 +106,6 @@ public class SubmissionController implements ISubmission {
submissionPartPostRequest.getCategory().toString().toUpperCase());
for (SubmissionPartBodyElement element : submissionPartPostRequest.getBody()) {
// calculate how many similar elements are next to the new element
......@@ -551,4 +550,16 @@ public class SubmissionController implements ISubmission {
return data;
}
/**
* if the submission is marked as final, the annotations cannot be updated anymore
*
* @param fullSubmission
*/
public void markAsFinal(FullSubmission fullSubmission) {
connection.connect();
String query = "update fullsubmission set finalized = ? where id = ?";
connection.issueUpdateStatement(query, true, fullSubmission.getId());
connection.close();
}
}
......@@ -22,6 +22,10 @@ public class FullSubmission {
this.projectName = projectName;
}
public FullSubmission(String submissionId) {
this.id = submissionId;
}
// methods
public String getId() {
return id;
......
......@@ -11,14 +11,18 @@ import unipotsdam.gf.modules.submission.model.SubmissionProjectRepresentation;
import unipotsdam.gf.modules.submission.model.SubmissionResponse;
import unipotsdam.gf.modules.user.User;
import unipotsdam.gf.process.DossierCreationProcess;
import unipotsdam.gf.session.GFContexts;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.ArrayList;
......@@ -127,4 +131,14 @@ public class SubmissionService {
return Response.status(Response.Status.NOT_FOUND).entity(response).build();
}
}
@POST
@Path("/id/{submissionId}/finalize")
public void finalize (@PathParam("submissionId") String submissionId, @Context HttpServletRequest req) {
// TODO implement
String userEmail = (String) req.getSession().getAttribute(GFContexts.USEREMAIL);
dossierCreationProcess.finalizeDossier(new FullSubmission(submissionId), new User(userEmail));
}
}
......@@ -9,9 +9,7 @@ import unipotsdam.gf.modules.submission.model.FullSubmissionPostRequest;
import unipotsdam.gf.modules.user.User;
import unipotsdam.gf.modules.user.UserDAO;
import unipotsdam.gf.process.phases.Phase;
import unipotsdam.gf.process.tasks.TaskDAO;
import unipotsdam.gf.process.tasks.TaskName;
import unipotsdam.gf.process.tasks.TaskType;
import unipotsdam.gf.process.tasks.*;
import javax.inject.Inject;
import javax.inject.Singleton;
......@@ -41,8 +39,33 @@ public class DossierCreationProcess {
FullSubmissionPostRequest fullSubmissionPostRequest, User user, Project project) {
FullSubmission fullSubmission = submissionController.addFullSubmission(fullSubmissionPostRequest);
// this completes the upload task
Task task = new Task(TaskName.UPLOAD_DOSSIER, user.getEmail(), project.getName(), Progress.FINISHED);
taskDAO.updateForUser(task);
// this triggers the annotate task
taskDAO.persist(project, user, TaskName.ANNOTATE_DOSSIER, Phase.DossierFeedback, TaskType.LINKED);
return fullSubmission;
}
/**
*
* @param fullSubmission
* @param user
*/
public void finalizeDossier(FullSubmission fullSubmission, User user) {
// mark as final in db
submissionController.markAsFinal(fullSubmission);
// mark annotate task as finished in db
Task task = new Task(TaskName.ANNOTATE_DOSSIER, user.getEmail(), fullSubmission.getProjectId(), Progress.FINISHED);
taskDAO.updateForUser(task);
}
/* public void finalizeDossier(FullSubmission fullSubmission, User user) {
TODO
}
public*/
}
......@@ -79,7 +79,7 @@ public class ProjectCreationProcess {
taskDao.persistTeacherTask(project, TaskName.EDIT_FORMED_GROUPS, Phase.GroupFormation);
} else {
taskDao.persistTeacherTask(project, TaskName.CLOSE_GROUP_FINDING_PHASE, Phase.GroupFormation);
taskDao.updateForAll(task, Progress.FINISHED);
taskDao.updateForAll(task);
//phases.endPhase(Phase.GroupFormation, project);
}
}
......
......@@ -45,6 +45,19 @@ public class Task {
public Task() {
}
public Task(TaskName taskName, String userEmail, String projectName, Progress progress) {
this.taskName = taskName;
this.userEmail = userEmail;
this.projectName = projectName;
this.progress = progress;
}
public Task(TaskName taskName, String projectName, Progress progress) {
this.taskName = taskName;
this.projectName = projectName;
this.progress = progress;
}
public TaskName getTaskName() {
return taskName;
}
......
......@@ -103,6 +103,44 @@ public class TaskDAO {
return task;
}
private void persist(Task task) {
if (task.getTaskName() == null) {
throw new Error("no taskName given");
}
String taskMode2 = "";
if (task.getTaskType() != null && task.getTaskType().length > 1) {
taskMode2 = task.getTaskType()[1].toString();
}
String taskMode3 = "";
if (task.getTaskType() != null && task.getTaskType().length > 2) {
taskMode3 = task.getTaskType()[2].toString();
}
connect.connect();
String query =
"INSERT IGNORE INTO fltrail.tasks (userEmail, projectName, taskName, " +
"groupTask, importance, progress, phase, created, due, " +
"taskMode, taskMode2, taskMode3)" +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
if (task.getTaskType() == null || task.getTaskType().length == 0) {
try {
throw new Exception("set a task type");
} catch (Exception e) {
e.printStackTrace();
}
}
connect.issueInsertOrDeleteStatement(query, task.getUserEmail(), task.getProjectName(), task.getTaskName(),
task.getGroupTask(), task.getImportance(), task.getProgress(), task.getPhase(), null,
task.getDeadline(), task.getTaskType()[0].toString(), taskMode2, taskMode3);
connect.close();
}
// get all the tasks a user has in a specific project
public ArrayList<Task> getTasks(User user, Project project) {
connect.connect();
......@@ -178,59 +216,21 @@ public class TaskDAO {
return task;
}
private void persist(Task task) {
if (task.getTaskName() == null) {
throw new Error("no taskName given");
}
String taskMode2 = "";
if (task.getTaskType() != null && task.getTaskType().length > 1) {
taskMode2 = task.getTaskType()[1].toString();
}
String taskMode3 = "";
if (task.getTaskType() != null && task.getTaskType().length > 2) {
taskMode3 = task.getTaskType()[2].toString();
}
connect.connect();
String query =
"INSERT IGNORE INTO fltrail.tasks (userEmail, projectName, taskName, " +
"groupTask, importance, progress, phase, created, due, " +
"taskMode, taskMode2, taskMode3)" +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
if (task.getTaskType() == null || task.getTaskType().length == 0) {
try {
throw new Exception("set a task type");
} catch (Exception e) {
e.printStackTrace();
}
}
connect.issueInsertOrDeleteStatement(query, task.getUserEmail(), task.getProjectName(), task.getTaskName(),
task.getGroupTask(), task.getImportance(), task.getProgress(), task.getPhase(), null,
task.getDeadline(), task.getTaskType()[0].toString(), taskMode2, taskMode3);
connect.close();
}
public void updateForUser(Task task, Progress progress) {
public void updateForUser(Task task) {
connect.connect();
String query =
"UPDATE tasks set progress = ? where userEmail = ? AND projectName = ? AND taskName = ?";
connect.issueUpdateStatement(
query, progress.name(), task.getUserEmail(), task.getProjectName(), task.getTaskName());
query, task.getProgress().name(), task.getUserEmail(), task.getProjectName(), task.getTaskName());
connect.close();
}
public void updateForAll(Task task, Progress progress) {
public void updateForAll(Task task) {
connect.connect();
String query =
"UPDATE tasks set progress = ? where projectName = ? AND taskName = ?";
connect.issueUpdateStatement(
query, progress.name(), task.getProjectName(), task.getTaskName());
query, task.getProgress().name(), task.getProjectName(), task.getTaskName());
connect.close();
}
......
INSERT INTO `projects` (`id`, `password`, `active`, `timecreated`, `authorEmail`, `adminPassword`, `token`, `phase`) VALUES
('Kaleo', 'password', 1, '2018-09-07 12:13:21', 'axel', '1234', '4pingsfelmf4', 'CourseCreation'),
('gemeinsamForschen', 'password', 1, '2018-09-13 08:55:02', 'axel', '1234', '32ptng45g9', 'Execution');
COMMIT;
\ No newline at end of file
drop TABLE `users`;
CREATE TABLE if not exists `users` (
`name` varchar(100) NOT NULL,
`password` varchar(200) NOT NULL,
`email` varchar(255) NOT NULL,
`token` varchar(800) NOT NULL,
`rocketChatId` varchar(400) NOT NULL,
`rocketChatAuthToken` varchar(800) NOT NULL,
UNIQUE (email)
)ENGINE = InnoDB DEFAULT CHARSET = utf8;
INSERT INTO `users` (`name`, `password`, `email`, `token`, `rocketChatId`, `rocketChatAuthToken`) VALUES
('teststudent1', 'egal', 'test1@uni.de', 'test1','1','abc');
INSERT INTO `users` (`name`, `password`, `email`, `token`, `rocketChatId`, `rocketChatAuthToken`) VALUES
('teststudent1', 'egal', 'test2@uni.de', 'test1','1','abc');
INSERT INTO `users` (`name`, `password`, `email`, `token`, `rocketChatId`, `rocketChatAuthToken`) VALUES
('teststudent1', 'egal', 'test3@uni.de', 'test1','1','abc');
INSERT INTO `users` (`name`, `password`, `email`, `token`, `rocketChatId`, `rocketChatAuthToken`) VALUES
('teststudent1', 'egal', 'test4@uni.de', 'test1','1','abc');
\ No newline at end of file
......@@ -30,6 +30,7 @@ public class UpdateDB {
UpdateDB updateDB = new UpdateDB(connection, true, false);
System.out.println(new java.io.File( "." ).getCanonicalPath());
updateDB.runScript(new FileReader("src/test/resources/database/fltrail.sql"));
updateDB.runScript(new FileReader("src/test/resources/database/testuser.sql"));
}
public UpdateDB(Connection connection, boolean stopOnError, boolean autoCommit) {
......
INSERT IGNORE INTO users (name, password, email, rocketChatId, rocketChatAuthToken, isStudent) values ("Julian Dehne",
"egal", "vodkas@yolo.com", "egal", "egal", 1);
INSERT IGNORE INTO users (name, password, email, rocketChatId, rocketChatAuthToken, isStudent) values ("Axel Wiepke",
"egal", "vodkass@yolo.com", "egal", "egal", 1);
INSERT IGNORE INTO users (name, password, email, rocketChatId, rocketChatAuthToken, isStudent) values ("Herr Lehrer",
"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