diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/tasks/TaskDAO.java.orig b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/tasks/TaskDAO.java.orig new file mode 100644 index 0000000000000000000000000000000000000000..106fdbefe0f4f7ab27532849c3620fc773529f41 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/tasks/TaskDAO.java.orig @@ -0,0 +1,178 @@ +package unipotsdam.gf.modules.tasks; + +<<<<<<< HEAD +import org.glassfish.grizzly.http.util.TimeStamp; +======= +>>>>>>> origin/development_master +import unipotsdam.gf.modules.project.Project; +import unipotsdam.gf.modules.project.ProjectDAO; +import unipotsdam.gf.modules.states.ProjectPhase; +import unipotsdam.gf.modules.user.User; +import unipotsdam.gf.mysql.MysqlConnect; +import unipotsdam.gf.mysql.VereinfachtesResultSet; + +import javax.annotation.ManagedBean; +import javax.inject.Inject; +import java.util.ArrayList; + +import static unipotsdam.gf.modules.tasks.TaskName.*; + +@ManagedBean +public class TaskDAO { + + + @Inject + ProjectDAO projectDAO; + + @Inject + MysqlConnect connect; + + // get all the tasks a user has in a specific project + public ArrayList<Task> getTaskType(String userEmail, String projectName) { + connect.connect(); + String query = "Select * from tasks where userEmail = ? AND projectName = ?"; + ArrayList<Task> result = new ArrayList<>(); + VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(query, userEmail, projectName); + while (vereinfachtesResultSet.next()) { + String taskName = vereinfachtesResultSet.getString("taskName"); + + TaskName taskName1 = TaskName.valueOf(taskName); + Task task = getGeneralTask(vereinfachtesResultSet); + task.setTaskName(taskName1); + switch (taskName1) { + case WAIT_FOR_PARTICPANTS: { + result.add(getTaskWaitForParticipants(task, vereinfachtesResultSet)); + break; + } + default: { + result.add(task); + } + } + } + + connect.close(); + + return result; + } + + // fill the task with the general data + private Task getGeneralTask(VereinfachtesResultSet vereinfachtesResultSet) { + Task task = new Task(); + + task.setImportance(Importance.valueOf(vereinfachtesResultSet.getString("importance"))); + task.setUserEmail(vereinfachtesResultSet.getString("userEmail")); + task.setLink(vereinfachtesResultSet.getString("taskUrl")); + task.setProjectName(vereinfachtesResultSet.getString("projectName")); + task.setGroupTask(vereinfachtesResultSet.getBoolean("groupTask")); + task.setProgress(Progress.valueOf(vereinfachtesResultSet.getString("progress"))); + task.setEventCreated(vereinfachtesResultSet.getLong("created")); + task.setDeadline(vereinfachtesResultSet.getTimestamp("due")); + task.setPhase(ProjectPhase.valueOf(vereinfachtesResultSet.getString("phase"))); + getTaskType(task, vereinfachtesResultSet); + + return task; + } + + // bundle the taskModes + private void getTaskType(Task task, VereinfachtesResultSet vereinfachtesResultSet) { + ArrayList<TaskType> taskTypes = new ArrayList<>(); + String taskMode = vereinfachtesResultSet.getString("taskMode"); + String taskMode2 = vereinfachtesResultSet.getString("taskMode2"); + String taskMode3 = vereinfachtesResultSet.getString("taskMode3"); + if (taskMode != null && !taskMode.equals("") ) { + taskTypes.add(TaskType.valueOf(vereinfachtesResultSet.getString("taskMode"))); + } + if (taskMode2 != null && !taskMode2.equals("")) { + taskTypes.add(TaskType.valueOf(vereinfachtesResultSet.getString("taskMode2"))); + } + + if (taskMode3 != null && !taskMode3.equals("")) { + taskTypes.add(TaskType.valueOf(vereinfachtesResultSet.getString("taskMode3"))); + + } + task.setTaskType(taskTypes.toArray(new TaskType[0])); + } + + + private Task getTaskWaitForParticipants(Task task, VereinfachtesResultSet vereinfachtesResultSet) { + task.setTaskName(TaskName.WAIT_FOR_PARTICPANTS); + Project project = new Project(); + project.setName(vereinfachtesResultSet.getString("projectName")); + ParticipantsCount participantsCount = projectDAO.getParticipantCount(project); + task.setTaskData(participantsCount); + return task; + } + + private Task createGeneralTask(Project project, User target) { + Task task = new Task(); + task.setEventCreated(System.currentTimeMillis()); + task.setProjectName(project.getName()); + task.setUserEmail(project.getAuthorEmail()); + task.setImportance(Importance.MEDIUM); + task.setProgress(Progress.JUSTSTARTED); + + return task; + } + + + public void createTaskWaitForParticipants(Project project, User target) { + Task task = createGeneralTask(project, target); + task.setGroupTask(false); + task.setLink("../groupfinding/create-groups-manual.jsp"); + task.setPhase(ProjectPhase.GroupFormation); + task.setRenderModel(WAIT_FOR_PARTICPANTS); + task.setTaskType(TaskType.LINKED, TaskType.INFO); + task.setImportance(Importance.MEDIUM); + task.setProgress(Progress.JUSTSTARTED); + persist(task); + } + + public void createWaitingForGroupFormationTask(Project project, User target) { + Task task = createGeneralTask(project, target); + task.setGroupTask(false); + task.setPhase(ProjectPhase.GroupFormation); + task.setRenderModel(TaskName.WAITING_FOR_GROUP); + task.setTaskType(TaskType.INFO); + task.setImportance(Importance.MEDIUM); + task.setProgress(Progress.JUSTSTARTED); + persist(task); + } + + private void persist(Task task) { + + 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 INTO fltrail.tasks (userEmail, projectName, taskUrl, taskName, " + + "groupTask, importance, progress, phase, created, due, taskMode, taskMode2, taskMode3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + connect.issueInsertOrDeleteStatement(query, task.getUserEmail(), task.getProjectName(), task.getLink(), + task.getTaskName(), task.getGroupTask(), task.getImportance(), task.getProgress(), task + .getPhase(), + null, task.getDeadline(), task.getTaskType()[0].toString(), taskMode2, taskMode3); + connect.close(); + } + + public void update(Task task, Progress progress) { + connect.connect(); + String query = + "UPDATE tasks set progress = ? where task.userEmail = ? & task.projectName = ? & task.taskName" + " = ?"; + connect.issueUpdateStatement( + query, progress.name(), task.getUserEmail(), task.getProjectName(), task.getTaskName()); + connect.close(); + } + + public Task[] getTaskType(User teacher, Project project) { + return getTaskType(teacher.getEmail(), project.getName()).toArray(new Task[0]); + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskView.java index e515692c93eb3eedb0f186d5e60e258f8cbb9c87..2bf90da55c749089f4a8b88a702a38ebdb6448cd 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskView.java @@ -24,6 +24,6 @@ public class TaskView { public ArrayList<Task> getTasks(@PathParam("userEmail") String userEmail, @PathParam("projectToken") String projectToken) throws NotImplemented, UnsupportedEncodingException { String user = java.net.URLDecoder.decode(userEmail, "UTF-8"); - return taskDAO.getTasks(user, projectToken); + return taskDAO.getTaskType(user, projectToken); } } diff --git a/gemeinsamforschen/src/main/webapp/project/js/tasks-docent.js b/gemeinsamforschen/src/main/webapp/project/js/tasks-docent.js new file mode 100644 index 0000000000000000000000000000000000000000..c0d2aa704fe218c2b0db79c76dafaf61de0f75bb --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/project/js/tasks-docent.js @@ -0,0 +1,150 @@ +$(document).ready(function(){ + let userEmail = $('#userEmail').html().trim(); + let projectName = $('#projectName').html().trim(); + fillTasks(projectName, userEmail); +}); + +function fillTasks(projectName, userEmail){ + $.ajax({ + url: '../rest/tasks/user/'+encodeURI(userEmail)+'/project/' + projectName, + headers: { + "Content-Type": "application/json", + "Cache-Control": "no-cache" + }, + type: 'GET', + success: function (response) { + let object = fillObjectWithTasks(response); + for (let task in object){ + let tmplObject = fitObjectInTmpl(object[task]); + $('#taskTemplate').tmpl(tmplObject).appendTo('#listOfTasks'); + } + }, + error: function(a){} + + + }); +} + +function fitObjectInTmpl(object){ + let result = { + taskType: "", + infoText: "", + phase: "", + solveTaskWith: "", + helpLink: "", + timeFrame: "" + }; + if (object.taskType!=="INFO"){ + if (object.groupTask===true){ + result.taskType="grouptask" + }else{ + result.taskType="usertask" + } + }else{ + result.taskType="infotask" + } + switch (object.phase){ + case "CourseCreation": + result.phase="card-draft"; + break; + case "GroupFormation": + result.phase="card-grouping"; + break; + case "DossierFeedback": + result.phase="card-feedback"; + break; + case "Execution": + result.phase="card-execution"; + break; + case "Assessment": + result.phase="card-assessment"; + break; + case "Projectfinished": + result.phase="card-grades"; + break; + default: + result.phase=""; + } + if (object.link !=="") + result.helpLink = object.link; + if (object.deadline != null){ + let daysLeft = Math.round((object.deadline - Date.now())/1000/60/60/24); + if (daysLeft>=1) + result.timeFrame="<div class='status icon'><p>Noch "+daysLeft+" Tage Zeit</p></div>"; + else + result.timeFrame="<div class='status alert icon'><p>Du bist zu spät.</p></div>"; + }else {result.timeFrame="";} + switch (object.taskName){ + case "WAIT_FOR_PARTICPANTS": + result.infoText = "Warten Sie auf die Anmeldungen der Studenten."; + break; + case "BUILD_GROUPS": + result.infoText="Erstellen Sie die Gruppen."; + break; + case "CLOSE_GROUP_FINDING_PHASE": + result.infoText="Gehen Sie zur nächsten Phase über."; + break; + default: + result.infoText=""; + } + if (object.taskType.includes("LINKED")){ + //todo: implement rest + switch (object.taskName) { + case "UPLOAD_DOSSIER": + result.solveTaskWith="Lege ein Dossier an"; + result.solveTaskWithLink="../annotation/annotation-document.jsp?projectName="+object.projectName; + break; + case "GIVE_FEEDBACK": + result.solveTaskWith="Erteile Feedback"; + result.solveTaskWithLink="../feedback/give-feedback.jsp?projectName="+object.projectName; + break; + case "CREATE_QUIZ": + result.solveTaskWith="Erstelle ein Quiz"; + result.solveTaskWithLink="../assessment/create-quiz.jsp?projectName="+object.projectName; + break; + case "WRITE_EJOURNAL": + result.solveTaskWith="Lege ein EJournal an"; + result.solveTaskWithLink="../journal/create-journal.jsp?projectName="+object.projectName; + break; + case "FINALIZE_DOSSIER": + result.solveTaskWith="Finalisiere das Dossier"; + result.solveTaskWithLink="../annotation/annotation-document.jsp?projectName="+object.projectName; + break; + case "FINALIZE_EJOURNAL": + result.solveTaskWith="Finalisiere dein EJournal"; + result.solveTaskWithLink="../journal/edit-description.jsp?projectName="+object.projectName; + break; + case "ASSESSMENT": + result.solveTaskWith="Starte Bewertung"; + result.solveTaskWithLink="../assessment/assess-work.jsp?projectName="+object.projectName; + break; + default: + result.solveTaskWith=null; + + } + } + return result; +} + +function fillObjectWithTasks(response){ + let tempObject=[]; + for (let task in response){ + if (response.hasOwnProperty(task)) + tempObject.push({ + taskType: response[task].taskType, // + taskData: response[task].taskData, + taskName: response[task].taskName, // + hasRenderModel: response[task].hasRenderModel, + eventCreated: response[task].eventCreated, + deadline: response[task].deadline, // + groupTask: response[task].groupTask,// + importance: response[task].importance, + phase: response[task].phase, // + link: response[task].link, // + userEmail: response[task].userEmail, + projectName: response[task].projectName, + progress: response[task].progress + }); + } + return tempObject; +} \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/project/js/tasks-student.js b/gemeinsamforschen/src/main/webapp/project/js/tasks-student.js index ab01f0384fd82f2d7560ee4566308ca816a1d474..f5207eeffef1265dd9c33da3e6b41ff8713b8987 100644 --- a/gemeinsamforschen/src/main/webapp/project/js/tasks-student.js +++ b/gemeinsamforschen/src/main/webapp/project/js/tasks-student.js @@ -1,41 +1,7 @@ $(document).ready(function(){ let userEmail = $('#userEmail').html().trim(); let projectName = $('#projectName').html().trim(); - //fillTasks(projectName, userEmail); - let object = [{ - taskType: "ONSITE", // - taskData: "", - taskName: "WAIT_FOR_PARTICPANTS", // - hasRenderModel: false, - eventCreated: Date.now(), - deadline: Date.now()+172800000, // - groupTask: false,// - importance: "", - phase: "CourseCreation", // - link: "www.google.de", // - userEmail: userEmail, - projectName: projectName, - progress: "JUSTSTARTED" - }, { - taskType: "LINKED", // - taskData: "", - taskName: "ASSESSMENT", // - hasRenderModel: false, - eventCreated: Date.now()-410, - deadline: Date.now() + 17223613, // - groupTask: false,// - importance: "", - phase: "Assessment", // - link: "www.youtube.de", // - userEmail: userEmail, - projectName: projectName, - progress: "FINISHED" - } - ]; - for (let task in object){ - let tmplObject = fitObjectInTmpl(object[task]); - $('#taskTemplate').tmpl(tmplObject).appendTo('#listOfTasks'); - } + fillTasks(projectName, userEmail); }); function fillTasks(projectName, userEmail){ @@ -68,7 +34,7 @@ function fitObjectInTmpl(object){ helpLink: "", timeFrame: "" }; - if (object.taskType!=="INFO"){ + if (object.taskType.includes("INFO")){ if (object.groupTask===true){ result.taskType="grouptask" }else{ @@ -100,7 +66,7 @@ function fitObjectInTmpl(object){ result.phase=""; } if (object.link !=="") - result.helpLink = object.link; + result.helpLink = object.link+"?projectName="+object.projectName; if (object.deadline != null){ let daysLeft = Math.round((object.deadline - Date.now())/1000/60/60/24); if (daysLeft>=1) @@ -118,10 +84,34 @@ function fitObjectInTmpl(object){ case "CLOSE_GROUP_FINDING_PHASE": result.infoText="Gehen Sie zur nächsten Phase über."; break; + case "WAITING_FOR_GROUP": + result.infoText="Warten auf Gruppen."; + break; + case "UPLOAD_DOSSIER": + result.infoText="Warten auf Gruppen."; + break; + case "GIVE_FEEDBACK": + result.infoText="Warten auf Gruppen."; + break; + case "CREATE_QUIZ": + result.infoText="Warten auf Gruppen."; + break; + case "WRITE_EJOURNAL": + result.infoText="Warten auf Gruppen."; + break; + case "FINALIZE_DOSSIER": + result.infoText="Warten auf Gruppen."; + break; + case "FINALIZE_EJOURNAL": + result.infoText="Warten auf Gruppen."; + break; + case "ASSESSMENT": + result.infoText="Ihre Bewertung"; + break; default: result.infoText=""; } - if (object.taskType!=="INFO"){ + if (object.taskType.includes("LINKED")){ //todo: implement rest switch (object.taskName) { case "UPLOAD_DOSSIER": @@ -149,8 +139,11 @@ function fitObjectInTmpl(object){ result.solveTaskWithLink="../journal/edit-description.jsp?projectName="+object.projectName; break; case "ASSESSMENT": - result.solveTaskWith="Starte Bewertung"; - result.solveTaskWithLink="../assessment/assess-work.jsp?projectName="+object.projectName; + if (object.progress != "FINISHED"){ + result.solveTaskWith="Starte Bewertung"; + result.solveTaskWithLink="../assessment/assess-work.jsp?projectName="+object.projectName; + } + break; default: result.solveTaskWith=null; @@ -164,7 +157,7 @@ function fillObjectWithTasks(response){ let tempObject=[]; for (let task in response){ if (response.hasOwnProperty(task)) - tmplObject.push({ + tempObject.push({ taskType: response[task].taskType, // taskData: response[task].taskData, taskName: response[task].taskName, // diff --git a/gemeinsamforschen/src/main/webapp/project/tasks-docent.jsp b/gemeinsamforschen/src/main/webapp/project/tasks-docent.jsp index 504085e77fd9a724e5d87cf0e1f916e8c90a9aad..c60cb037587d4ef6ab6e27ec3c41ded8ddf8e8ca 100644 --- a/gemeinsamforschen/src/main/webapp/project/tasks-docent.jsp +++ b/gemeinsamforschen/src/main/webapp/project/tasks-docent.jsp @@ -1,17 +1,48 @@ <%-- - Created by IntelliJ IDEA. - User: dehne - Date: 04.10.2018 - Time: 11:24 - To change this template use File | Settings | File Templates. + todo: probably this page is not needed at all. as well as tasks-docent.js --%> -<%@ page contentType="text/html;charset=UTF-8" language="java" %> -<html> +<%@ page contentType="text/html;charset=UTF-8" %> +<%@ taglib uri="../taglibs/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../taglibs/gemeinsamForschen.tld" prefix="headLine" %> +<%@ taglib uri="../taglibs/gemeinsamForschen.tld" prefix="omniDependencies" %> +<%@ taglib uri="../taglibs/gemeinsamForschen.tld" prefix="footer" %> +<!DOCTYPE html> +<html lang="de"> <head> - <title>Title</title> + <omniDependencies:omniDependencies hierarchy="1"/> + <script src="js/tasks-docent.js"></script> </head> <body> <menu:menu hierarchy="1"/> +<div class="col span_l_of_2"> <!-- col right--> + <headLine:headLine/> +<div id="listOfTasks"> + +</div> +<script id="taskTemplate" type="text/x-jQuery-tmpl"> + <div class="card ${phase}"> + <div class="col span_s_of_2 icon ${taskType}"> + </div> + <div class="col span_l_of_2" id="${taskName}"> + {{if infoText}} + <h4>${infoText}</h4> + {{/if}} + {{if solveTaskWith}} + <a href="${solveTaskWithLink}"><button class='primary'>${solveTaskWith}</button></a> + {{/if}} + {{if helpLink}} + <div style="width:100%"><a href='${helpLink}'>Hier</a> bekommst du Hilfe.</div> + {{/if}} + </div> + {{if timeFrame}} + {{html timeFrame}} + {{/if}} + <div style="clear:left"></div> + </div> + </div> + </script> +</div> +<footer:footer/> </body> </html> diff --git a/gemeinsamforschen/src/main/webapp/project/tasks-student.jsp b/gemeinsamforschen/src/main/webapp/project/tasks-student.jsp index 4ea1a8e9017beb30433df42da708bd6080e2680d..9e538460f6baadf2c19fe08ce4c5abf7d4717b8b 100644 --- a/gemeinsamforschen/src/main/webapp/project/tasks-student.jsp +++ b/gemeinsamforschen/src/main/webapp/project/tasks-student.jsp @@ -15,8 +15,6 @@ <head> <omniDependencies:omniDependencies hierarchy="1"/> <script src="js/tasks-student.js"></script> - - <title>Projecttitle | Gemeinsam Forschen</title> </head> <body> <menu:menu hierarchy="1"/> diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java index 29e21e48f7a5c7666f579cf2d8d5f8c344554601..b84808a3b3898fcb1e83e94da690c9013ce212ab 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java @@ -257,7 +257,7 @@ public class ActivityFlowTest { groupFinding.selectGroupfindingCriteria(groupfindingCriteria, project); taskDAO.createTaskWaitForParticipants(project, teacher); - Task[] tasks = taskDAO.getTasks(teacher, project); + Task[] tasks = taskDAO.getTaskType(teacher, project); assertTrue(tasks != null && tasks.length > 0); diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/process/tasks/GroupPhaseTaskTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/process/tasks/GroupPhaseTaskTest.java index 072dc9ef123fcf4debb5619b285ef03909da2b91..99f6364fe145c18873e428414296570a00c3bc02 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/process/tasks/GroupPhaseTaskTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/process/tasks/GroupPhaseTaskTest.java @@ -4,9 +4,12 @@ import org.glassfish.hk2.api.ServiceLocator; import org.glassfish.hk2.utilities.ServiceLocatorUtilities; import org.junit.Before; import org.junit.Test; +import org.mockito.Mockito; import uk.co.jemos.podam.api.PodamFactory; import uk.co.jemos.podam.api.PodamFactoryImpl; +import unipotsdam.gf.config.GFApplicationBinder; import unipotsdam.gf.core.database.TestGFApplicationBinder; +import unipotsdam.gf.interfaces.ICommunication; import unipotsdam.gf.interfaces.IGroupFinding; import unipotsdam.gf.modules.group.GroupFormationMechanism; import unipotsdam.gf.modules.project.Management; @@ -51,7 +54,7 @@ public class GroupPhaseTaskTest { } @Test - public void createCourseWithLearningGoalStrategy() throws IOException { + public void createCourse() { this.teacher = factory.manufacturePojo(User.class); teacher.setStudent(false); @@ -61,11 +64,15 @@ public class GroupPhaseTaskTest { Project project = factory.manufacturePojo(Project.class); project.setAuthorEmail(teacher.getEmail()); management.create(project); + management.register(teacher, project, null); - ProjectConfiguration projectConfiguration = factory.manufacturePojo(ProjectConfiguration.class); - projectConfiguration.setGroupMechanismSelected(GroupFormationMechanism.LearningGoalStrategy); - projectCreationProcess.createProject(project, teacher); + /*ProjectConfiguration projectConfiguration = factory.manufacturePojo(ProjectConfiguration.class); + management.create(projectConfiguration, project); + GroupfindingCriteria groupfindingCriteria = factory.manufacturePojo(GroupfindingCriteria.class); + groupFinding.selectGroupfindingCriteria(groupfindingCriteria, project);*/ + + taskDAO.createTaskWaitForParticipants(project, teacher); Task[] tasks = taskDAO.getTasks(teacher, project); assertTrue(tasks != null && tasks.length > 0); diff --git a/gemeinsamforschen/src/test/resources/database/fltrail.sql b/gemeinsamforschen/src/test/resources/database/fltrail.sql index 679b087c5e7a86988aa236cd551cecd73531b8f7..b72cd80679f636260ec5a54b7580cc5b11debc73 100644 --- a/gemeinsamforschen/src/test/resources/database/fltrail.sql +++ b/gemeinsamforschen/src/test/resources/database/fltrail.sql @@ -81,7 +81,7 @@ CREATE TABLE IF NOT EXISTS `projects` ( `name` varchar(100) NOT NULL, `password` varchar(400) NOT NULL, `active` tinyint(1) NOT NULL, - `timecreated` mediumtext not null, + `timecreated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `author` varchar(100) NOT NULL, `adminPassword` varchar(400) NOT NULL, `phase` varchar(400) NOT NULL, @@ -128,6 +128,7 @@ CREATE TABLE IF NOT EXISTS `tasks` ( `userEmail` varchar(400) NOT NULL, `projectName` varchar(400) NOT NULL, `taskUrl` varchar(400) NOT NULL, + `technicalName` varchar(400) DEFAULT NULL, `groupTask` tinyint(4) DEFAULT NULL, `importance` varchar(100) DEFAULT NULL, `progress` varchar(100) DEFAULT NULL, diff --git a/gemeinsamforschen/src/test/resources/database/fltrail.sql.orig b/gemeinsamforschen/src/test/resources/database/fltrail.sql.orig new file mode 100644 index 0000000000000000000000000000000000000000..d44d7a78c5dc32bad0123510cd97328c66af2d2d --- /dev/null +++ b/gemeinsamforschen/src/test/resources/database/fltrail.sql.orig @@ -0,0 +1,208 @@ + +create database fltrail; +use fltrail; + +CREATE TABLE IF NOT EXISTS `annotations` ( + `id` varchar(120) NOT NULL, + `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `userEmail` 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` ( + `projectName` varchar(400) NOT NULL, + `userName` 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` ( + `projectName` varchar(100) NOT NULL, + `amSelected` varchar(200) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `categoriesselected` ( + `projectName` varchar(100) NOT NULL, + `categorySelected` varchar(200) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `contributionrating` ( + `groupId` int(11) NOT NULL, + `fromPeer` varchar(400) NOT NULL, + `dossier` 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, + `projectName` varchar(120) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `grades` ( + `projectName` varchar(400) NOT NULL, + `userName` varchar(400) NOT NULL, + `grade` double NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `groupfindingmechanismselected` ( + `projectName` 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, + `projectName` 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(255) NOT NULL, + `projectName` varchar(255) NOT NULL, + `groupId` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `phasesselected` ( + `projectName` varchar(100) NOT NULL, + `phaseSelected` varchar(200) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `projects` ( + `name` varchar(100) NOT NULL, + `password` varchar(400) NOT NULL, + `active` tinyint(1) NOT NULL, + `timecreated` mediumtext not null, + `author` varchar(100) NOT NULL, + `adminPassword` varchar(400) NOT NULL, + `phase` varchar(400) NOT NULL, + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `projectuser` ( + `projectName` varchar(100) NOT NULL, + `userEmail` varchar(100) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `quiz` ( + `author` varchar(400) NOT NULL, + `projectName` 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, + `userEmail` 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` ( + `projectName` varchar(100) NOT NULL, + `tag` varchar(400) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `tasks` ( + `taskName` varchar (400) not NULL, + `userEmail` varchar(400) NOT NULL, + `projectName` varchar(400) NOT NULL, + `taskUrl` varchar(400) NOT NULL, +<<<<<<< HEAD + `taskName` varchar (400) NOT NULL, +======= +>>>>>>> origin/development_master + `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, + `taskMode` varchar(100) default NULL, + `taskMode2` varchar(100) default NULL, + `taskMode3` varchar(100) 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, + `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` ( + `projectName` varchar(400) NOT NULL, + `userName` 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; + +CREATE TABLE if not exists `journals` ( + `id` varchar(400) NOT NULL, + `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP + ON UPDATE CURRENT_TIMESTAMP, + `userName` varchar(400) NOT NULL, + `projectName` varchar(400) NOT NULL, + `text` text, + `visibility` varchar(50), + `category` varchar(50), + `open` TINYINT(1) +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE if not exists `projectDescription` ( + `id` varchar(400) NOT NULL, + `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP + ON UPDATE CURRENT_TIMESTAMP, + `userName` varchar(400) NOT NULL, + `projectName` varchar(400) NOT NULL, + `text` text, + `open` TINYINT(1) +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE if not exists `links` ( + `id` varchar(400) NOT NULL, + `projecdesription` varchar(400) NOT NULL, + `name` varchar(50) NOT NULL, + `link` varchar(50) NOT NULL +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; + + + +Alter Table projectuser add FOREIGN KEY (`userEmail`) REFERENCES users(`email`); +Alter Table projectuser add FOREIGN KEY (`projectName`) REFERENCES projects(`name`); +ALTER TABLE groupuser add FOREIGN KEY (`userEmail`) REFERENCES users(`email`); +ALTER TABLE groupuser add FOREIGN KEY (`groupId`) REFERENCES groups(`id`); +ALTER TABLE projects add foreign key (`author`) REFERENCES users(`email`); \ No newline at end of file