From 2b34ff246896552688f5b6fe58a621b209f6e6de Mon Sep 17 00:00:00 2001
From: pkupczyk <pkupczyk>
Date: Wed, 5 Dec 2012 09:43:11 +0000
Subject: [PATCH] fix a bug where a metaproject owner was lost during
 registration from a dropbox

SVN: 27865
---
 .../ch/systemsx/cisd/openbis/generic/server/CommonServer.java | 2 +-
 .../ch/systemsx/cisd/openbis/generic/server/ETLService.java   | 2 +-
 .../openbis/generic/server/business/bo/IMetaprojectBO.java    | 2 +-
 .../openbis/generic/server/business/bo/MetaprojectBO.java     | 4 ++--
 .../systemsx/cisd/openbis/generic/server/ETLServiceTest.java  | 3 ++-
 5 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
index e5f348f411f..cc931ec7753 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
@@ -3995,7 +3995,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt
         Session session = getSession(sessionToken);
 
         IMetaprojectBO metaprojectBO = getBusinessObjectFactory().createMetaprojectBO(session);
-        metaprojectBO.define(registration);
+        metaprojectBO.define(session.tryGetPerson().getUserId(), registration);
         metaprojectBO.save();
 
         return MetaprojectTranslator.translate(metaprojectBO.getMetaproject());
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java
index 060e50aa8bd..ffdc4659f50 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java
@@ -1803,7 +1803,7 @@ public class ETLService extends AbstractCommonServer<IETLLIMSService> implements
         Metaproject registration = new Metaproject();
         registration.setName(metaproject.getName());
         registration.setDescription(metaproject.getDescription());
-        metaprojectBO.define(registration);
+        metaprojectBO.define(metaproject.getOwnerId(), registration);
 
         metaprojectBO.addSamples(metaproject.getSamples());
         metaprojectBO.addExperiments(metaproject.getExperiments());
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IMetaprojectBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IMetaprojectBO.java
index 95fad2b335b..8873c78d607 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IMetaprojectBO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IMetaprojectBO.java
@@ -37,7 +37,7 @@ public interface IMetaprojectBO extends IEntityBusinessObject
 
     void loadByMetaprojectId(IMetaprojectId metaprojectId);
 
-    void define(IMetaprojectRegistration registration);
+    void define(String ownerId, IMetaprojectRegistration registration);
 
     void update(IMetaprojectUpdates updates);
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MetaprojectBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MetaprojectBO.java
index 577153cdcd7..9cfbde1c9b1 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MetaprojectBO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MetaprojectBO.java
@@ -208,7 +208,7 @@ public class MetaprojectBO extends AbstractBusinessObject implements IMetaprojec
     }
 
     @Override
-    public void define(IMetaprojectRegistration registration)
+    public void define(String ownerId, IMetaprojectRegistration registration)
     {
         if (registration == null)
         {
@@ -222,7 +222,7 @@ public class MetaprojectBO extends AbstractBusinessObject implements IMetaprojec
         metaproject = new MetaprojectPE();
         metaproject.setName(registration.getName());
         metaproject.setDescription(registration.getDescription());
-        metaproject.setOwner(findPerson());
+        metaproject.setOwner(getPersonDAO().tryFindPersonByUserId(ownerId));
         metaproject.setPrivate(true);
 
         initChangedEntities();
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
index ffe7bd7adbf..af48d604111 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
@@ -1194,7 +1194,8 @@ public class ETLServiceTest extends AbstractServerTestCase
                     one(boFactory).createMetaprojectBO(userSession);
                     will(returnValue(metaprojectBO));
 
-                    one(metaprojectBO).define(with(any(IMetaprojectRegistration.class)));
+                    one(metaprojectBO).define(with(newMetaproject.getOwnerId()),
+                            with(any(IMetaprojectRegistration.class)));
                     one(metaprojectBO).addSamples(null);
                     one(metaprojectBO).addDataSets(null);
                     one(metaprojectBO).addExperiments(null);
-- 
GitLab