From bda0ca966c6c338b4cd6f4a01a61a6281bcfa719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sven=20K=C3=A4stle?= <sven.kaestle@gmx.de> Date: Thu, 6 Sep 2018 14:59:52 +0200 Subject: [PATCH] feat: Add REST gateway to receive a submission project representation based by the project id --- .../unipotsdam/gf/interfaces/ISubmission.java | 13 +++-- .../controller/SubmissionController.java | 43 +++++++++++++++ .../SubmissionProjectRepresentation.java | 55 +++++++++++++++++++ .../submission/view/SubmissionService.java | 18 ++++++ 4 files changed, 125 insertions(+), 4 deletions(-) create mode 100644 gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionProjectRepresentation.java diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ISubmission.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ISubmission.java index 975f180b..01a45002 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ISubmission.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ISubmission.java @@ -1,10 +1,7 @@ package unipotsdam.gf.interfaces; import unipotsdam.gf.modules.peer2peerfeedback.Category; -import unipotsdam.gf.modules.submission.model.FullSubmission; -import unipotsdam.gf.modules.submission.model.FullSubmissionPostRequest; -import unipotsdam.gf.modules.submission.model.SubmissionPart; -import unipotsdam.gf.modules.submission.model.SubmissionPartPostRequest; +import unipotsdam.gf.modules.submission.model.*; import java.util.ArrayList; @@ -63,6 +60,14 @@ public interface ISubmission { */ ArrayList<SubmissionPart> getAllSubmissionParts(String fullSubmissionId); + /** + * Get all project representations of submission part for a given project id + * + * @param projectId The given project id + * @return An ArrayList of submission project representations + */ + ArrayList<SubmissionProjectRepresentation> getSubmissionPartsByProjectId(String projectId); + /** * Checks if a submission part already exists in the database * diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java index 6053a7f4..adced7f9 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java @@ -239,6 +239,33 @@ public class SubmissionController implements ISubmission { } + @Override + public ArrayList<SubmissionProjectRepresentation> getSubmissionPartsByProjectId(String projectId) { + + // establish connection + MysqlConnect connection = new MysqlConnect(); + connection.connect(); + + // build and execute request + String request = "SELECT s.userId, s.category, s.fullSubmissionId " + + "FROM fullsubmissions f " + + "LEFT JOIN submissionparts s " + + "ON f.id = s.fullSubmissionId " + + "WHERE f.projectId = ?"; + VereinfachtesResultSet rs = connection.issueSelectStatement(request, projectId); + + ArrayList<SubmissionProjectRepresentation> representations; + + // save submission + representations = getAllSubmissionProjectRepresentationsFromResultSet(rs); + + // close connection + connection.close(); + + return representations; + + } + @Override public boolean existsSubmissionPart(String fullSubmissionId, Category category) { @@ -372,6 +399,22 @@ public class SubmissionController implements ISubmission { return submissionParts; } + private ArrayList<SubmissionProjectRepresentation> getAllSubmissionProjectRepresentationsFromResultSet(VereinfachtesResultSet rs) { + + ArrayList<SubmissionProjectRepresentation> representations = new ArrayList<>(); + + while (rs.next()) { + representations.add(new SubmissionProjectRepresentation( + rs.getString("userId"), + Category.valueOf(rs.getString("category").toUpperCase()), + rs.getString("fullSubmissionId") + )); + } + + return representations; + + } + /** * Calculates how many similar body elements (based on start and end character) can be found in the database * diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionProjectRepresentation.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionProjectRepresentation.java new file mode 100644 index 00000000..998bc1fb --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionProjectRepresentation.java @@ -0,0 +1,55 @@ +package unipotsdam.gf.modules.submission.model; + +import unipotsdam.gf.modules.peer2peerfeedback.Category; + +public class SubmissionProjectRepresentation { + + // variables + private String user; + private Category category; + private String fullSubmissionId; + + // constructor + public SubmissionProjectRepresentation(String user, Category category, String fullSubmissionId) { + this.user = user; + this.category = category; + this.fullSubmissionId = fullSubmissionId; + } + + public SubmissionProjectRepresentation(){} + + // methods + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public Category getCategory() { + return category; + } + + public void setCategory(Category category) { + this.category = category; + } + + public String getFullSubmissionId() { + return fullSubmissionId; + } + + public void setFullSubmissionId(String fullSubmissionId) { + this.fullSubmissionId = fullSubmissionId; + } + + @Override + public String toString() { + return "SubmissionProjectRepresentation{" + + "user='" + user + '\'' + + ", category=" + category + + ", fullSubmissionId='" + fullSubmissionId + '\'' + + '}'; + } + +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java index 07aacbd4..6b6bfd25 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java @@ -96,4 +96,22 @@ public class SubmissionService { return Response.status(Response.Status.NOT_FOUND).entity(response).build(); } } + + @GET + @Path("/project/{id}") + public Response getSubmissionPartsByProjectId(@PathParam("id") String projectId) { + // get submission project representation from database based by project id + SubmissionController controller = new SubmissionController(); + ArrayList<SubmissionProjectRepresentation> representations = controller.getSubmissionPartsByProjectId(projectId); + + if (representations.size() > 0) { + return Response.ok(representations).build(); + } + else { + SubmissionResponse response = new SubmissionResponse(); + response.setMessage("No submission parts found for project id '" + projectId + "'"); + + return Response.status(Response.Status.NOT_FOUND).entity(response).build(); + } + } } -- GitLab