From abe64fbe11d4b24ce47aa14e5de30b64cac4f3f6 Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@nibio.no>
Date: Fri, 9 Aug 2024 09:19:59 +0200
Subject: [PATCH] Remove duplicate observations in result list

---
 .../no/nibio/vips/logic/service/ObservationService.java     | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/main/java/no/nibio/vips/logic/service/ObservationService.java b/src/main/java/no/nibio/vips/logic/service/ObservationService.java
index 57382908..daf35925 100755
--- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java
+++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java
@@ -803,8 +803,10 @@ public class ObservationService {
             LOGGER.info("Return {} masked public observations for unregistered user", retVal.size());
             return sortObservationsByDateAndId(retVal);
         }
-        // Else: This is a registered user without special privileges. Show public observations + user's own
-        retVal.addAll(observationBean.getObservationsForUser(user));
+         // Else: This is a registered user without special privileges. Show public observations + user's own
+        // Making sure we don't add duplicates
+        Set<Integer> obsIds = retVal.stream().map(o->o.getObservationId()).collect(Collectors.toSet());
+        retVal.addAll(observationBean.getObservationsForUser(user).stream().filter(o->!obsIds.contains(o.getObservationId())).collect(Collectors.toList()));
         LOGGER.info("Return {} masked public observations and user's own observations for registered user {}", retVal.size(), user.getUserId());
         return sortObservationsByDateAndId(retVal);
     }
-- 
GitLab