Skip to content

Commit

Permalink
Merge pull request #42 from elixir-europe/keep_sunspot_happy
Browse files Browse the repository at this point in the history
Keep sunspot happy
  • Loading branch information
kdp-cloud authored Jul 22, 2024
2 parents 5d84a54 + bccafa0 commit 52c02db
Show file tree
Hide file tree
Showing 13 changed files with 323 additions and 194 deletions.
32 changes: 32 additions & 0 deletions .github/workflows/build-biosamples-service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Build and Push Docker image for BioSamples service

on:
push:
paths:
- "repository-services/isajson-biosamples/**"
pull_request:
paths:
- "repository-services/isajson-biosamples/**"
branches:
- main

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build Docker image
uses: docker/build-push-action@v6
with:
context: repository-services/isajson-biosamples
push: false
tags: user/app:latest
32 changes: 32 additions & 0 deletions .github/workflows/build-ena-service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Build and Push Docker image for ENA service

on:
push:
paths:
- "repository-services/isajson-ena/**"
pull_request:
paths:
- "repository-services/isajson-ena/**"
branches:
- main

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build Docker image
uses: docker/build-push-action@v6
with:
context: repository-services/isajson-ena
push: false
tags: user/app:latest
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
import com.elixir.biohackaton.ISAToSRA.model.Investigation;
import com.elixir.biohackaton.ISAToSRA.model.IsaJson;
import com.elixir.biohackaton.ISAToSRA.model.Study;
import com.elixir.biohackaton.ISAToSRA.sra.service.*;
import com.elixir.biohackaton.ISAToSRA.sra.model.MarsReceipt;
import com.elixir.biohackaton.ISAToSRA.sra.model.Receipt;
import com.elixir.biohackaton.ISAToSRA.sra.service.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
Expand All @@ -32,42 +32,36 @@
@Slf4j
@RestController
public class WebinIsaToXmlSubmissionController {
@Autowired
private BioSamplesAccessionsParser bioSamplesAccessionsParser;
@Autowired private BioSamplesAccessionsParser bioSamplesAccessionsParser;

@Autowired
private WebinStudyXmlCreator webinStudyXmlCreator;
@Autowired private WebinStudyXmlCreator webinStudyXmlCreator;

@Autowired
private WebinExperimentXmlCreator webinExperimentXmlCreator;
@Autowired private WebinExperimentXmlCreator webinExperimentXmlCreator;

@Autowired
private WebinProjectXmlCreator webinProjectXmlCreator;
@Autowired private WebinProjectXmlCreator webinProjectXmlCreator;

@Autowired
private WebinRunXmlCreator webinRunXmlCreator;
@Autowired private WebinRunXmlCreator webinRunXmlCreator;

@Autowired
private WebinHttpSubmissionService webinHttpSubmissionService;
@Autowired private WebinHttpSubmissionService webinHttpSubmissionService;

@Autowired
private ObjectMapper objectMapper;
@Autowired private ObjectMapper objectMapper;

@Autowired
private ReceiptConversionService receiptConversionService;
@Autowired private ReceiptConversionService receiptConversionService;

@Autowired
private ReceiptMarsService receiptMarsService;
@Autowired private ReceiptMarsService receiptMarsService;

@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")
})
@PostMapping(value = "/submit", consumes = { APPLICATION_JSON_VALUE, APPLICATION_XML_VALUE })
@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")
})
@PostMapping(
value = "/submit",
consumes = {APPLICATION_JSON_VALUE, APPLICATION_XML_VALUE})
public String performSubmissionToEna(
@RequestBody final String submissionPayload,
@RequestParam(value = "webinUserName") String webinUserName,
Expand All @@ -83,8 +77,9 @@ public String performSubmissionToEna(

final IsaJson isaJson = this.objectMapper.readValue(submissionPayload, IsaJson.class);
final List<Study> studies = getStudies(isaJson);
final Map<String, String> typeToBioSamplesAccessionMap = this.bioSamplesAccessionsParser
.parseIsaFileAndGetBioSampleAccessions(studies, new HashMap<>());
final Map<String, String> typeToBioSamplesAccessionMap =
this.bioSamplesAccessionsParser.parseIsaFileAndGetBioSampleAccessions(
studies, new HashMap<>());

final Document document = DocumentHelper.createDocument();
final Element webinElement = startPreparingWebinV2SubmissionXml(document);
Expand All @@ -93,8 +88,9 @@ public String performSubmissionToEna(
this.webinStudyXmlCreator.createENAStudySetElement(
webinElement, studies, randomSubmissionIdentifier);

final Map<Integer, String> experimentSequenceMap = this.webinExperimentXmlCreator.createENAExperimentSetElement(
typeToBioSamplesAccessionMap, webinElement, studies, randomSubmissionIdentifier);
final Map<Integer, String> experimentSequenceMap =
this.webinExperimentXmlCreator.createENAExperimentSetElement(
typeToBioSamplesAccessionMap, webinElement, studies, randomSubmissionIdentifier);

this.webinRunXmlCreator.createENARunSetElement(
webinElement, studies, experimentSequenceMap, randomSubmissionIdentifier);
Expand All @@ -106,8 +102,9 @@ public String performSubmissionToEna(

writer.write(document);

final String receiptXml = webinHttpSubmissionService.performWebinSubmission(
webinUserName, document.asXML(), webinPassword);
final String receiptXml =
webinHttpSubmissionService.performWebinSubmission(
webinUserName, document.asXML(), webinPassword);
final Receipt receiptJson = receiptConversionService.readReceiptXml(receiptXml);
final MarsReceipt marsReceipt = receiptMarsService.convertReceiptToMars(receiptJson, isaJson);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/** Elixir BioHackathon 2022 */
package com.elixir.biohackaton.ISAToSRA.sra.model;

import lombok.Builder;
Expand All @@ -6,11 +7,11 @@
@Builder
@Data
public class MarsReceipt {
private String targetRepository;
private String targetRepository;

private MarsReceiptError[] errors;
private MarsReceiptError[] errors;

private MarsReceiptInfo[] info;
private MarsReceiptInfo[] info;

private MarsReceiptAccession[] accessions;
private MarsReceiptAccession[] accessions;
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/** Elixir BioHackathon 2022 */
package com.elixir.biohackaton.ISAToSRA.sra.model;

import lombok.Builder;
Expand All @@ -6,7 +7,7 @@
@Builder
@Data
public class MarsReceiptAccession {
private String value;
private String value;

private MarsReceiptPath[] path;
private MarsReceiptPath[] path;
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
/** Elixir BioHackathon 2022 */
package com.elixir.biohackaton.ISAToSRA.sra.model;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;

import lombok.Builder;
import lombok.Data;

@Builder
@Data
public class MarsReceiptError {
private MarsReceiptErrorType type;
private MarsReceiptErrorType type;

private String message;
private String message;

@JsonInclude(Include.NON_NULL)
private MarsReceiptPath[] path;
@JsonInclude(Include.NON_NULL)
private MarsReceiptPath[] path;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/** Elixir BioHackathon 2022 */
package com.elixir.biohackaton.ISAToSRA.sra.model;

public enum MarsReceiptErrorType {
INVALID_METADATA,
INVALID_DATA;
INVALID_METADATA,
INVALID_DATA;
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
/** Elixir BioHackathon 2022 */
package com.elixir.biohackaton.ISAToSRA.sra.model;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;

import lombok.Builder;
import lombok.Data;

@Builder
@Data
public class MarsReceiptInfo {
@JsonInclude(Include.NON_NULL)
private String name;
@JsonInclude(Include.NON_NULL)
private String name;

private String message;
private String message;
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
/** Elixir BioHackathon 2022 */
package com.elixir.biohackaton.ISAToSRA.sra.model;

import java.util.ArrayList;
import java.util.List;
import lombok.Builder;
import lombok.Data;
import lombok.Builder.Default;

import java.util.List;
import java.util.ArrayList;
import lombok.Data;

@Builder
@Data
public class MarsReceiptMessage {
@Default
private List<MarsReceiptError> errors = new ArrayList<>();
@Default private List<MarsReceiptError> errors = new ArrayList<>();

@Default
private List<MarsReceiptInfo> info= new ArrayList<>();
@Default private List<MarsReceiptInfo> info = new ArrayList<>();
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
/** Elixir BioHackathon 2022 */
package com.elixir.biohackaton.ISAToSRA.sra.model;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;

import lombok.Builder;
import lombok.Data;

@Builder
@Data
public class MarsReceiptPath {
private String key;
private String key;

@JsonInclude(Include.NON_NULL)
private MarsReceiptWhere where;
@JsonInclude(Include.NON_NULL)
private MarsReceiptWhere where;
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/** Elixir BioHackathon 2022 */
package com.elixir.biohackaton.ISAToSRA.sra.model;

import lombok.Builder;
Expand All @@ -6,7 +7,7 @@
@Builder
@Data
public class MarsReceiptWhere {
private String key;
private String key;

private String value;
private String value;
}
Loading

0 comments on commit 52c02db

Please sign in to comment.