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