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