Skip to content
Snippets Groups Projects
Commit bda0ca96 authored by Sven Kästle's avatar Sven Kästle
Browse files

feat: Add REST gateway to receive a submission project representation based by the project id

parent 31e7fe37
No related branches found
No related tags found
No related merge requests found
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
*
......
......@@ -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
*
......
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 + '\'' +
'}';
}
}
......@@ -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();
}
}
}
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