From 07c6924e4d6f97f97ba0eeff28bb10055be0989d Mon Sep 17 00:00:00 2001
From: kaloyane <kaloyane>
Date: Thu, 15 Dec 2011 11:30:42 +0000
Subject: [PATCH] fixed [LMS-2690] by removing logic that merges EntityVisits
 from DisplaySettings(web UI) and PersonDAO (database) before saving

SVN: 23998
---
 .../generic/server/AbstractServer.java        | 25 ++++++-------------
 .../generic/server/CommonServerTest.java      |  8 +++---
 2 files changed, 12 insertions(+), 21 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java
index 17e2a1448aa..323f25e15e2 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java
@@ -518,11 +518,15 @@ public abstract class AbstractServer<T> extends AbstractServiceWithLogger<T> imp
             PersonPE person = session.tryGetPerson();
             if (person != null)
             {
-                List<EntityVisit> visits = joinVisits(displaySettings, person);
-                sortAndRemoveMultipleVisits(visits);
-                for (int i = visits.size() - 1; i >= maxEntityVisits; i--)
+                if (displaySettings != null)
                 {
-                    visits.remove(i);
+                    @SuppressWarnings("deprecation")
+                    List<EntityVisit> visits = displaySettings.getVisits();
+                    sortAndRemoveMultipleVisits(visits);
+                    for (int i = visits.size() - 1; i >= maxEntityVisits; i--)
+                    {
+                        visits.remove(i);
+                    }
                 }
                 person.setDisplaySettings(displaySettings);
                 getDAOFactory().getPersonDAO().updatePerson(person);
@@ -549,19 +553,6 @@ public abstract class AbstractServer<T> extends AbstractServiceWithLogger<T> imp
         }
     }
 
-    @SuppressWarnings("deprecation")
-    private List<EntityVisit> joinVisits(DisplaySettings displaySettings, PersonPE person)
-    {
-        List<EntityVisit> personVisits = person.getDisplaySettings().getVisits();
-        if (displaySettings == null)
-        {
-            return personVisits;
-        }
-        List<EntityVisit> visits = displaySettings.getVisits();
-        visits.addAll(personVisits);
-        return visits;
-    }
-
     public DisplaySettings getDefaultDisplaySettings(String sessionToken)
     {
         PersonPE systemUser =
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java
index 536fef8edf9..f48fb81472a 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java
@@ -1513,9 +1513,8 @@ public final class CommonServerTest extends AbstractServerTestCase
     {
         final PersonPE person = new PersonPE();
         EntityVisit v0 = visit(EntityKind.MATERIAL, 0);
-        EntityVisit v1 = visit(EntityKind.EXPERIMENT, 1);
-        EntityVisit v2 = visit(EntityKind.SAMPLE, 2);
-        DisplaySettings currentDisplaySettings = displaySettingsWithVisits(v0, v1, v2);
+        EntityVisit v1 = visit(EntityKind.SAMPLE, 2);
+        DisplaySettings currentDisplaySettings = displaySettingsWithVisits(v0, v1);
         person.setDisplaySettings(currentDisplaySettings);
         context.checking(new Expectations()
             {
@@ -1528,9 +1527,10 @@ public final class CommonServerTest extends AbstractServerTestCase
                     one(personDAO).updatePerson(person);
                 }
             });
+        EntityVisit v2 = visit(EntityKind.EXPERIMENT, 1);
         EntityVisit v3 = visit(EntityKind.DATA_SET, 3);
         EntityVisit v4 = visit(EntityKind.SAMPLE, 2);
-        DisplaySettings displaySettings = displaySettingsWithVisits(v3, v4);
+        DisplaySettings displaySettings = displaySettingsWithVisits(v0, v1, v2, v3, v4);
 
         createServer().saveDisplaySettings(SESSION_TOKEN, displaySettings, 3);
 
-- 
GitLab