diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/datadiscovery/criteria/DataDiscoveryCriteriaImpl.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/datadiscovery/criteria/DataDiscoveryCriteriaImpl.java index 2a5ee6880076a9bf60f9324ecff02bec24e4cbcc..5fc5f7fce03a59430f36fa7e53c6e8f98d366044 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/datadiscovery/criteria/DataDiscoveryCriteriaImpl.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/datadiscovery/criteria/DataDiscoveryCriteriaImpl.java @@ -42,10 +42,18 @@ public class DataDiscoveryCriteriaImpl extends PaginationCriteriaImpl implements private List<String> facetFields; @NoDocumentMapping - private final String sortBy = null;// = "schema:name"; + private String sortBy = null;// = "schema:name"; + + public void setSortBy(String sortBy) { + this.sortBy = sortBy; + } @NoDocumentMapping - private final String sortOrder = null;// = SortOrder.ASC.name(); + private String sortOrder = null;// = SortOrder.ASC.name(); + + public void setSortOrder(String sortOrder) { + this.sortOrder = sortOrder; + } @Override public List<String> getCrops() { diff --git a/backend/src/main/java/fr/inra/urgi/gpds/repository/es/DataDiscoveryRepositoryImpl.java b/backend/src/main/java/fr/inra/urgi/gpds/repository/es/DataDiscoveryRepositoryImpl.java index 28449e9cbbfa01f39517602e1d6643b1683fccb7..e171ee28d4e5018f7818e7533186770cd7f9954a 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/repository/es/DataDiscoveryRepositoryImpl.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/repository/es/DataDiscoveryRepositoryImpl.java @@ -27,7 +27,6 @@ import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder; -import org.elasticsearch.search.builder.SearchSourceBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -115,8 +114,6 @@ public class DataDiscoveryRepositoryImpl implements DataDiscoveryRepository { // Prepare search request with query SearchRequest request = ESGenericFindRepository.prepareSearchRequest( query, criteria, documentMetadata, requestFactory); - request.source(new SearchSourceBuilder()); - request.source().query(query); // Build facet aggregations if (facetFields != null) { diff --git a/backend/src/test/java/fr/inra/urgi/gpds/repository/es/DataDiscoveryRepositoryTest.java b/backend/src/test/java/fr/inra/urgi/gpds/repository/es/DataDiscoveryRepositoryTest.java index 99628d2d39b9018c74ec47e5dbb53350b75da980..c91574bff41ac03a33a89ac8310770abb6f88e3d 100644 --- a/backend/src/test/java/fr/inra/urgi/gpds/repository/es/DataDiscoveryRepositoryTest.java +++ b/backend/src/test/java/fr/inra/urgi/gpds/repository/es/DataDiscoveryRepositoryTest.java @@ -7,6 +7,7 @@ import fr.inra.urgi.gpds.domain.datadiscovery.data.Facet; import fr.inra.urgi.gpds.domain.datadiscovery.data.FacetTerm; import fr.inra.urgi.gpds.domain.datadiscovery.response.DataDiscoveryResponse; import fr.inra.urgi.gpds.repository.es.setup.ESSetUp; +import org.elasticsearch.search.sort.SortOrder; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; @@ -134,6 +135,35 @@ class DataDiscoveryRepositoryTest { assertThat(result.getResult().getData()).isNotNull().isNotEmpty().extracting("url").isNotNull().isNotEmpty(); } + @Test + void should_Find_Documents_By_Page() { + DataDiscoveryCriteriaImpl criteria = new DataDiscoveryCriteriaImpl(); + criteria.setPage(0L); + criteria.setPageSize(2L); + criteria.setSortBy("@id"); + criteria.setSortOrder(SortOrder.DESC.toString()); + DataDiscoveryResponse result = repository.find(criteria); + assertThat(result.getResult().getData().size()).isEqualTo(2); + assertThat(result.getResult().getData().get(0).getUri()).isEqualTo("urn:germplasm/austro_kolben"); + assertThat(result.getResult().getData().get(1).getUri()).isEqualTo("urn:foo_study"); + + assertThat(result.getMetadata().getPagination().getCurrentPage()).isEqualTo(0L); + assertThat(result.getMetadata().getPagination().getTotalPages()).isEqualTo(5L); + assertThat(result.getMetadata().getPagination().getPageSize()).isEqualTo(2L); + assertThat(result.getMetadata().getPagination().getTotalCount()).isEqualTo(10L); + + criteria.setPage(1L); + criteria.setPageSize(3L); + result = repository.find(criteria); + assertThat(result.getResult().getData().size()).isEqualTo(3); + assertThat(result.getResult().getData().get(0).getUri()).isEqualTo("urn:foo2_germplasm"); + + assertThat(result.getMetadata().getPagination().getCurrentPage()).isEqualTo(1L); + assertThat(result.getMetadata().getPagination().getTotalPages()).isEqualTo(4L); + assertThat(result.getMetadata().getPagination().getPageSize()).isEqualTo(3L); + assertThat(result.getMetadata().getPagination().getTotalCount()).isEqualTo(10L); + } + @Test void should_Find_With_Facets() { DataDiscoveryCriteriaImpl criteria = new DataDiscoveryCriteriaImpl(); diff --git a/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/fixture/datadiscovery0.json b/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/fixture/datadiscovery0.json index 2412445fde1b10ee399fc6d74f4e50d92b53635a..58e6e0968583ba986fd109cff7e905b7bab457ee 100644 --- a/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/fixture/datadiscovery0.json +++ b/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/fixture/datadiscovery0.json @@ -30,6 +30,7 @@ } }, { + "@id": "urn:germplasm/austro_kolben", "schema:name": "AUSTRO KOLBEN", "germplasm": { "accession": ["AUSTRO KOLBEN"] @@ -67,4 +68,4 @@ { "schema:name": "FOO 10" } -] \ No newline at end of file +]