From c9a1e567965ac98c558cf6444a8e55bc98770a1e Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Wed, 1 Dec 2010 10:02:06 +0000
Subject: [PATCH] changed definition of top sample to allow registration of
 data set for a sample that has more than one parent

SVN: 18953
---
 .../cisd/openbis/generic/shared/dto/SamplePE.java      | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SamplePE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SamplePE.java
index 001924f26f5..4936235a46c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SamplePE.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SamplePE.java
@@ -385,12 +385,14 @@ public class SamplePE extends AttachmentHolderPE implements IIdAndCodeHolder, Co
     @Transient
     public SamplePE getTop()
     {
-        SamplePE parentPE = getGeneratedFrom();
-        if (parentPE != null)
+        // traverse through parent relationship graph and stops on first sample that doesn't
+        // have parents or has more than one parent
+        final List<SamplePE> parents = getParents();
+        if (parents.size() == 1)
         {
-            return parentPE.getTop() == null ? parentPE : parentPE.getTop();
+            return parents.get(0).getTop();
         }
-        return null;
+        return this;
     }
 
     @Transient
-- 
GitLab