diff --git a/repository-services/README.md b/repository-services/README.md index 15f1a57..3291ed3 100644 --- a/repository-services/README.md +++ b/repository-services/README.md @@ -10,7 +10,7 @@ Change to the correct directory: cd repository-test-services ``` -Use docker compose to deploy both services simultaniously: +Use docker compose to deploy both services simultaneously: ```sh docker compose up diff --git a/repository-services/isajson-biosamples/src/main/java/com/elixir/biohackaton/ISAToSRA/biosamples/controller/BioSampleSubmissionController.java b/repository-services/isajson-biosamples/src/main/java/com/elixir/biohackaton/ISAToSRA/biosamples/controller/BioSampleSubmissionController.java index 7ca20b1..ed3fe0a 100644 --- a/repository-services/isajson-biosamples/src/main/java/com/elixir/biohackaton/ISAToSRA/biosamples/controller/BioSampleSubmissionController.java +++ b/repository-services/isajson-biosamples/src/main/java/com/elixir/biohackaton/ISAToSRA/biosamples/controller/BioSampleSubmissionController.java @@ -4,6 +4,9 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; import static org.springframework.http.MediaType.APPLICATION_XML_VALUE; +import com.elixir.biohackaton.ISAToSRA.biosamples.receipt.Receipt; +import com.elixir.biohackaton.ISAToSRA.biosamples.receipt.Receipt.Accession; +import com.elixir.biohackaton.ISAToSRA.biosamples.receipt.Receipt; import com.elixir.biohackaton.ISAToSRA.biosamples.service.BioSamplesSubmitter; import com.elixir.biohackaton.ISAToSRA.model.IsaJson; import com.elixir.biohackaton.ISAToSRA.model.Study; @@ -12,6 +15,9 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -23,22 +29,22 @@ public class BioSampleSubmissionController { @Autowired private ObjectMapper objectMapper; @ApiResponses( - value = { - @ApiResponse(responseCode = "200", description = "Ok"), - @ApiResponse(responseCode = "401", description = "Unauthorized"), - @ApiResponse(responseCode = "403", description = "Forbidden"), - @ApiResponse(responseCode = "400", description = "Bad request"), - @ApiResponse(responseCode = "408", description = "Request Timeout"), - @ApiResponse(responseCode = "415", description = "Unsupported media type") - }) + value = { + @ApiResponse(responseCode = "200", description = "Ok"), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "403", description = "Forbidden"), + @ApiResponse(responseCode = "400", description = "Bad request"), + @ApiResponse(responseCode = "408", description = "Request Timeout"), + @ApiResponse(responseCode = "415", description = "Unsupported media type") + }) @CrossOrigin(origins = "http://localhost:8000") @PostMapping( - value = "/submit", - consumes = {APPLICATION_JSON_VALUE, APPLICATION_XML_VALUE}) + value = "/submit", + consumes = {APPLICATION_JSON_VALUE, APPLICATION_XML_VALUE}) public String performSubmissionToBioSamplesAndEna( - @RequestBody final String submissionPayload, - @RequestParam(value = "webinjwt") String webinJwt) - throws Exception { + @RequestBody final String submissionPayload, + @RequestParam(value = "webinjwt") String webinJwt) + throws Exception { String webinToken; objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); @@ -52,9 +58,14 @@ public String performSubmissionToBioSamplesAndEna( final IsaJson isaJson = this.objectMapper.readValue(submissionPayload, IsaJson.class); final List studies = getStudies(isaJson); - this.bioSamplesSubmitter.createBioSamples(studies, webinToken); + final Map accessionsMap = this.bioSamplesSubmitter.createBioSamples(studies, webinToken); + final Receipt repositoryData = new Receipt(); + + repositoryData.setTargetRepository("biosamples"); + repositoryData.setAccessions(accessionsMap.values().stream() + .map(value -> new Accession(value, null)).collect(Collectors.toList())); - return this.objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(isaJson); + return this.objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(repositoryData); } public List getStudies(final IsaJson isaJson) { diff --git a/repository-services/isajson-biosamples/src/main/java/com/elixir/biohackaton/ISAToSRA/biosamples/receipt/Receipt.java b/repository-services/isajson-biosamples/src/main/java/com/elixir/biohackaton/ISAToSRA/biosamples/receipt/Receipt.java new file mode 100644 index 0000000..55bec1c --- /dev/null +++ b/repository-services/isajson-biosamples/src/main/java/com/elixir/biohackaton/ISAToSRA/biosamples/receipt/Receipt.java @@ -0,0 +1,89 @@ +package com.elixir.biohackaton.ISAToSRA.biosamples.receipt; + +import lombok.Getter; + +import java.util.List; + +@Getter +public class Receipt { + private String targetRepository; + private List accessions; + private List errors; + private List info; + + public void setTargetRepository(String targetRepository) { + this.targetRepository = targetRepository; + } + + public void setAccessions(List accessions) { + this.accessions = accessions; + } + + public void setErrors(List errors) { + this.errors = errors; + } + + public void setInfo(List info) { + this.info = info; + } + + @Getter + public static class Accession { + private String id; + private String data; + + public Accession(String id, String data) { + this.id = id; + this.data = data; + } + + public void setId(String id) { + this.id = id; + } + + public void setData(String data) { + this.data = data; + } + } + + // Error class + @Getter + static class Error { + private String code; + private String message; + + public Error(String code, String message) { + this.code = code; + this.message = message; + } + + public void setCode(String code) { + this.code = code; + } + + public void setMessage(String message) { + this.message = message; + } + } + + // Info class + @Getter + static class Info { + // Define fields, constructor, getters, and setters + private String key; + private String value; + + public Info(String key, String value) { + this.key = key; + this.value = value; + } + + public void setKey(String key) { + this.key = key; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/repository-services/isajson-ena/src/main/java/com/elixir/biohackaton/ISAToSRA/sra/service/WebinExperimentXmlCreator.java b/repository-services/isajson-ena/src/main/java/com/elixir/biohackaton/ISAToSRA/sra/service/WebinExperimentXmlCreator.java index 5535b12..f97f5f3 100644 --- a/repository-services/isajson-ena/src/main/java/com/elixir/biohackaton/ISAToSRA/sra/service/WebinExperimentXmlCreator.java +++ b/repository-services/isajson-ena/src/main/java/com/elixir/biohackaton/ISAToSRA/sra/service/WebinExperimentXmlCreator.java @@ -146,7 +146,9 @@ private Map mapExperiments( .addText(otherMaterial.getName()); experimentElement .addElement("STUDY_REF") - .addAttribute("refname", study.getTitle() + "-" + randomSubmissionIdentifier); + .addAttribute( + "refname", + study.getTitle() + "-" + randomSubmissionIdentifier); final Element designElement = experimentElement.addElement("DESIGN");