From 43dd5dcac77150bfb5dc59bac3f93a0e19ce0791 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Tue, 13 May 2014 13:28:23 +0000
Subject: [PATCH] SSDM-121: DTOs of APIs are extended to get all containers a
 data set is component of.

SVN: 31498
---
 .../generic/shared/api/v1/dto/DataSet.java    | 33 ++++++++++++-------
 .../shared/api/v1/dto/DataSetFetchOption.java |  2 +-
 2 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java
index 5218926dfd9..6989386d015 100644
--- a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java
+++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java
@@ -92,8 +92,8 @@ public final class DataSet implements Serializable, IIdHolder
 
         private List<DataSet> containedDataSets = Collections.emptyList();
 
-        private DataSet containerOrNull;
-
+        private List<DataSet> containerDataSets = Collections.emptyList();
+        
         private HashMap<String, String> properties = new HashMap<String, String>();
 
         private List<Metaproject> metaprojects = new ArrayList<Metaproject>();
@@ -237,14 +237,15 @@ public final class DataSet implements Serializable, IIdHolder
                     (null == containedDataSets) ? new ArrayList<DataSet>() : containedDataSets;
         }
 
-        public DataSet getContainerOrNull()
+        public List<DataSet> getContainerDataSets()
         {
-            return containerOrNull;
+            return containerDataSets;
         }
 
-        public void setContainerOrNull(DataSet containerOrNull)
+        public void setContainerDataSets(List<DataSet> containerDataSets)
         {
-            this.containerOrNull = containerOrNull;
+            this.containerDataSets =
+                    (null == containerDataSets) ? new ArrayList<DataSet>() : containerDataSets;
         }
 
         public boolean isLinkDataSet()
@@ -339,7 +340,7 @@ public final class DataSet implements Serializable, IIdHolder
 
     private List<DataSet> containedDataSets = Collections.emptyList();
 
-    private DataSet containerOrNull;
+    private List<DataSet> containerDataSets = Collections.emptyList();
 
     private EntityRegistrationDetails registrationDetails;
 
@@ -384,7 +385,7 @@ public final class DataSet implements Serializable, IIdHolder
                     "Unspecified entity registration details.");
             this.registrationDetails = initializer.getRegistrationDetails();
             this.containerDataSet = initializer.isContainerDataSet();
-            this.containerOrNull = initializer.getContainerOrNull();
+            this.containerDataSets = initializer.getContainerDataSets();
             this.containedDataSets = initializer.getContainedDataSets();
             this.linkDataSet = initializer.isLinkDataSet();
             this.externalDataSetCode = initializer.getExternalDataSetCode();
@@ -520,10 +521,20 @@ public final class DataSet implements Serializable, IIdHolder
 
     /**
      * @since 1.20
+     * @deprecated Use {@link #getContainerDataSets()}.
      */
+    @Deprecated
     public DataSet getContainerOrNull()
     {
-        return containerOrNull;
+        return containerDataSets.isEmpty() ? null : containerDataSets.get(0);
+    }
+    
+    /**
+     * @since 1.27
+     */
+    public List<DataSet> getContainerDataSets()
+    {
+        return containerDataSets;
     }
 
     public boolean isLinkDataSet()
@@ -692,9 +703,9 @@ public final class DataSet implements Serializable, IIdHolder
         this.containerDataSet = containerDataSet;
     }
 
-    private void setContainerOrNull(DataSet containerOrNull)
+    private void setContainerDataSets(List<DataSet> containerDataSets)
     {
-        this.containerOrNull = containerOrNull;
+        this.containerDataSets = containerDataSets;
     }
 
     private void setLinkDataSet(boolean linkDataSet)
diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSetFetchOption.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSetFetchOption.java
index dd2caa4cbb9..36b44a8d721 100644
--- a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSetFetchOption.java
+++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSetFetchOption.java
@@ -43,7 +43,7 @@ public enum DataSetFetchOption implements FetchOption
     PARENTS, 
     /** The children of a dataset. */
     CHILDREN, 
-    /** The container of a dataset, if it is a contained dataset. */
+    /** The containers of a dataset, if it is a contained dataset. */
     CONTAINER, 
     /** The contained datasets of a dataset, if it is a container. */
     CONTAINED,
-- 
GitLab