From 29919f981ac86fa6c57cd12e9d7ac7cfb1a2a461 Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Tue, 12 Oct 2021 15:41:20 +0300 Subject: [PATCH] Fix issue with recent activity sorting --- .../logic/managers/DashBoardManager.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java index a8b155744..739a5f80d 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java @@ -38,6 +38,7 @@ import org.springframework.stereotype.Component; import javax.transaction.Transactional; import java.io.IOException; +import java.lang.reflect.InvocationTargetException; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @@ -338,7 +339,7 @@ public class DashBoardManager { }/*);*/ //GK: Shuffle the deck otherwise we will summon the DMPodia when sorting with status - int pos = -1; + /*int pos = -1; for (int i = (recentActivityModels.size() / 2); i < recentActivityModels.size(); i++) { RecentActivityModel recentActivityModel = recentActivityModels.remove(i); while (pos < recentActivityModels.size()) { @@ -348,7 +349,21 @@ public class DashBoardManager { } } recentActivityModels.add(pos, recentActivityModel); - } + }*/ + //GK: No one likes to play shuffle with the recent activities. So just re-sort them based on how they have been sorted already + + recentActivityModels = recentActivityModels.stream().sorted((o1, o2) -> { + try { + String order = tableRequest.getOrderings().getFields().get(0).toCharArray()[0] + ""; + String field = tableRequest.getOrderings().getFields().get(0).substring(1); + field = field.equals("label") ? "title" : field; + field = field.substring(0, 1).toUpperCase() + field.substring(1); + return (order.equals("+") ? 1 : -1 ) * ((Comparable)o1.getClass().getMethod("get" + field).invoke(o1)).compareTo(o2.getClass().getMethod("get" + field).invoke(o2)); + } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { + logger.error(e.getLocalizedMessage(), e); + } + return 0; + }).collect(Collectors.toList()); //CompletableFuture.allOf(future).join(); // CompletableFuture.allOf(dmps, datasets).join();