diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ContextDataView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ContextDataView.java index b9d1e201f879c52c07c703611877ea4a043337ad..ea4652bcc001dd0cf6f34396186e53cbf72319f0 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ContextDataView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ContextDataView.java @@ -24,7 +24,7 @@ public class ContextDataView { @Path("/full") public ContextDataOutput getContextData(@QueryParam("userEmail") String userEmail, @QueryParam("projectToken") String projectToken) { - Project projectByToken = iManagement.getProjectByToken(projectToken); + Project projectByToken = iManagement.getProjectByName(projectToken); User user = iManagement.getUserByToken(userEmail); return new ContextDataOutput(projectByToken, user); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java index 4def763174e8016c36551cd9a0b3c696856a0828..90ddfdfad8b60a6a5e14fd3c3483d0c385bd4253 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java @@ -36,7 +36,7 @@ public interface Management { * * @param project */ - String create(Project project); + void create(Project project); /** * create a Group in the database @@ -92,20 +92,16 @@ public interface Management { ProjectConfiguration getProjectConfiguration(Project project); - String getProjectToken(String projectName, String password); - - Project getProjectByToken(String projectToken); - List<String> getProjects(String userEmail); User getUserByToken(String userEmail); - Project getProjectById(String projectName); - List<String> getProjectsStudent(String studentToken); String saveProfilePicture(FileInputStream fis, String userName); List<String> getTags(Project project); + + Project getProjectByName(String projectName); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java index 2dd6b06cc77253a4e46b457242e1f9b0fb2029ca..616a17eea7ce8b0d2ec8cb86961e8277d5cbe3be 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java @@ -21,8 +21,6 @@ import javax.inject.Singleton; import java.io.FileInputStream; import java.sql.Blob; import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; import java.util.List; /** @@ -58,8 +56,8 @@ public class ManagementImpl implements Management { } @Override - public String create(Project project) { - return projectDAO.persist(project); + public void create(Project project) { + projectDAO.persist(project); } @Override @@ -123,9 +121,6 @@ public class ManagementImpl implements Management { return userDAO.getUserByEmail(email); } - public Project getProjectById(String id) { - return projectDAO.getProjectById(id); - } @Override public void create(Group group) { @@ -145,46 +140,14 @@ public class ManagementImpl implements Management { return projectConfigurationDAO.loadProjectConfiguration(project); } - @Override - public String getProjectToken(String projectName, String password) { - connect.connect(); - if (password != null && !password.trim().equals("")) { - String query = "SELECT a.token from projects a where a.password = ? and a.id = ?"; - VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(projectName, password); - - String result = ""; - while (vereinfachtesResultSet.next()) { - result = vereinfachtesResultSet.getString("token"); - } - connect.close(); - return result; - } else { - String query = "SELECT a.token from projects a where a.id = ?"; - VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(projectName); - - String result = ""; - while (vereinfachtesResultSet.next()) { - result = vereinfachtesResultSet.getString("token"); - } - connect.close(); - return result; - } - - } - - @Override - public Project getProjectByToken(String projectToken) { - return projectDAO.getProjectByToken(projectToken); - } - - @Override + @Override public List<String> getProjects(String authorToken) { if (authorToken == null) { return null; } connect.connect(); String mysqlRequest = - "SELECT p.id FROM users u " + + "SELECT p.name FROM users u " + " JOIN projects p ON u.email = p.authorEmail" + " WHERE u.token = ?"; @@ -193,7 +156,7 @@ public class ManagementImpl implements Management { List<String> result = new ArrayList<>(); VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(mysqlRequest, authorToken); while (vereinfachtesResultSet.next()) { - String project = vereinfachtesResultSet.getString("id"); + String project = vereinfachtesResultSet.getString("name"); result.add(project); } connect.close(); @@ -233,4 +196,9 @@ public class ManagementImpl implements Management { public List<String> getTags(Project project) { return projectDAO.getTags(project); } + + @Override + public Project getProjectByName(String projectName) { + return projectDAO.getProjectByName(projectName); + } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupDAO.java index ec7d50da8b0b54393c0c211a15ee6b10dba46a39..d399e9144d89d83c1054a24837536779b287afed 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupDAO.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupDAO.java @@ -105,9 +105,7 @@ public class GroupDAO { } ArrayList<Group> groups = new ArrayList<>(); - fillGroupFromResultSet(groups, vereinfachtesResultSet); - ArrayList<Group> uniqueGroups = new ArrayList<>(); for (Group group : groups) { // transmuting the table to a map with group as key and members as value diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupView.java index 610b42bbbea4b7f6da6b89720f61a37f6ee3f865..478ddc5ef1be1b20f21c55192d9e5a86ac1c5194 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupView.java @@ -3,6 +3,7 @@ package unipotsdam.gf.core.management.group; import unipotsdam.gf.core.management.Management; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.project.ProjectConfiguration; +import unipotsdam.gf.core.management.project.ProjectDAO; import unipotsdam.gf.interfaces.IGroupFinding; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.groupfinding.GroupFormationMechanism; @@ -25,6 +26,9 @@ public class GroupView { @Inject private Management iManagement; + @Inject + ProjectDAO projectDAO; + @GET @Produces(MediaType.APPLICATION_JSON) @Path("/project/{projectName}/student/{userName}") @@ -37,19 +41,19 @@ public class GroupView { /** * - * @param projectToken + * @param projectName * @param groupFindingMechanism * @return * @throws URISyntaxException */ @POST @Consumes(MediaType.APPLICATION_JSON) - @Path("/settings/projects/{projectToken}") - public void createProject(@PathParam("projectToken") String projectToken, String groupFindingMechanism) throws + @Path("/settings/projects/{projectName}") + public void createProject(@PathParam("projectName") String projectName, String groupFindingMechanism) throws URISyntaxException { try { - Project project = iManagement.getProjectByToken(projectToken); + Project project = projectDAO.getProjectByName(projectName); GroupFormationMechanism gfm = GroupFormationMechanism.valueOf(groupFindingMechanism); iManagement.create( diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java index 816601b6324d8c9c01d5f382c2362cf5b0d7df00..5765ef48199bfe79b7cd366f90b9fef5d462f189 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java @@ -21,7 +21,7 @@ public class Footer extends SimpleTagSupport { String projectName = request.getParameter("projectName"); ProjectPhase projectPhase; try { - projectPhase = projectDAO.getProjectById(projectName).getPhase(); + projectPhase = projectDAO.getProjectByName(projectName).getPhase(); } catch (Exception e) { projectPhase = null; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java index e93c5fa9c029e34250dbe7e1f6c0bc9b1e8bb952..311b2028cfaf34249bee57ec954d2e9abc38b80f 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java @@ -32,7 +32,7 @@ public class Menu extends SimpleTagSupport { ProjectPhase projectPhase; try { ProjectDAO projectDAO = new ProjectDAO(new MysqlConnect()); - projectPhase = projectDAO.getProjectById(projectName).getPhase(); + projectPhase = projectDAO.getProjectByName(projectName).getPhase(); } catch (Exception e) { projectPhase = null; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java index 28f20898b297d237c8a9dcd10b6e8116849be816..3e04ff30e2c35b2c74beeebe2935eb60d2d4d529 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java @@ -6,6 +6,7 @@ import javax.xml.bind.annotation.XmlRootElement; import java.sql.Timestamp; import java.time.LocalDateTime; import java.time.ZoneId; +import java.util.Arrays; /** * Created by dehne on 31.05.2018. @@ -13,57 +14,49 @@ import java.time.ZoneId; @XmlRootElement(name = "Project") public class Project { - private String id; + private String name; private String password; private Boolean active; - private Timestamp timecreated; + private Long timecreated; //timestamp macht zu viele Probleme // the id of the authorEmail (not the token) private String authorEmail; private String adminPassword; - private String token; private ProjectPhase phase; private String[] tags; public Project() { } - public Project(String id, String password, Boolean active, String author, String adminPassword, String[] tags) { - this.id = id; + public Project(String name, String password, Boolean active, String author, String adminPassword, String[] tags) { + this.name = name; this.password = password; this.active = active; this.authorEmail = author; this.adminPassword = adminPassword; - this.timecreated = Timestamp.valueOf(LocalDateTime.now(ZoneId.of("UTC"))); + this.timecreated = System.currentTimeMillis(); // default starting at course creation if new this.setPhase(ProjectPhase.CourseCreation); this.tags = tags; } - public Project(String id, String password, Boolean active, - Timestamp timecreated, String author, String adminPassword, - String token, ProjectPhase phase) { - this.id = id; + public Project( + String name, String password, Boolean active, Long timecreated, String authorEmail, + String adminPassword, ProjectPhase phase, String[] tags) { + this.name = name; this.password = password; this.active = active; + this.authorEmail = authorEmail; this.timecreated = timecreated; - this.authorEmail = author; this.adminPassword = adminPassword; - this.token = token; this.phase = phase; this.tags = tags; } - public Project(String projectName) { - setId(projectName); - } - - public String getName() { - return id; + public Project(String projectName, String password) { + this.name = projectName; + this.password = password; } - public void setId(String id) { - this.id = id; - } public String getPassword() { return password; @@ -97,17 +90,7 @@ public class Project { this.adminPassword = adminPassword; } - public String getToken() { - return token; - } - - public void setToken(String token) { - this.token = token; - } - public Timestamp getTimecreated() { - return timecreated; - } public ProjectPhase getPhase() { return phase; @@ -130,16 +113,37 @@ public class Project { this.tags = tags; } + public void setName(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public Boolean getActive() { + return active; + } + + public Long getTimecreated() { + return timecreated; + } + + public void setTimecreated(Long timecreated) { + this.timecreated = timecreated; + } + @Override public String toString() { final StringBuilder sb = new StringBuilder("Project{"); - sb.append("id='").append(id).append('\''); + sb.append("name='").append(name).append('\''); sb.append(", password='").append(password).append('\''); sb.append(", active=").append(active); sb.append(", timecreated=").append(timecreated); sb.append(", authorEmail='").append(authorEmail).append('\''); sb.append(", adminPassword='").append(adminPassword).append('\''); - sb.append(", phase='").append(phase).append('\''); + sb.append(", phase=").append(phase); + sb.append(", tags=").append(Arrays.toString(tags)); sb.append('}'); return sb.toString(); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java index 9bbe3ab296c9753c3e53682fb2e876b3149ca202..2dcec30d61cbfa7c4f07b9a76d87c6e0164ab42d 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java @@ -10,6 +10,7 @@ import javax.inject.Inject; import javax.inject.Singleton; import java.sql.Timestamp; import java.util.ArrayList; +import java.util.List; import java.util.UUID; @ManagedBean @@ -24,24 +25,21 @@ public class ProjectDAO { this.connect = connect; } - public String persist(Project project) { - UUID uuid = UUID.randomUUID(); - String token = uuid.toString(); + public void persist(Project project) { connect.connect(); String mysqlRequest = - "INSERT INTO projects (`id`, `password`, `active`, `timecreated`, `authorEmail`, " - + "`adminPassword`, `token`, `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(), token, project.getPhase() + project.getTimecreated(), project.getAuthorEmail(), project.getAdminPassword(), project.getPhase() == null ? ProjectPhase.CourseCreation : project.getPhase()); connect.close(); - return token; } public void delete(Project project) { connect.connect(); - String mysqlRequest = "DELETE FROM projects where id = (?)"; + String mysqlRequest = "DELETE FROM projects where name = (?)"; connect.issueInsertOrDeleteStatement(mysqlRequest, project.getName()); connect.close(); // TODO: delete all groups of project? @@ -51,7 +49,7 @@ public class ProjectDAO { public Boolean exists(Project project) { Boolean result; connect.connect(); - String mysqlRequest = "SELECT * FROM projects where id = ? and adminPassword = ?"; + String mysqlRequest = "SELECT * FROM projects where name = ? and adminPassword = ?"; VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(mysqlRequest, project.getName(), project.getAdminPassword()); result = vereinfachtesResultSet.next(); @@ -59,23 +57,18 @@ public class ProjectDAO { return result; } - public Project getProjectById(String id) { + public Project getProjectByName(String name) { connect.connect(); - String mysqlRequest = "SELECT * FROM projects where id = ?"; + String mysqlRequest = "SELECT * FROM projects where name = ?"; VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, id); + connect.issueSelectStatement(mysqlRequest, name); boolean next = vereinfachtesResultSet.next(); - return getProject(vereinfachtesResultSet, next); + Project result = getProject(vereinfachtesResultSet, next); + List<String> tags = getTags(result); + result.setTags(tags.toArray(new String[0])); + return result; } - public Project getProjectByToken(String token) { - connect.connect(); - String mysqlRequest = "SELECT * FROM projects where token = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, token); - boolean next = vereinfachtesResultSet.next(); - return getProject(vereinfachtesResultSet, next); - } private Project getProject(VereinfachtesResultSet vereinfachtesResultSet, boolean next) { if (next) { @@ -89,16 +82,16 @@ public class ProjectDAO { } private Project getProjectFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) { - String id = vereinfachtesResultSet.getString("id"); + String id = vereinfachtesResultSet.getString("name"); String password = vereinfachtesResultSet.getString("password"); boolean active = vereinfachtesResultSet.getBoolean("active"); - Timestamp timestamp = vereinfachtesResultSet.getTimestamp("timecreated"); - String author = vereinfachtesResultSet.getString("authorEmail"); + long timestamp = vereinfachtesResultSet.getLong("timecreated"); + String author = vereinfachtesResultSet.getString("author"); String adminPassword = vereinfachtesResultSet.getString("adminpassword"); - String token = vereinfachtesResultSet.getString("token"); String phase = vereinfachtesResultSet.getString("phase"); - return new Project(id, password, active, timestamp, author, adminPassword, token, ProjectPhase.valueOf(phase)); + + return new Project(id, password, active, timestamp, author, adminPassword, ProjectPhase.valueOf(phase), null); } public java.util.List<String> getTags(Project project) { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java index cc238b25f4d20ec0e9d88028797285c7e10cb531..236afaf8ffd0201d7048ac17b40baf20072ebc6a 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java @@ -20,6 +20,9 @@ import java.net.URISyntaxException; public class ProjectView { + @Inject + private ProjectDAO projectDAO; + @Inject private Management iManagement; @@ -27,17 +30,15 @@ public class ProjectView { @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) @Path("/create") - public String createProject(@Context HttpServletRequest req, Project project) throws URISyntaxException { + public void createProject(Project project) throws URISyntaxException { // we assume the token is send not the author id String authorToken = project.getAuthorEmail(); User userByToken = iManagement.getUserByToken(authorToken); project.setAuthorEmail(userByToken.getEmail()); try { - String projectToken = iManagement.create(project); - req.getSession().setAttribute(GFContexts.PROJECTNAME, project.getName()); - return projectToken; + iManagement.create(project); } catch (Exception e) { - return "project exists"; + throw new WebApplicationException("Project already exists"); } } @@ -61,17 +62,6 @@ public class ProjectView { return Response.seeOther(new URI(existsUrl)).build(); } - @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.TEXT_PLAIN) - @Path("/token") - public String getProjectToken( - @QueryParam("project") String projectName, @QueryParam("password") String password) - throws URISyntaxException { - - String token = iManagement.getProjectToken(projectName, password); - return token; - } @GET @Consumes(MediaType.TEXT_PLAIN) @@ -98,7 +88,7 @@ public class ProjectView { @Produces(MediaType.TEXT_PLAIN) @Path("/login/{projectName}") public String logInProject(@PathParam("projectName") String projectName, @QueryParam("password") String password) { - Project project = iManagement.getProjectById(projectName); + Project project = projectDAO.getProjectByName(projectName); if (project == null){ return "project missing"; } @@ -106,8 +96,7 @@ public class ProjectView { return "wrong password"; } - String result = project.getToken(); - return result; + return "ok"; } @GET @@ -116,7 +105,7 @@ public class ProjectView { @Path("/tags/{projectToken}") public String[] getTags(@PathParam("projectToken") String projectToken) { // TODO write single query - Project project = iManagement.getProjectByToken(projectToken); + Project project = iManagement.getProjectByName(projectToken); return iManagement.getTags(project).toArray(new String[0]); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java.orig b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java.orig deleted file mode 100644 index db21d73d300f31db555250314a5c6e533fef911f..0000000000000000000000000000000000000000 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java.orig +++ /dev/null @@ -1,104 +0,0 @@ -package unipotsdam.gf.core.management.project; - -import unipotsdam.gf.core.management.Management; -import unipotsdam.gf.core.management.user.User; - -import javax.annotation.ManagedBean; -import javax.inject.Inject; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; -import java.net.URISyntaxException; - - -@ManagedBean -@Path("/project") -public class ProjectView { - - - @Inject - private Management iManagement; - - @PUT - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.TEXT_PLAIN) - @Path("/create") - public String createProject(Project project) throws URISyntaxException { - // we assume the token is send not the author id - String authorToken = project.getAuthorEmail(); - User userByToken = iManagement.getUserByToken(authorToken); - project.setAuthorEmail(userByToken.getId()); - try { - String projectToken = iManagement.create(project); - return projectToken; - } catch (Exception e) { - return "project exists"; - } - - } - - @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.TEXT_PLAIN) - @Path("/token") - public String getProjectToken( - @QueryParam("project") String projectName, @QueryParam("password") String password) - throws URISyntaxException { - - String token = iManagement.getProjectToken(projectName, password); - return token; - } - - @GET - @Consumes(MediaType.TEXT_PLAIN) - @Produces(MediaType.APPLICATION_JSON) - @Path("/all/author/{userEmail}") - public java.util.List<String> getProjects( - @PathParam("userEmail") String authorToken) { - java.util.List<String> projects = iManagement.getProjects(authorToken); - return projects; - } - - @GET - @Consumes(MediaType.TEXT_PLAIN) -<<<<<<< HEAD - @Produces(MediaType.TEXT_PLAIN) - @Path("/login/{projectName}/password/{password}") -======= - @Produces(MediaType.APPLICATION_JSON) - @Path("/all/student/{studentToken}") - public java.util.List<String> getProjectsStudent( - @PathParam("studentToken") String studentToken) { - java.util.List<String> projects = iManagement.getProjectsStudent(studentToken); - return projects; - } - - @GET - @Consumes(MediaType.TEXT_PLAIN) - @Produces(MediaType.APPLICATION_JSON) - @Path("/join/project/{projectName}/password/{password}") ->>>>>>> 05a31d1f59f28ad502822884c1e2f196f9239de7 - public String logInProject(@PathParam("projectName") String projectName, @PathParam("password") String password) { - Project project = iManagement.getProjectById(projectName); - if (project == null){ - return "project missing"; - } - if (project.getPassword().equals(password) || project.getPassword().trim().equals("")) - return "wrong password"; - - String result = project.getToken(); - return result; - } - - @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - @Path("/tags/{projectToken}") - public java.util.List<String> getTags(@PathParam("projectToken") String projectToken) { - // TODO write single query - Project project = iManagement.getProjectByToken(projectToken); - return iManagement.getTags(project); - } - - - -} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java index 399a398a7aa5d5d4559ab6e2207279b99b9174c5..bacb1e3632598c46c65ca1429f95474cb4d71d5d 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java @@ -35,7 +35,7 @@ public class PhasesService { @POST @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public void endPhase(@PathParam("projectPhase") String projectPhase, @PathParam("projectName") String projectName) { - phases.endPhase(ProjectPhase.valueOf(projectPhase), projectDAO.getProjectById(projectName)); + phases.endPhase(ProjectPhase.valueOf(projectPhase), projectDAO.getProjectByName(projectName)); } /** @@ -48,6 +48,6 @@ public class PhasesService { @GET @Produces({MediaType.TEXT_PLAIN}) public String getCurrentPhase(@PathParam("projectName") String projectName) { - return projectDAO.getProjectById(projectName).getPhase().toString(); + return projectDAO.getProjectByName(projectName).getPhase().toString(); } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java index d37515031fbef4fcf2c63505c2600dc7e33cd118..e68a9ed951a37d87ed24bd4198386a58d2f8a0ab 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java @@ -138,7 +138,7 @@ public class QuizView { @Path("/quiz") public String createQuiz(StudentAndQuiz studentAndQuiz) { - Project project = management.getProjectById(studentAndQuiz.getStudentIdentifier().getProjectName()); + Project project = management.getProjectByName(studentAndQuiz.getStudentIdentifier().getProjectName()); User user = management.getUserByEmail(studentAndQuiz.getStudentIdentifier().getUserEmail()); Boolean isStudent = user.getStudent(); peer.createQuiz(studentAndQuiz); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationService.java index ed1e51a7dbf5c17786f8f80d88ed6cb80d06ab52..1134e754299c213b8dbe9c49c28478e7b95c279d 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationService.java @@ -1,5 +1,7 @@ package unipotsdam.gf.modules.groupfinding.dummy.service; +import uk.co.jemos.podam.api.PodamFactory; +import uk.co.jemos.podam.api.PodamFactoryImpl; import unipotsdam.gf.core.management.Management; import unipotsdam.gf.core.management.group.Group; import unipotsdam.gf.core.states.model.ProjectPhase; @@ -19,12 +21,15 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; + @ManagedBean @Resource @Singleton public class DummyProjectCreationService { + private PodamFactory factory = new PodamFactoryImpl(); + private ICommunication communicationService; private Management management; private GroupDAO groupDAO; @@ -40,20 +45,13 @@ public class DummyProjectCreationService { public boolean createExampleProject() { + Project project = factory.manufacturePojo(Project.class); + User docentUser = getDocentUser(); if (!management.exists(docentUser)) { management.create(docentUser, null); } - String[] tags ={"tag1", "tag2", "tag3"}; - Project project = new Project(); - project.setPhase(ProjectPhase.DossierFeedback); - project.setId("1"); - project.setTags(tags); - project.setAuthorEmail("author"); - project.setActive(true); - project.setPassword("1234"); - project.setToken("32trgr"); - project.setAdminPassword("1234"); + if (!management.exists(project)) { management.create(project); } diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql index 4238b52f0cb890d880c5dd5bb8d9cdbc08d831f9..abb76ec2f5d16a974609dce42f9be7e41b150343 100644 --- a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql +++ b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql @@ -68,9 +68,7 @@ CREATE TABLE IF NOT EXISTS `groups` ( CREATE TABLE IF NOT EXISTS `groupuser` ( `userEmail` varchar(255) NOT NULL, - `groupId` int(11) NOT NULL, - FOREIGN KEY (`userEmail`) REFERENCES users(`email`), - FOREIGN KEY (`groupId`) REFERENCES groups(`id`) + `groupId` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `phasesselected` ( @@ -82,19 +80,16 @@ CREATE TABLE IF NOT EXISTS `projects` ( `name` 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, + `timecreated` long not null, + `author` varchar(100) NOT NULL, `adminPassword` varchar(400) NOT NULL, - `token` 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, - FOREIGN KEY (`userEmail`) REFERENCES users(`email`), - FOREIGN KEY (`projectName`) REFERENCES projects(`name`) + `userEmail` varchar(100) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `quiz` ( @@ -164,6 +159,12 @@ CREATE TABLE IF NOT EXISTS `workrating` ( ) 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`); + COMMIT; diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java index 15d5b83869dc52af3b3871709d4a7c990bacc49b..17e812fd62ac59350898d309671ce8dc91302211 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java @@ -1,11 +1,18 @@ package unipotsdam.gf.core.management.project; +import org.glassfish.hk2.api.ServiceLocator; +import org.glassfish.hk2.utilities.ServiceLocatorUtilities; import org.junit.Before; import org.junit.Test; import uk.co.jemos.podam.api.PodamFactory; import uk.co.jemos.podam.api.PodamFactoryImpl; -import unipotsdam.gf.core.database.InMemoryMySqlConnect; +import unipotsdam.gf.core.database.TestGFApplicationBinder; +import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; +import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.management.user.UserDAO; + +import javax.inject.Inject; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; @@ -13,28 +20,32 @@ import static org.junit.Assert.assertThat; public class ProjectDAOTest { - private InMemoryMySqlConnect inMemoryMySqlConnect; + @Inject + private MysqlConnect inMemoryMySqlConnect; + + @Inject private ProjectDAO projectDAO; + + @Inject + private UserDAO userDAO; + + private Project project; - static PodamFactory factory = new PodamFactoryImpl(); + PodamFactory factory = new PodamFactoryImpl(); @Before public void setUp() { - inMemoryMySqlConnect = new InMemoryMySqlConnect(); - projectDAO = new ProjectDAO(inMemoryMySqlConnect); + final ServiceLocator locator = ServiceLocatorUtilities.bind(new TestGFApplicationBinder()); + //final ServiceLocator locator = ServiceLocatorUtilities.bind(new GFApplicationBinder()); + locator.inject(this); + project = factory.manufacturePojo(Project.class); - } + String authorEmail = project.getAuthorEmail(); + User user = factory.manufacturePojo(User.class); + user.setEmail(authorEmail); + userDAO.persist(user, null); - @Test - public void testPersist() { - projectDAO.persist(project); - inMemoryMySqlConnect.connect(); - String mysqlRequest = "SELECT * FROM projects where id = ? and adminPassword = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - inMemoryMySqlConnect.issueSelectStatement(mysqlRequest, project.getName(), project.getAdminPassword()); - boolean result = vereinfachtesResultSet.next(); - assertThat(result, is(true)); } @Test @@ -55,7 +66,7 @@ public class ProjectDAOTest { @Test public void testGetProjectById() { projectDAO.persist(project); - Project projectActual = projectDAO.getProjectById(project.getName()); + Project projectActual = projectDAO.getProjectByName(project.getName()); assertEquals(project.getAdminPassword(), projectActual.getAdminPassword()); assertEquals(project.getAuthorEmail(), projectActual.getAuthorEmail()); diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java index 2574c04265dc097888cd83757b7965feddfddfe8..c60042a55ea87047f476569ff724313c909057e8 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java @@ -49,35 +49,35 @@ public class PhaseTest { @Test public void phase1() { Project project = new Project(); - project.setId("Gemainsam Forschen"); + project.setName("Gemainsam Forschen"); phases.endPhase(ProjectPhase.CourseCreation, project); } @Test public void phase2() { Project project = new Project(); - project.setId("Gemainsam Forschen"); + project.setName("Gemainsam Forschen"); phases.endPhase(ProjectPhase.GroupFormation, project); } @Test public void phase3() { Project project = new Project(); - project.setId("Gemainsam Forschen"); + project.setName("Gemainsam Forschen"); phases.endPhase(ProjectPhase.DossierFeedback, project); } @Test public void phase4() { Project project = new Project(); - project.setId("Gemainsam Forschen"); + project.setName("Gemainsam Forschen"); phases.endPhase(ProjectPhase.Execution, project); } @Test public void phase5() { Project project = new Project(); - project.setId("Gemainsam Forschen"); + project.setName("Gemainsam Forschen"); phases.endPhase(ProjectPhase.Assessment, project); } } diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java index ca4db71cfa01ff173c4cfada0b85ac216f14eafd..d847ed2bc8336855afe763957f92b61a4ee57f4c 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java @@ -246,7 +246,7 @@ public class JournalDAOImplTest { connection.connect(); Project openProject = new Project(); - openProject.setId(testProject); + openProject.setName(testProject); //create some Journals Journal j1 = testJournal; diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java index f8a13dbf1d95eedae233e03dc930d01f5e637bcf..db91d894200806105b9729c6004ff8a1ef421b63 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java @@ -169,7 +169,7 @@ public class ProjectDescriptionImplDAOTest { create(openDescription); Project project = new Project(); - project.setId(testProjekt); + project.setName(testProjekt); ArrayList<String> resultDescriptions = descriptionDAO.getOpenDescriptions(project); assertEquals(2, resultDescriptions.size()); diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java index 78681fd7de8406f6a134adb93ab6a5d0ad53a8ad..64dff042e9725d4090a765bf3fa6700fb6e65b1f 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java @@ -177,7 +177,7 @@ public class JournalServiceImplTest { public void checkIfAllJournalClosed() { Project project = new Project(); - project.setId(testProject); + project.setName(testProject); journalDAO.createJournal(testJournal); journalDAO.createJournal(testJournal); @@ -203,7 +203,7 @@ public class JournalServiceImplTest { Project project = new Project(); testJournal.getStudentIdentifier().setUserEmail(token); - project.setId(testProject); + project.setName(testProject); journalDAO.createJournal(testJournal); diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java index 1b552336a543ccc8fe16b0ad7a195496bc83d1ae..fae32fe03dc845800a16670da23adeb475738c11 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java @@ -174,7 +174,7 @@ public class ProjectDescriptionImplTest { descriptionDAO.createDescription(testProjectDescriptionObj); Project project = new Project(); - project.setId(testProject); + project.setName(testProject); assertEquals(0, projectDescriptionService.checkIfAllDescriptionsClosed(project).size()); ProjectDescription resDescription = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent)); @@ -191,7 +191,7 @@ public class ProjectDescriptionImplTest { String token = userDAO.getUserToken(user); Project project = new Project(); - project.setId(testProject); + project.setName(testProject); testProjectDescriptionObj.getStudent().setUserEmail(token); descriptionDAO.createDescription(testProjectDescriptionObj);