diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java index f78e0499a449729639899bb6c225b40eb8472e27..80a97c52f12c1de0830f3409a33d5ab16875ba61 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java @@ -7,6 +7,7 @@ import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.core.management.project.ProjectDAO; import unipotsdam.gf.core.management.user.UserDAO; import unipotsdam.gf.core.states.PhasesImpl; +import unipotsdam.gf.core.tasks.TaskDAO; import unipotsdam.gf.core.testsandbox.TestList; import unipotsdam.gf.core.testsandbox.TestListInterface; import unipotsdam.gf.interfaces.Feedback; @@ -46,5 +47,6 @@ public class GFApplicationBinder extends AbstractBinder { bind(GroupDAO.class).to(GroupDAO.class); bind(MysqlConnect.class).to(MysqlConnect.class); bind(GroupfindingImpl.class).to(IGroupFinding.class); + bind(TaskDAO.class).to(TaskDAO.class); } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/Importance.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/Importance.java new file mode 100644 index 0000000000000000000000000000000000000000..07327fa622592c7b86cdc42709ae7a6525420563 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/Importance.java @@ -0,0 +1,7 @@ +package unipotsdam.gf.core.tasks; + +public enum Importance { + HIGH, + MEDIUM, + LOW +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/Progress.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/Progress.java new file mode 100644 index 0000000000000000000000000000000000000000..e234b93bdfa487ee511873269487d773551c7bb1 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/Progress.java @@ -0,0 +1,7 @@ +package unipotsdam.gf.core.tasks; + +public enum Progress { + FINISHED, + INPROGRESS, + JUSTSTARTED +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/Task.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/Task.java new file mode 100644 index 0000000000000000000000000000000000000000..8fdedeb4c861d14b2a7183866372e3d4fef2007f --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/Task.java @@ -0,0 +1,139 @@ +package unipotsdam.gf.core.tasks; + +import unipotsdam.gf.core.states.model.ProjectPhase; + +import java.sql.Timestamp; + +public class Task { + // as in "Feedback" + private String technicalName; + // as in "Feedback geben" + private String title; + + private Enum taskType; + + // optional: only relevant if the task is show on the side + private Object taskData; + private Enum renderModel; + + // relevant for time based warnings + private Timestamp eventCreated; + private Timestamp deadline; + + private Boolean groupTask; + private Importance importance; + private ProjectPhase phase; + + private String link; + + public String getUserToken() { + return userToken; + } + + public void setUserToken(String userToken) { + this.userToken = userToken; + } + + private String userToken; + + public String getProjectToken() { + return projectToken; + } + + public void setProjectToken(String projectToken) { + this.projectToken = projectToken; + } + + private String projectToken; + + public Task() { + } + + public String getTechnicalName() { + return technicalName; + } + + public void setTechnicalName(String technicalName) { + this.technicalName = technicalName; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Enum getTaskType() { + return taskType; + } + + public void setTaskType(Enum taskType) { + this.taskType = taskType; + } + + public Object getTaskData() { + return taskData; + } + + public void setTaskData(Object taskData) { + this.taskData = taskData; + } + + public Enum getRenderModel() { + return renderModel; + } + + public void setRenderModel(Enum renderModel) { + this.renderModel = renderModel; + } + + public Timestamp getEventCreated() { + return eventCreated; + } + + public void setEventCreated(Timestamp eventCreated) { + this.eventCreated = eventCreated; + } + + public Timestamp getDeadline() { + return deadline; + } + + public void setDeadline(Timestamp deadline) { + this.deadline = deadline; + } + + public Boolean getGroupTask() { + return groupTask; + } + + public void setGroupTask(Boolean groupTask) { + this.groupTask = groupTask; + } + + public Importance getImportance() { + return importance; + } + + public void setImportance(Importance importance) { + this.importance = importance; + } + + public ProjectPhase getPhase() { + return phase; + } + + public void setPhase(ProjectPhase phase) { + this.phase = phase; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/TaskDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/TaskDAO.java new file mode 100644 index 0000000000000000000000000000000000000000..42c2115e4369be11c614b5a982d090344d7dfeae --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/TaskDAO.java @@ -0,0 +1,33 @@ +package unipotsdam.gf.core.tasks; + +import com.mysql.jdbc.NotImplemented; +import unipotsdam.gf.core.database.mysql.MysqlConnect; + +import javax.annotation.ManagedBean; +import javax.inject.Inject; + +@ManagedBean +public class TaskDAO { + + @Inject + MysqlConnect connect; + + public Task[] getTasks(String userToken, String projectToken) throws NotImplemented { + throw new NotImplemented(); + } + + public void persist(Task task) throws NotImplemented { + connect.connect(); + String query = "INSERT INTO fltrail.tasks (userId, projectId, taskUrl, speakingName, technicalName, " + + "linkedMode, groupTask, importance, progress, phase, created, due) VALUES ('?', '?', '?', '?', '?', " + + "'?', ?, '?', '?', '?', '?', '?')"; + + connect.issueInsertOrDeleteStatement(query, task.getUserToken()); + connect.close(); + throw new NotImplemented(); + } + + public void update(Task task) throws NotImplemented { + throw new NotImplemented(); + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/TaskType.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/TaskType.java new file mode 100644 index 0000000000000000000000000000000000000000..392fcf181435d8d985baf59afaddf9c1dad6ec52 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/TaskType.java @@ -0,0 +1,10 @@ +package unipotsdam.gf.core.tasks; + +public enum TaskType { + // the task can be completed directly on the overview page + ONSITE, + // the task is just an info that can be noticed (maybe) + INFO, + // the task is a link to a complex feature + LINKED +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/TaskView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/TaskView.java new file mode 100644 index 0000000000000000000000000000000000000000..97669372eacc5e936b72c5f368a76d0f057dae4e --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/tasks/TaskView.java @@ -0,0 +1,26 @@ +package unipotsdam.gf.core.tasks; + +import com.mysql.jdbc.NotImplemented; + +import javax.inject.Inject; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; +import java.awt.*; + +@Path("/tasks") +public class TaskView { + + + @Inject + private TaskDAO taskDAO; + + @Path("/user/{userToken}/project/{projectToken}") + @Produces(MediaType.APPLICATION_JSON) + public Task[] getTasks(@PathParam("userToken") String userToken,@PathParam("projectToken") String projectToken) + throws NotImplemented { + return taskDAO.getTasks(userToken, projectToken); + } +} diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql new file mode 100644 index 0000000000000000000000000000000000000000..f6c19b0957f55ba172abdd230e3f724a13b64e52 --- /dev/null +++ b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql @@ -0,0 +1,179 @@ +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; +SET time_zone = "+00:00"; + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +CREATE DATABASE IF NOT EXISTS `fltrail` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; +USE `fltrail`; + +CREATE TABLE IF NOT EXISTS `annotations` ( + `id` varchar(120) NOT NULL, + `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `userToken` varchar(120) DEFAULT NULL, + `targetId` varchar(120) DEFAULT NULL, + `targetCategory` varchar(30) NOT NULL, + `title` varchar(120) DEFAULT NULL, + `comment` varchar(400) DEFAULT NULL, + `startCharacter` int(11) DEFAULT NULL, + `endCharacter` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `answeredquiz` ( + `projectId` varchar(400) NOT NULL, + `studentId` varchar(400) NOT NULL, + `question` varchar(400) NOT NULL, + `correct` tinyint(4) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `assessmentmechanismselected` ( + `projectId` varchar(100) NOT NULL, + `amSelected` varchar(200) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `categoriesselected` ( + `projectId` varchar(100) NOT NULL, + `categorySelected` varchar(200) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `contributionrating` ( + `projectId` varchar(400) NOT NULL, + `studentId` varchar(400) NOT NULL, + `fromPeer` varchar(400) NOT NULL, + `dossier` int(11) NOT NULL, + `eJournal` int(11) NOT NULL, + `research` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `fullsubmissions` ( + `id` varchar(120) NOT NULL, + `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `user` varchar(120) NOT NULL, + `text` mediumtext NOT NULL, + `projectId` varchar(120) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `grades` ( + `projectId` varchar(400) NOT NULL, + `studentId` varchar(400) NOT NULL, + `grade` double NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `groupfindingmechanismselected` ( + `projectId` varchar(100) NOT NULL, + `gfmSelected` varchar(200) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `groups` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `projectId` varchar(400) NOT NULL, + `chatRoomId` varchar(400) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `groupuser` ( + `userEmail` varchar(400) NOT NULL, + `groupId` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `phasesselected` ( + `projectId` varchar(100) NOT NULL, + `phaseSelected` varchar(200) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `projects` ( + `id` varchar(100) NOT NULL, + `password` varchar(400) NOT NULL, + `active` tinyint(1) NOT NULL, + `timecreated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `author` varchar(400) NOT NULL, + `adminPassword` varchar(400) NOT NULL, + `token` varchar(400) NOT NULL, + `phase` varchar(400) NOT NULL, + UNIQUE KEY `id` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `projectuser` ( + `projectId` varchar(100) NOT NULL, + `userId` varchar(100) NOT NULL, + UNIQUE KEY `projectId_2` (`projectId`,`userId`), + KEY `projectId` (`projectId`,`userId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `quiz` ( + `author` varchar(400) NOT NULL, + `projectId` varchar(400) NOT NULL, + `question` varchar(400) NOT NULL, + `mcType` varchar(400) NOT NULL, + `answer` varchar(400) NOT NULL, + `correct` tinyint(1) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `submissionpartbodyelements` ( + `fullSubmissionId` varchar(120) NOT NULL, + `category` varchar(30) NOT NULL, + `startCharacter` int(11) NOT NULL, + `endCharacter` int(11) NOT NULL, + PRIMARY KEY (`fullSubmissionId`,`category`,`startCharacter`,`endCharacter`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `submissionparts` ( + `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `userId` varchar(120) NOT NULL, + `fullSubmissionId` varchar(120) NOT NULL, + `category` varchar(30) NOT NULL, + PRIMARY KEY (`fullSubmissionId`,`category`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tags` ( + `projectId` varchar(100) NOT NULL, + `tag` varchar(400) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tasks` ( + `userId` varchar(400) NOT NULL, + `projectId` varchar(400) NOT NULL, + `taskUrl` varchar(400) NOT NULL, + `speakingName` varchar(400) DEFAULT NULL, + `technicalName` varchar(400) DEFAULT NULL, + `linkedMode` varchar(400) DEFAULT NULL, + `groupTask` tinyint(4) DEFAULT NULL, + `importance` varchar(100) DEFAULT NULL, + `progress` varchar(100) DEFAULT NULL, + `phase` varchar(100) DEFAULT NULL, + `created` timestamp NULL DEFAULT NULL, + `due` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +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, + `isStudent` tinyint(1) DEFAULT '1', + UNIQUE KEY `email` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `workrating` ( + `projectId` varchar(400) NOT NULL, + `studentId` varchar(400) NOT NULL, + `fromPeer` varchar(400) NOT NULL, + `responsibility` int(11) NOT NULL, + `partOfWork` int(11) NOT NULL, + `cooperation` int(11) NOT NULL, + `communication` int(11) NOT NULL, + `autonomous` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/gemeinsamforschen/src/scripts/fltrail_tasks.sql b/gemeinsamforschen/src/scripts/fltrail_tasks.sql new file mode 100644 index 0000000000000000000000000000000000000000..4bfe85786025a6eccb822d2e2a06aa72b1f01632 --- /dev/null +++ b/gemeinsamforschen/src/scripts/fltrail_tasks.sql @@ -0,0 +1 @@ +INSERT INTO fltrail.tasks (userId, projectId, taskUrl, speakingName, technicalName, linkedMode, groupTask, importance, progress, phase, created, due) VALUES ('1', '1', '1', '1', '1', '1', 1, '1', '1', '1', '1', '1'); \ No newline at end of file diff --git a/gemeinsamforschen/src/scripts/munschkins.sql b/gemeinsamforschen/src/scripts/munschkins.sql deleted file mode 100644 index aa8419a1626fc7287cbdc7f97eab38fee2fb0a43..0000000000000000000000000000000000000000 --- a/gemeinsamforschen/src/scripts/munschkins.sql +++ /dev/null @@ -1,14 +0,0 @@ - -use munschkins; - -CREATE TABLE IF NOT EXISTS Munschkins ( - MunschkinId int, - LastName varchar(255), - FirstName varchar(255), - BadThings varchar(255), - Strength int -); - -INSERT INTO `Munschkins` (MunschkinId, LastName, FirstName, BadThings, Strength) values(1, "Thor", "Theodor", "he -will eat your feet", 5); -