From 4fe2113fd5a04520faeaae5329ed932400f29122 Mon Sep 17 00:00:00 2001
From: Julian Dehne <julian.dehne@uni-potsdam.de>
Date: Tue, 2 Oct 2018 14:38:51 +0200
Subject: [PATCH] refactoring: switching to dependency injection and fixing
 tests

---
 .../gf/modules/project/ProjectDAO.java        | 27 ++++++++++++-------
 .../gf/modules/project/ProjectView.java       | 10 +++----
 .../webapp/groupfinding/enter-preferences.jsp |  1 +
 .../groupfinding/js/create-preferences.js     | 13 ++++-----
 .../main/webapp/project/js/join-project.js    | 10 ++++---
 .../webapp/project/js/overview-student.js     |  6 ++---
 .../main/webapp/project/overview-student.jsp  |  4 +--
 .../main/webapp/project/project-docent.jsp    |  3 +--
 .../main/webapp/project/project-student.jsp   | 10 ++-----
 .../src/main/webapp/taglibs/js/utility.js     |  2 +-
 10 files changed, 44 insertions(+), 42 deletions(-)

diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ProjectDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ProjectDAO.java
index e2306285..e2f48c83 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ProjectDAO.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ProjectDAO.java
@@ -27,12 +27,23 @@ public class ProjectDAO {
 
         connect.connect();
         String mysqlRequest =
-                "INSERT INTO projects (`name`, `password`, `active`, `timecreated`, `author`, "
-                        + "`adminPassword`, `phase`) values (?,?,?,?,?,?,?)";
+                "INSERT INTO projects (`name`, `password`, `active`, `timecreated`, `author`, " + "`adminPassword`, `phase`) values (?,?,?,?,?,?,?)";
         connect.issueInsertOrDeleteStatement(mysqlRequest, project.getName(), project.getPassword(), project.isActive(),
-                project.getTimecreated(), project.getAuthorEmail(), project.getAdminPassword(), project.getPhase()
-                        == null ? ProjectPhase.CourseCreation : project.getPhase());
+                project.getTimecreated(), project.getAuthorEmail(), project.getAdminPassword(),
+                project.getPhase() == null ? ProjectPhase.CourseCreation : project.getPhase());
+
+        connect.close();
+
+        connect.connect();
+        String[] tags = project.getTags();
+        for (String tag : tags) {
+            connect.issueInsertOrDeleteStatement(
+                    "INSERT INTO tags (`projectName`, `tag`) values (?,?)", project.getName(), tag);
+        }
+
         connect.close();
+
+
     }
 
     public void delete(Project project) {
@@ -58,8 +69,7 @@ public class ProjectDAO {
     public Project getProjectByName(String name) {
         connect.connect();
         String mysqlRequest = "SELECT * FROM projects where name = ?";
-        VereinfachtesResultSet vereinfachtesResultSet =
-                connect.issueSelectStatement(mysqlRequest, name);
+        VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(mysqlRequest, name);
         boolean next = vereinfachtesResultSet.next();
         Project result = getProject(vereinfachtesResultSet, next);
         List<String> tags = getTags(result);
@@ -94,8 +104,7 @@ public class ProjectDAO {
 
     public java.util.List<String> getTags(Project project) {
         connect.connect();
-        String mysqlRequest =
-                "SELECT t.tag from tags t where t.projectName = ?";
+        String mysqlRequest = "SELECT t.tag from tags t where t.projectName = ?";
         VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(mysqlRequest, project.getName());
 
         java.util.List<String> result = new ArrayList<>();
@@ -104,6 +113,6 @@ public class ProjectDAO {
             result.add(vereinfachtesResultSet.getString("tag"));
         }
         connect.close();
-        return  result;
+        return result;
     }
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ProjectView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ProjectView.java
index 5f3b761b..cde5a517 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ProjectView.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ProjectView.java
@@ -48,23 +48,21 @@ public class ProjectView {
     }
 
     @GET
-    @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/all/author/{userEmail}")
-    public java.util.List<String> getProjects(
+    public String[] getProjects(
             @PathParam("userEmail") String authorToken) {
 
         java.util.List<String> projects = iManagement.getProjects(authorToken);
-        return projects;
+        return projects.toArray(new String[0]);
     }
 
     @GET
-    @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/all/student/{studentEmail}")
-    public java.util.List<String> getProjectsStudent(
+    public String[] getProjectsStudent(
             @PathParam("studentEmail") String studentEmail) {
-        return iManagement.getProjectsStudent(studentEmail);
+        return iManagement.getProjectsStudent(studentEmail).toArray(new String[0]);
     }
 
     @GET
diff --git a/gemeinsamforschen/src/main/webapp/groupfinding/enter-preferences.jsp b/gemeinsamforschen/src/main/webapp/groupfinding/enter-preferences.jsp
index 0829791d..dbae110c 100644
--- a/gemeinsamforschen/src/main/webapp/groupfinding/enter-preferences.jsp
+++ b/gemeinsamforschen/src/main/webapp/groupfinding/enter-preferences.jsp
@@ -19,6 +19,7 @@
     <div class="sk-cube3 sk-cube"></div>
 </div>
 <div id="wrapper" class="wrapper">
+    <menu:menu hierarchy="1"></menu:menu>
     <div class="page-content-wrapper">
         <div class="container-fluid"><a class="btn btn-link" role="button" href="#menu-toggle" id="menu-toggle"></a>
             <div class="row">
diff --git a/gemeinsamforschen/src/main/webapp/groupfinding/js/create-preferences.js b/gemeinsamforschen/src/main/webapp/groupfinding/js/create-preferences.js
index 181e8cc3..dd7af89d 100644
--- a/gemeinsamforschen/src/main/webapp/groupfinding/js/create-preferences.js
+++ b/gemeinsamforschen/src/main/webapp/groupfinding/js/create-preferences.js
@@ -2,14 +2,11 @@
  * Created by fides-WHK on 15.03.2018.
  */
 
-
-
 $(document).ready(function () {
-
     printTags();
     $("#competencies0").focus();
     $("#studentFormSubmit").on("click", function () {
-        getContextData(takesPartInProject);
+        takesPartInProject();
     });
     $("#addCompetenceButton").on("click", function () {
         addInput("competencies");       //creates a new input-Field with the ID 'competenciesX' where X is number of elements with 'competencies' as ID
@@ -29,13 +26,13 @@ $(document).ready(function () {
 
 function addInput(name) {        //creates a new input-Field with the ID 'nameX' where X is number of elements with 'name' as ID
     var i = document.getElementsByName(name).length;
+    let div = document.getElementById(name);
     var newInput = document.createElement("span");
     newInput.innerHTML = "<input class='form-control' " +
         "type='text' " +
         "name='" + name + "' " +
         "id='" + name + i + "' " +
         "style='max-width:417px;margin-left:14px;padding-top:10px;margin-top:2px;margin-bottom:13px;'>";
-    var div = document.getElementById(name);
     div.appendChild(newInput);
 }
 
@@ -119,8 +116,8 @@ function takesPartInProject(context) {
     };
 
 
-    var userEmail = context.user.email;
-    var projectName = context.project.id;
+    var userEmail = getUserEmail();
+    var projectName = getProjectName();
     var dataString = JSON.stringify(data);                     //to send correctly, data needs to be stringified
     var url = compbaseUrl + "/api2/user/" + userEmail + "/projects/" + projectName + "/preferences";
     $.ajax({
@@ -133,7 +130,7 @@ function takesPartInProject(context) {
             console.log(response);
             document.getElementById('loader').className = "loader-inactive";
             document.getElementById('wrapper').className = "wrapper";
-            location.href = "../overview-student.jsp" + getUserEmail();
+            location.href = "../project/overview-student.jsp";
         },
         error: function (a, b, c) {
             console.log(a);
diff --git a/gemeinsamforschen/src/main/webapp/project/js/join-project.js b/gemeinsamforschen/src/main/webapp/project/js/join-project.js
index 6f0330a4..1f2b0469 100644
--- a/gemeinsamforschen/src/main/webapp/project/js/join-project.js
+++ b/gemeinsamforschen/src/main/webapp/project/js/join-project.js
@@ -1,6 +1,9 @@
 /**
  * Created by fides-WHK on 09.01.2018.
  */
+
+var projectName = "";
+
 $(document).ready(function () {
     $("#projectWrongPassword").hide();
     $("#projectIsMissing").hide();
@@ -16,11 +19,12 @@ $(document).ready(function () {
         }
     });
     $("#loginProject").on('click', function () {
-        loginProject($('#projectName').val());
+        projectName = $('#projectName').val();
+        loginProject();
     });
 });
 
-function loginProject(projectName) {
+function loginProject() {
     var password = $('#projectPassword').val();
     var url = "../../gemeinsamforschen/rest/project/login/"+projectName+"?password="+password;
     if (projectName === "") {
@@ -37,7 +41,7 @@ function loginProject(projectName) {
                 } else {
                     if (response !== "wrong password") {            //if response !== project missing and not wrong password, its the projectName
                         var projectToken = response;
-                        document.location.href = "../groupfinding/enter-preferences.jsp"+"&projectName="+projectToken;
+                        document.location.href = "../groupfinding/enter-preferences.jsp?projectName="+projectName;
                     } else {
                         $("#projectIsMissing").hide();
                         $('#projectWrongPassword').show();
diff --git a/gemeinsamforschen/src/main/webapp/project/js/overview-student.js b/gemeinsamforschen/src/main/webapp/project/js/overview-student.js
index 243d6b6b..a2e234ee 100644
--- a/gemeinsamforschen/src/main/webapp/project/js/overview-student.js
+++ b/gemeinsamforschen/src/main/webapp/project/js/overview-student.js
@@ -8,7 +8,7 @@ $(document).ready(function(){
 
 function updateStatus(projectName){
     $.ajax({
-        url: 'rest/phases/projects/'+projectName,
+        url: '../rest/phases/projects/'+projectName,
         headers: {
             "Content-Type": "application/json",
             "Cache-Control": "no-cache"
@@ -49,7 +49,7 @@ function updateStatus(projectName){
 function getGrade(projectName){
     let userName = $('#userEmail').html().trim();
     $.ajax({
-        url: 'rest/assessments/get/project/'+projectName+'/student/'+userName,
+        url: '../rest/assessments/get/project/'+projectName+'/student/'+userName,
         headers: {
             "Content-Type": "application/json",
             "Cache-Control": "no-cache"
@@ -65,7 +65,7 @@ function getGrade(projectName){
 
 function getProjects(userName){
     $.ajax({
-        url: 'rest/project/all/student/' + userName,
+        url: '../rest/project/all/student/' + userName,
         headers: {
             "Content-Type": "text/plain",
             "Cache-Control": "no-cache"
diff --git a/gemeinsamforschen/src/main/webapp/project/overview-student.jsp b/gemeinsamforschen/src/main/webapp/project/overview-student.jsp
index 665f5eba..5328471b 100644
--- a/gemeinsamforschen/src/main/webapp/project/overview-student.jsp
+++ b/gemeinsamforschen/src/main/webapp/project/overview-student.jsp
@@ -7,13 +7,13 @@
 <html>
 
 <head>
-    <omniDependencies:omniDependencies hierarchy="0"/>
+    <omniDependencies:omniDependencies hierarchy="1"/>
     <script src="js/overview-student.js"></script>
 </head>
 
 <body>
 <div id="wrapper">
-    <menu:menu hierarchy="0"/>
+    <menu:menu hierarchy="1"/>
     <div class="page-content-wrapper">
         <headLine:headLine/>
         <div>
diff --git a/gemeinsamforschen/src/main/webapp/project/project-docent.jsp b/gemeinsamforschen/src/main/webapp/project/project-docent.jsp
index 90868b48..f3da4fcf 100644
--- a/gemeinsamforschen/src/main/webapp/project/project-docent.jsp
+++ b/gemeinsamforschen/src/main/webapp/project/project-docent.jsp
@@ -18,8 +18,7 @@
     <menu:menu hierarchy="1"/>
     <div class="page-content-wrapper">
         <headLine:headLine/>
-        <button
-                class="btn btn-default" type="button">Exportiere Zwischenstand
+        <button class="btn btn-default" type="button">Exportiere Zwischenstand
         </button>
         <button class="btn btn-default" type="button">Quizfrage erstellen</button>
         <div>
diff --git a/gemeinsamforschen/src/main/webapp/project/project-student.jsp b/gemeinsamforschen/src/main/webapp/project/project-student.jsp
index ba553514..3696a0e4 100644
--- a/gemeinsamforschen/src/main/webapp/project/project-student.jsp
+++ b/gemeinsamforschen/src/main/webapp/project/project-student.jsp
@@ -1,26 +1,20 @@
 <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
 <%--suppress XmlDuplicatedId --%>
 <%@ 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" %>
-
-
-<!--todo: E-mail an Studenten als Notifikation für Phasenwechsel -->
 
 
 <!DOCTYPE html>
 <html>
 
 <head>
-    <omniDependencies:omniDependencies hierarchy="0"/>
+    <omniDependencies:omniDependencies hierarchy="1"/>
     <script src="js/project-student.js"></script>
-
 </head>
 
 <body>
 <div id="wrapper">
-    <menu:menu hierarchy="0"/>
+    <menu:menu hierarchy="1"/>
 
     <div class="page-content-wrapper">
         <headLine:headLine/>
diff --git a/gemeinsamforschen/src/main/webapp/taglibs/js/utility.js b/gemeinsamforschen/src/main/webapp/taglibs/js/utility.js
index 26e36b2b..5b34c661 100644
--- a/gemeinsamforschen/src/main/webapp/taglibs/js/utility.js
+++ b/gemeinsamforschen/src/main/webapp/taglibs/js/utility.js
@@ -65,7 +65,7 @@ function getUserEmail() {
 
 
 function getProjectName() {
-    return $('#projectName').html().trim();
+    return getQueryVariable("projectName");
 }
 
 function getQueryVariable(variable) {
-- 
GitLab