From d9f18188c3ef264f14c0a83c32f5fea9e3493894 Mon Sep 17 00:00:00 2001
From: Lars Johansson <lars.johansson@ess.eu>
Date: Wed, 23 Nov 2022 10:18:47 +0100
Subject: [PATCH] Fix sorting for history endpoints

Set sorting to default to timestamp and ascending.
---
 .../java/org/openepics/names/rest/api/v1/INames.java | 10 ++++++----
 .../org/openepics/names/rest/api/v1/IStructures.java | 10 ++++++----
 .../org/openepics/names/service/NamesService.java    | 12 +-----------
 .../openepics/names/service/StructuresService.java   |  9 ---------
 4 files changed, 13 insertions(+), 28 deletions(-)

diff --git a/src/main/java/org/openepics/names/rest/api/v1/INames.java b/src/main/java/org/openepics/names/rest/api/v1/INames.java
index 99f43f27..735694b9 100644
--- a/src/main/java/org/openepics/names/rest/api/v1/INames.java
+++ b/src/main/java/org/openepics/names/rest/api/v1/INames.java
@@ -119,8 +119,10 @@ public interface INames {
            /upload and /download endpoints handle Excel files
      */
 
-    public static final String DEFAULT_PAGE       = "0";
-    public static final String DEFAULT_PAGE_SIZE  = "100";
+    public static final String DEFAULT_PAGE            = "0";
+    public static final String DEFAULT_PAGE_SIZE       = "100";
+    public static final String DEFAULT_SORT_FIELD_WHEN = "WHEN";
+    public static final String DEFAULT_SORT_ORDER_ASC  = "true";
 
     /**
      * Create names by list of name element commands.
@@ -600,8 +602,8 @@ public interface INames {
             produces = {"application/json"})
     public ResponsePageNameElements readNamesHistory(
             @Parameter(in = ParameterIn.PATH,  description = "search by uuid") @PathVariable("uuid") String uuid,
-            @Parameter(in = ParameterIn.QUERY, description = "order by field") @RequestParam(required = false) FieldName orderBy,
-            @Parameter(in = ParameterIn.QUERY, description = "sort order, ascending or descending") @RequestParam(required = false) Boolean isAsc,
+            @Parameter(in = ParameterIn.QUERY, description = "order by field") @RequestParam(required = false, defaultValue = DEFAULT_SORT_FIELD_WHEN) FieldName orderBy,
+            @Parameter(in = ParameterIn.QUERY, description = "sort order, ascending or descending") @RequestParam(required = false, defaultValue = DEFAULT_SORT_ORDER_ASC) Boolean isAsc,
             @Parameter(in = ParameterIn.QUERY, description = "page starting from 0, offset") @RequestParam(required = false, defaultValue = DEFAULT_PAGE) Integer page,
             @Parameter(in = ParameterIn.QUERY, description = "page size, limit") @RequestParam(required = false, defaultValue = DEFAULT_PAGE_SIZE) Integer pageSize);
 
diff --git a/src/main/java/org/openepics/names/rest/api/v1/IStructures.java b/src/main/java/org/openepics/names/rest/api/v1/IStructures.java
index 62914b8e..3971f3ac 100644
--- a/src/main/java/org/openepics/names/rest/api/v1/IStructures.java
+++ b/src/main/java/org/openepics/names/rest/api/v1/IStructures.java
@@ -134,8 +134,10 @@ public interface IStructures {
            /upload and /download endpoints handle Excel files
      */
 
-    public static final String DEFAULT_PAGE       = "0";
-    public static final String DEFAULT_PAGE_SIZE  = "100";
+    public static final String DEFAULT_PAGE            = "0";
+    public static final String DEFAULT_PAGE_SIZE       = "100";
+    public static final String DEFAULT_SORT_FIELD_WHEN = "WHEN";
+    public static final String DEFAULT_SORT_ORDER_ASC  = "true";
 
     /**
      * Create (propose) structures by list of structure element commands.
@@ -653,8 +655,8 @@ public interface IStructures {
     public ResponsePageStructureElements readStructuresHistory(
             @Parameter(in = ParameterIn.PATH,  description = "search by uuid") @PathVariable("uuid") String uuid,
             @Parameter(in = ParameterIn.QUERY, description = "search by type of structure") @RequestParam(required = false) Type type,
-            @Parameter(in = ParameterIn.QUERY, description = "order by field") @RequestParam(required = false) FieldStructure orderBy,
-            @Parameter(in = ParameterIn.QUERY, description = "sort order, ascending or descending") @RequestParam(required = false) Boolean isAsc,
+            @Parameter(in = ParameterIn.QUERY, description = "order by field") @RequestParam(required = false, defaultValue = DEFAULT_SORT_FIELD_WHEN) FieldStructure orderBy,
+            @Parameter(in = ParameterIn.QUERY, description = "sort order, ascending or descending") @RequestParam(required = false, defaultValue = DEFAULT_SORT_ORDER_ASC) Boolean isAsc,
             @Parameter(in = ParameterIn.QUERY, description = "page starting from 0, offset") @RequestParam(required = false, defaultValue = DEFAULT_PAGE) Integer page,
             @Parameter(in = ParameterIn.QUERY, description = "page size, limit") @RequestParam(required = false, defaultValue = DEFAULT_PAGE_SIZE) Integer pageSize);
 
diff --git a/src/main/java/org/openepics/names/service/NamesService.java b/src/main/java/org/openepics/names/service/NamesService.java
index 122be991..ce7e4eab 100644
--- a/src/main/java/org/openepics/names/service/NamesService.java
+++ b/src/main/java/org/openepics/names/service/NamesService.java
@@ -18,8 +18,6 @@
 
 package org.openepics.names.service;
 
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 import java.util.UUID;
@@ -355,17 +353,9 @@ public class NamesService {
         ValidateUtil.validateInputUuid(uuid);
 
         // do
-        ResponsePageNameElements response = readNames(null,
+        return readNames(null,
                 uuid, null, null, null, null, null, null,
                 Boolean.TRUE, orderBy, isAsc, offset, limit);
-        Collections.sort(response.getList(), new Comparator<NameElement>() {
-            @Override
-            public int compare(NameElement e1, NameElement e2) {
-                return e1.getWhen().compareTo(e2.getWhen());
-            }
-        });
-
-        return response;
     }
 
     // ----------------------------------------------------------------------------------------------------
diff --git a/src/main/java/org/openepics/names/service/StructuresService.java b/src/main/java/org/openepics/names/service/StructuresService.java
index 6c18ecb2..67d6670d 100644
--- a/src/main/java/org/openepics/names/service/StructuresService.java
+++ b/src/main/java/org/openepics/names/service/StructuresService.java
@@ -18,8 +18,6 @@
 
 package org.openepics.names.service;
 
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 import java.util.UUID;
@@ -618,13 +616,6 @@ public class StructuresService {
 
         }
 
-        Collections.sort(response.getList(), new Comparator<StructureElement>() {
-            @Override
-            public int compare(StructureElement e1, StructureElement e2) {
-                return e1.getWhen().compareTo(e2.getWhen());
-            }
-        });
-
         return response;
     }
 
-- 
GitLab