From 4159c963dc000cbec253d38dcb26af93834a87c5 Mon Sep 17 00:00:00 2001 From: jdestin <jeremy.destin@inra.fr> Date: Mon, 11 Feb 2019 16:19:10 +0100 Subject: [PATCH 1/5] fix: Fix the documents display on result page when navigate to page. issue9. --- .../urgi/gpds/repository/es/DataDiscoveryRepositoryImpl.java | 5 +++++ 1 file changed, 5 insertions(+) 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 28449e9c..18015625 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 @@ -108,6 +108,8 @@ public class DataDiscoveryRepositoryImpl implements DataDiscoveryRepository { private SearchRequest prepareSearchRequest(DataDiscoveryCriteria criteria) { List<String> facetFields = criteria.getFacetFields(); String[] documentFieldsInFacets = criteriaFieldsToDocumentFields(facetFields); + int size = criteria.getPageSize().intValue(); + int from = criteria.getPage().intValue() * size; // Build search query (excluding document fields used in facets) QueryBuilder query = queryFactory.createQueryExcludingFields(criteria, documentFieldsInFacets); @@ -116,6 +118,9 @@ public class DataDiscoveryRepositoryImpl implements DataDiscoveryRepository { SearchRequest request = ESGenericFindRepository.prepareSearchRequest( query, criteria, documentMetadata, requestFactory); request.source(new SearchSourceBuilder()); + request.source() + .from(from) + .size(size); request.source().query(query); // Build facet aggregations -- GitLab From 4388f708079bf33f3f11cb46c84f07b830cb77fa Mon Sep 17 00:00:00 2001 From: jdestin <jeremy.destin@inra.fr> Date: Mon, 11 Feb 2019 17:15:01 +0100 Subject: [PATCH 2/5] test: Add some tests for the page navigation. issue9. --- .../es/DataDiscoveryRepositoryTest.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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 99628d2d..68dd554b 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 @@ -134,6 +134,23 @@ 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); + DataDiscoveryResponse result = repository.find(criteria); + assertThat(result.getResult().getData().size()).isEqualTo(2); + assertThat(result.getResult().getData().get(0).getIdentifier()).isEqualTo("foo_study"); + assertThat(result.getResult().getData().get(1).getIdentifier()).isEqualTo("foo_germplasm"); + + criteria.setPage(1L); + criteria.setPageSize(3L); + result = repository.find(criteria); + assertThat(result.getResult().getData().size()).isEqualTo(3); + assertThat(result.getResult().getData().get(0).getIdentifier()).isEqualTo("foo2_germplasm"); + } + @Test void should_Find_With_Facets() { DataDiscoveryCriteriaImpl criteria = new DataDiscoveryCriteriaImpl(); -- GitLab From 90dd2cf13a0536e051f13a9d00756867e289ea4e Mon Sep 17 00:00:00 2001 From: jdestin <jeremy.destin@inra.fr> Date: Tue, 12 Feb 2019 16:30:47 +0100 Subject: [PATCH 3/5] test: Add setter for sortBy and sortOrder. issue9. --- .../criteria/DataDiscoveryCriteriaImpl.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 2a5ee688..5fc5f7fc 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() { -- GitLab From afade94066227317187ac62f6c06d1e1b5ef625c Mon Sep 17 00:00:00 2001 From: jdestin <jeremy.destin@inra.fr> Date: Fri, 15 Feb 2019 09:35:58 +0100 Subject: [PATCH 4/5] fix: Add the sortBy("@id") on criteria for the test. Issue 9 --- .../urgi/gpds/repository/es/DataDiscoveryRepositoryTest.java | 2 ++ 1 file changed, 2 insertions(+) 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 68dd554b..b4201a94 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 @@ -139,6 +139,7 @@ class DataDiscoveryRepositoryTest { DataDiscoveryCriteriaImpl criteria = new DataDiscoveryCriteriaImpl(); criteria.setPage(0L); criteria.setPageSize(2L); + criteria.setSortBy("@id"); DataDiscoveryResponse result = repository.find(criteria); assertThat(result.getResult().getData().size()).isEqualTo(2); assertThat(result.getResult().getData().get(0).getIdentifier()).isEqualTo("foo_study"); @@ -146,6 +147,7 @@ class DataDiscoveryRepositoryTest { criteria.setPage(1L); criteria.setPageSize(3L); + criteria.setSortBy("@id"); result = repository.find(criteria); assertThat(result.getResult().getData().size()).isEqualTo(3); assertThat(result.getResult().getData().get(0).getIdentifier()).isEqualTo("foo2_germplasm"); -- GitLab From 5cde6068272f9ed659f27d9149b68fdf8baf4075 Mon Sep 17 00:00:00 2001 From: gcornut <guillaume.cornut@inra.fr> Date: Mon, 18 Feb 2019 18:35:40 +0100 Subject: [PATCH 5/5] fix: Data discovery query sort. Add test cases. --- .../es/DataDiscoveryRepositoryImpl.java | 8 -------- .../es/DataDiscoveryRepositoryTest.java | 19 +++++++++++++++---- .../es/setup/fixture/datadiscovery0.json | 3 ++- 3 files changed, 17 insertions(+), 13 deletions(-) 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 18015625..e171ee28 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; @@ -108,8 +107,6 @@ public class DataDiscoveryRepositoryImpl implements DataDiscoveryRepository { private SearchRequest prepareSearchRequest(DataDiscoveryCriteria criteria) { List<String> facetFields = criteria.getFacetFields(); String[] documentFieldsInFacets = criteriaFieldsToDocumentFields(facetFields); - int size = criteria.getPageSize().intValue(); - int from = criteria.getPage().intValue() * size; // Build search query (excluding document fields used in facets) QueryBuilder query = queryFactory.createQueryExcludingFields(criteria, documentFieldsInFacets); @@ -117,11 +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() - .from(from) - .size(size); - 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 b4201a94..c91574bf 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; @@ -140,17 +141,27 @@ class DataDiscoveryRepositoryTest { 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).getIdentifier()).isEqualTo("foo_study"); - assertThat(result.getResult().getData().get(1).getIdentifier()).isEqualTo("foo_germplasm"); + 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); - criteria.setSortBy("@id"); result = repository.find(criteria); assertThat(result.getResult().getData().size()).isEqualTo(3); - assertThat(result.getResult().getData().get(0).getIdentifier()).isEqualTo("foo2_germplasm"); + 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 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 2412445f..58e6e096 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 +] -- GitLab