From ad3278b6c26c58b6b1948032221feae739fae21b Mon Sep 17 00:00:00 2001
From: juanf <juanf@ethz.ch>
Date: Fri, 30 Jun 2023 14:27:52 +0200
Subject: [PATCH] SSDM-13421: reuseHomeSpace , default to true to get right
 behaviour by default

---
 .../task/UserManagementMaintenanceTask.java      |  1 +
 .../openbis/generic/server/task/UserManager.java | 16 +++++++++++++---
 .../generic/server/task/UserManagerConfig.java   | 11 +++++++++++
 3 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagementMaintenanceTask.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagementMaintenanceTask.java
index 5f803c85350..1d88eb53373 100644
--- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagementMaintenanceTask.java
+++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagementMaintenanceTask.java
@@ -267,6 +267,7 @@ public class UserManagementMaintenanceTask extends AbstractGroupMaintenanceTask
     private UserManager createUserManager(UserManagerConfig config, Log4jSimpleLogger logger, UserManagerReport report)
     {
         UserManager userManager = createUserManager(logger, report);
+        userManager.setReuseHomeSpace(config.getReuseHomeSpace());
         userManager.setGlobalSpaces(config.getGlobalSpaces());
         userManager.setInstanceAdmins(config.getInstanceAdmins());
         try
diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManager.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManager.java
index f99ebb49d70..9b7ee1a8a88 100644
--- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManager.java
+++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManager.java
@@ -146,6 +146,8 @@ public class UserManager
 
     private boolean deactivateUnknownUsers;
 
+    private boolean reuseHomeSpace;
+
     public UserManager(IAuthenticationService authenticationService, IApplicationServerInternalApi service,
             File shareIdsMappingFileOrNull, ISimpleLogger logger, UserManagerReport report)
     {
@@ -1023,10 +1025,13 @@ public class UserManager
     private SpacePermId createUserSpace(Context context, String groupCode, String userId)
     {
         String userSpaceCode = createCommonSpaceCode(groupCode, userId.toUpperCase());
-        int n = context.getCurrentState().getNumberOfSpacesStartingWith(userSpaceCode);
-        if (n > 0)
+        if(!reuseHomeSpace)
         {
-            userSpaceCode += "_" + (n + 1);
+            int n = context.getCurrentState().getNumberOfSpacesStartingWith(userSpaceCode);
+            if (n > 0)
+            {
+                userSpaceCode += "_" + (n + 1);
+            }
         }
         return createSpace(context, userSpaceCode);
     }
@@ -1128,6 +1133,11 @@ public class UserManager
         context.getReport().assignRoleTo(groupId, role, spaceId);
     }
 
+    public void setReuseHomeSpace(boolean reuseHomeSpace)
+    {
+        this.reuseHomeSpace = reuseHomeSpace;
+    }
+
     private static final class CurrentState
     {
         private Map<String, AuthorizationGroup> groupsByCode = new TreeMap<>();
diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagerConfig.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagerConfig.java
index acfb0d05c28..fd268895148 100644
--- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagerConfig.java
+++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/task/UserManagerConfig.java
@@ -24,6 +24,8 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.roleassignment.Role;
 
 class UserManagerConfig
 {
+    private Boolean reuseHomeSpace = true;
+
     private List<String> globalSpaces = new ArrayList<>();
 
     private Map<Role, List<String>> commonSpaces = new HashMap<>();
@@ -96,4 +98,13 @@ class UserManagerConfig
         this.instanceAdmins = instanceAdmins;
     }
 
+    public boolean getReuseHomeSpace()
+    {
+        return reuseHomeSpace;
+    }
+
+    public void setReuseHomeSpace(boolean reuseHomeSpace)
+    {
+        this.reuseHomeSpace = reuseHomeSpace;
+    }
 }
\ No newline at end of file
-- 
GitLab