Skip to content

Commit fb9e8bb

Browse files
authored
Merge pull request #50 from EBISPOT/develop
Develop
2 parents a9be03c + 2319524 commit fb9e8bb

30 files changed

+594
-54
lines changed

src/main/java/uk/ac/ebi/spot/gwas/deposition/ingest/constants/IngestServiceConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public class IngestServiceConstants {
2424

2525
public static final String PARAM_SUBMISSIONID = "submissionId";
2626

27+
public static final String PARAM_STUDY_TAG = "study-tag";
28+
2729
public static final String API_DISEASE_TRAITS = "/reported-traits";
2830

2931
public static final String API_EFO_TRAITS = "/efo-traits";

src/main/java/uk/ac/ebi/spot/gwas/deposition/ingest/repository/AssociationRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@ public interface AssociationRepository extends MongoRepository<Association, Stri
1414
List<Association> findByIdIn(List<String> ids);
1515

1616
List<Association> findByStudyTagAndSubmissionId(String studyTag, String submissionId);
17+
18+
Page<Association> findBySubmissionIdAndStudyTag(String studyTag, String submissionId, Pageable pageable);
1719
}

src/main/java/uk/ac/ebi/spot/gwas/deposition/ingest/repository/SampleRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ public interface SampleRepository extends MongoRepository<Sample, String> {
1313

1414
List<Sample> findByIdIn(List<String> ids);
1515

16+
17+
Page<Sample> findBySubmissionIdAndStudyTag(String submissionId, String studyTag, Pageable page);
18+
1619
List<Sample> findByStudyTagAndSubmissionId(String studyTag, String submissionId);
1720

1821
Page<Sample> findByStudyTagAndSubmissionId(String studyTag, String submissionIdZ, Pageable pageable);
22+
1923
}

src/main/java/uk/ac/ebi/spot/gwas/deposition/ingest/repository/StudyRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ public interface StudyRepository extends MongoRepository<Study, String> {
1414
List<Study> findByIdIn(List<String> ids);
1515

1616
List<Study> findByAccession(String accession);
17+
1718
}

src/main/java/uk/ac/ebi/spot/gwas/deposition/ingest/repository/SubmissionRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ public interface SubmissionRepository extends MongoRepository<Submission, String
1818

1919
Page<Submission> findByArchived(boolean archived, Pageable pageable);
2020

21+
Page<Submission> findByOverallStatusAndArchived(String status, boolean archived, Pageable pageable);
22+
23+
Page<Submission> findByOverallStatusAndArchivedAndPublicationIdIsNotNull(String status, boolean archived, Pageable pageable);
24+
2125
long countByArchived(boolean archived);
2226

2327
List<Submission> findByOverallStatusAndArchived(String status, boolean archived);
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package uk.ac.ebi.spot.gwas.deposition.ingest.rest.controllers;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import org.springframework.beans.factory.annotation.Autowired;
5+
import org.springframework.data.domain.Page;
6+
import org.springframework.data.domain.Pageable;
7+
import org.springframework.data.web.PageableDefault;
8+
import org.springframework.data.web.PagedResourcesAssembler;
9+
import org.springframework.hateoas.MediaTypes;
10+
import org.springframework.hateoas.PagedResources;
11+
import org.springframework.hateoas.Resource;
12+
import org.springframework.http.HttpStatus;
13+
import org.springframework.web.bind.annotation.*;
14+
import uk.ac.ebi.spot.gwas.deposition.constants.GeneralCommon;
15+
import uk.ac.ebi.spot.gwas.deposition.domain.Association;
16+
import uk.ac.ebi.spot.gwas.deposition.dto.AssociationDto;
17+
import uk.ac.ebi.spot.gwas.deposition.ingest.constants.IngestServiceConstants;
18+
import uk.ac.ebi.spot.gwas.deposition.ingest.rest.dto.AssociationDtoAssembler;
19+
import uk.ac.ebi.spot.gwas.deposition.ingest.service.AssociationService;
20+
21+
@Slf4j
22+
@RestController
23+
@RequestMapping(value = GeneralCommon.API_V1 + IngestServiceConstants.API_SUBMISSIONS)
24+
public class AssociationController {
25+
26+
@Autowired
27+
private AssociationService associationService;
28+
29+
@Autowired
30+
private AssociationDtoAssembler associationAssembler;
31+
32+
/**
33+
* GET /v1/submissions/<submissionId>/associations&page=<page>&size=<size>
34+
*/
35+
@ResponseStatus(HttpStatus.OK)
36+
@GetMapping(value = "/{submissionId}/" + IngestServiceConstants.API_ASSOCIATIONS,
37+
produces = MediaTypes.HAL_JSON_VALUE)
38+
public PagedResources<Resource<AssociationDto>> getSubmissions(@PathVariable(IngestServiceConstants.PARAM_SUBMISSIONID) String submissionId,
39+
PagedResourcesAssembler<Association> assembler,
40+
@PageableDefault(size = 10, page = 0) Pageable pageable) {
41+
log.info("Request to retrieve association for submission: {} - {}", submissionId, pageable.getPageNumber());
42+
Page<Association> associations = associationService.getAssociationBySubmission(submissionId, pageable);
43+
return assembler.toResource(associations, associationAssembler);
44+
}
45+
46+
/**
47+
* GET /v1/submissions/<submissionId>/studyTag/associations&page=<page>&size=<size>
48+
*/
49+
@ResponseStatus(HttpStatus.OK)
50+
@GetMapping(value = "/{submissionId}/" + IngestServiceConstants.PARAM_STUDY_TAG + IngestServiceConstants.API_ASSOCIATIONS,
51+
produces = MediaTypes.HAL_JSON_VALUE)
52+
public PagedResources<Resource<AssociationDto>> getAssociations(@PathVariable(IngestServiceConstants.PARAM_SUBMISSIONID) String submissionId,
53+
@RequestParam(value = IngestServiceConstants.PARAM_STUDY_TAG,
54+
required = true) String studyTag,
55+
PagedResourcesAssembler<Association> assembler,
56+
@PageableDefault(size = 10, page = 0) Pageable pageable) {
57+
log.info("Request to retrieve association for submission: {} - {}", submissionId, pageable.getPageNumber());
58+
Page<Association> associations = associationService.getAssociationBySubmissionAndStudyTag(submissionId, studyTag, pageable);
59+
return assembler.toResource(associations, associationAssembler);
60+
}
61+
62+
63+
}

src/main/java/uk/ac/ebi/spot/gwas/deposition/ingest/rest/controllers/EnvelopeSubmissionsController.java

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@
33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
55
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.data.domain.Page;
7+
import org.springframework.data.domain.Pageable;
68
import org.springframework.http.HttpStatus;
79
import org.springframework.http.MediaType;
8-
import org.springframework.web.bind.annotation.GetMapping;
9-
import org.springframework.web.bind.annotation.RequestMapping;
10-
import org.springframework.web.bind.annotation.ResponseStatus;
11-
import org.springframework.web.bind.annotation.RestController;
10+
import org.springframework.web.bind.annotation.*;
1211
import uk.ac.ebi.spot.gwas.deposition.constants.GeneralCommon;
12+
import uk.ac.ebi.spot.gwas.deposition.domain.Publication;
1313
import uk.ac.ebi.spot.gwas.deposition.domain.Submission;
1414
import uk.ac.ebi.spot.gwas.deposition.dto.ingest.SubmissionEnvelopeDto;
1515
import uk.ac.ebi.spot.gwas.deposition.ingest.constants.IngestServiceConstants;
16+
import uk.ac.ebi.spot.gwas.deposition.ingest.service.PublicationService;
1617
import uk.ac.ebi.spot.gwas.deposition.ingest.service.SubmissionAssemblyService;
1718
import uk.ac.ebi.spot.gwas.deposition.ingest.service.SubmissionService;
1819

@@ -28,19 +29,31 @@ public class EnvelopeSubmissionsController {
2829
private SubmissionService submissionService;
2930

3031
@Autowired
31-
private SubmissionAssemblyService submissionAssemblyService;
32+
33+
PublicationService publicationService;
34+
35+
@Autowired
36+
private SubmissionAssemblyService submissionAssembler;
37+
38+
3239

3340
/**
3441
* GET /v1/submission-envelopes
3542
*/
3643
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
3744
@ResponseStatus(HttpStatus.OK)
38-
public List<SubmissionEnvelopeDto> getSubmissions() {
45+
public List<SubmissionEnvelopeDto> getSubmissions(@RequestParam(value = IngestServiceConstants.PARAM_PMID, required = false) String pmid) {
3946
log.info("Request to retrieve all submissions.");
40-
List<Submission> submissions = submissionService.getSubmissions(null, null);
41-
log.info("Found {} submissions.", submissions.size());
42-
List<SubmissionEnvelopeDto> submissionDtos = submissionAssemblyService.assembleEnvelopes(submissions);
43-
return submissionDtos;
47+
Publication publication = null;
48+
if(pmid != null) {
49+
publication = publicationService.getPublication(pmid);
50+
}
51+
Pageable wholePage = Pageable.unpaged();
52+
Page<Submission> submissions = submissionService.getSubmissions(publication != null ? publication.getId() : null, null, wholePage);
53+
log.info("Found {} submissions.", submissions.getTotalElements());
54+
return submissionAssembler.assembleEnvelopes(submissions);
55+
56+
4457
}
4558

4659
}

src/main/java/uk/ac/ebi/spot/gwas/deposition/ingest/rest/controllers/SampleControllerV2.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.springframework.beans.factory.annotation.Autowired;
55
import org.springframework.data.domain.Page;
66
import org.springframework.data.domain.Pageable;
7+
import org.springframework.data.web.PageableDefault;
78
import org.springframework.data.web.PagedResourcesAssembler;
89
import org.springframework.hateoas.MediaTypes;
910
import org.springframework.hateoas.PagedResources;
@@ -16,7 +17,6 @@
1617
import uk.ac.ebi.spot.gwas.deposition.ingest.constants.IngestServiceConstants;
1718
import uk.ac.ebi.spot.gwas.deposition.ingest.rest.dto.SampleAssemblerV2;
1819
import uk.ac.ebi.spot.gwas.deposition.ingest.service.SampleService;
19-
import uk.ac.ebi.spot.gwas.deposition.ingest.service.StudyService;
2020

2121
@Slf4j
2222
@RestController
@@ -36,9 +36,28 @@ public class SampleControllerV2 {
3636
@GetMapping(value = "/{studyAccessionId}/" + IngestServiceConstants.API_SAMPLES, produces = MediaTypes.HAL_JSON_VALUE)
3737
public PagedResources<Resource<SampleDto>> getSubmissions(@PathVariable("studyAccessionId") String studyAccessionId,
3838
PagedResourcesAssembler<Sample> assembler,
39-
Pageable pageable) {
39+
@PageableDefault(size = 10, page = 0) Pageable pageable) {
40+
4041
log.info("Request to retrieve sample for study: {} - {}", studyAccessionId, pageable.getPageNumber());
4142
Page<Sample> samples = sampleService.getSamplesByAccessionId(studyAccessionId, pageable);
4243
return assembler.toResource(samples, sampleAssemblerV2);
4344
}
45+
46+
/**
47+
* GET /v1/submissions/<submissionId>/studyTag/associations&page=<page>&size=<size>
48+
*/
49+
@ResponseStatus(HttpStatus.OK)
50+
@GetMapping(value = "/{submissionId}/" + IngestServiceConstants.PARAM_STUDY_TAG + IngestServiceConstants.API_SAMPLES,
51+
produces = MediaTypes.HAL_JSON_VALUE)
52+
public PagedResources<Resource<SampleDto>> getSamples(@PathVariable(IngestServiceConstants.PARAM_SUBMISSIONID) String submissionId,
53+
@RequestParam(value = IngestServiceConstants.PARAM_STUDY_TAG,
54+
required = true) String studyTag,
55+
PagedResourcesAssembler<Sample> assembler,
56+
@PageableDefault(size = 10, page = 0) Pageable pageable) {
57+
log.info("Request to retrieve association for submission: {} - {}", submissionId, pageable.getPageNumber());
58+
Page<Sample> samples = sampleService.getSampleBySubmissionAndStudyTag(submissionId, studyTag, pageable);
59+
return assembler.toResource(samples, sampleAssemblerV2);
60+
}
61+
62+
4463
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package uk.ac.ebi.spot.gwas.deposition.ingest.rest.controllers;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import org.springframework.beans.factory.annotation.Autowired;
5+
import org.springframework.data.domain.Page;
6+
import org.springframework.data.domain.Pageable;
7+
import org.springframework.data.web.PagedResourcesAssembler;
8+
import org.springframework.hateoas.MediaTypes;
9+
import org.springframework.hateoas.PagedResources;
10+
import org.springframework.hateoas.Resource;
11+
import org.springframework.http.HttpStatus;
12+
import org.springframework.web.bind.annotation.*;
13+
import uk.ac.ebi.spot.gwas.deposition.constants.GeneralCommon;
14+
import uk.ac.ebi.spot.gwas.deposition.domain.Sample;
15+
import uk.ac.ebi.spot.gwas.deposition.dto.SampleDto;
16+
import uk.ac.ebi.spot.gwas.deposition.ingest.constants.IngestServiceConstants;
17+
import uk.ac.ebi.spot.gwas.deposition.ingest.rest.dto.SampleAssemblerV2;
18+
import uk.ac.ebi.spot.gwas.deposition.ingest.service.SampleService;
19+
20+
@Slf4j
21+
@RestController
22+
@RequestMapping(value = GeneralCommon.API_V1 + IngestServiceConstants.API_SUBMISSIONS)
23+
public class SamplesController {
24+
25+
@Autowired
26+
private SampleService sampleService;
27+
28+
@Autowired
29+
private SampleAssemblerV2 sampleAssembler;
30+
31+
/**
32+
* GET /v1/submissions/submissionId/<submissionId>/samples&page=<page>
33+
*/
34+
@ResponseStatus(HttpStatus.OK)
35+
@GetMapping(value = "/{submissionId}/" + IngestServiceConstants.API_SAMPLES,
36+
produces = MediaTypes.HAL_JSON_VALUE)
37+
public PagedResources<Resource<SampleDto>> getSubmissions(@PathVariable(IngestServiceConstants.PARAM_SUBMISSIONID) String submissionId,
38+
PagedResourcesAssembler<Sample> assembler,
39+
Pageable pageable) {
40+
log.info("Request to retrieve association for submission: {} - {}", submissionId, pageable.getPageNumber());
41+
Page<Sample> samples = sampleService.getSampleBySubmission(submissionId, pageable);
42+
return assembler.toResource(samples, sampleAssembler);
43+
}
44+
45+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package uk.ac.ebi.spot.gwas.deposition.ingest.rest.controllers;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import org.springframework.beans.factory.annotation.Autowired;
5+
import org.springframework.data.domain.Page;
6+
import org.springframework.data.domain.Pageable;
7+
import org.springframework.data.web.PageableDefault;
8+
import org.springframework.data.web.PagedResourcesAssembler;
9+
import org.springframework.hateoas.MediaTypes;
10+
import org.springframework.hateoas.PagedResources;
11+
import org.springframework.hateoas.Resource;
12+
import org.springframework.http.HttpStatus;
13+
import org.springframework.web.bind.annotation.*;
14+
import uk.ac.ebi.spot.gwas.deposition.constants.GeneralCommon;
15+
import uk.ac.ebi.spot.gwas.deposition.domain.Study;
16+
import uk.ac.ebi.spot.gwas.deposition.dto.StudyDto;
17+
import uk.ac.ebi.spot.gwas.deposition.ingest.constants.IngestServiceConstants;
18+
import uk.ac.ebi.spot.gwas.deposition.ingest.rest.dto.StudyDtoAssembler;
19+
import uk.ac.ebi.spot.gwas.deposition.ingest.service.StudyService;
20+
21+
@Slf4j
22+
@RestController
23+
@RequestMapping(value = GeneralCommon.API_V1 + IngestServiceConstants.API_SUBMISSIONS)
24+
public class StudiesController {
25+
26+
@Autowired
27+
private StudyService studyService;
28+
29+
@Autowired
30+
private StudyDtoAssembler studyAssembler;
31+
32+
/**
33+
* GET /v1/submissions/submissionId/<submissionId>/studies&page=<page>
34+
*/
35+
@ResponseStatus(HttpStatus.OK)
36+
@GetMapping(value = "/{submissionId}/" + IngestServiceConstants.API_STUDIES, produces = MediaTypes.HAL_JSON_VALUE)
37+
public PagedResources<Resource<StudyDto>> getSubmissions(@PathVariable(IngestServiceConstants.PARAM_SUBMISSIONID) String submissionId,
38+
PagedResourcesAssembler<Study> assembler,
39+
@PageableDefault(size = 10, page = 0) Pageable pageable) {
40+
log.info("Request to retrieve studies for submission: {} - {}", submissionId, pageable.getPageNumber());
41+
Page<Study> studies = studyService.getStudiesBySubmission(submissionId, pageable);
42+
return assembler.toResource(studies, studyAssembler);
43+
}
44+
45+
46+
47+
48+
}

0 commit comments

Comments
 (0)