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

Merge remote-tracking branch 'origin/development_master' into development_master

# Conflicts:
#	gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ProjectDAO.java
#	gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/Task.java
#	gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java
#	gemeinsamforschen/src/test/java/unipotsdam/gf/process/tasks/GroupPhaseTaskTest.java
parents ddda5f81 8ebc0643
No related branches found
No related tags found
No related merge requests found
Showing
with 624 additions and 58 deletions
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]);
}
}
......@@ -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);
}
}
$(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
$(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, //
......
<%--
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>
......@@ -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"/>
......
......@@ -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);
......
......@@ -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);
......
......@@ -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,
......
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
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