From b27ebd0311e1e6f9bf99a24d0723819b6849e0ce Mon Sep 17 00:00:00 2001
From: kaloyane <kaloyane>
Date: Tue, 10 May 2011 15:46:33 +0000
Subject: [PATCH] [LMS-2104] moved the IDataSetLocation down the hierarchy from
 ExternalData to DataSet. dependencies adjusted accordingly.

SVN: 21215
---
 .../path/PathInfoDatabaseFeedingTask.java          |  6 +++++-
 .../TemplateBasedDataSetResourceResolver.java      |  3 +--
 .../shared/HierarchicalContentProvider.java        | 11 +++++++++--
 .../path/PathInfoDatabaseFeedingTaskTest.java      | 10 +++++-----
 .../shared/HierarchicalContentProviderTest.java    |  4 ++--
 .../openbis/generic/shared/basic/dto/DataSet.java  | 13 ++++++++++++-
 .../generic/shared/basic/dto/ExternalData.java     | 14 +-------------
 .../shared/basic/dto/builders/DataSetBuilder.java  |  2 +-
 8 files changed, 36 insertions(+), 27 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTask.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTask.java
index 934a232ebfe..823bebe6932 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTask.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTask.java
@@ -135,7 +135,11 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis
                         operationLog.error("Data set " + dataSetCode + " unknown by openBIS.");
                         return;
                     }
-                    feedPathInfoDatabase(dataSet);
+                    if (false == dataSet.isContainerDataSet())
+                    {
+                        IDatasetLocation dataSetLocation = dataSet.tryGetAsDataSet();
+                        feedPathInfoDatabase(dataSetLocation);
+                    }
                 }
             };
     }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/TemplateBasedDataSetResourceResolver.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/TemplateBasedDataSetResourceResolver.java
index 8e2e3c448cf..edcd6b9e717 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/TemplateBasedDataSetResourceResolver.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/resolver/TemplateBasedDataSetResourceResolver.java
@@ -186,8 +186,7 @@ public class TemplateBasedDataSetResourceResolver implements IFtpPathResolver,
 
         IHierarchicalContentNodeFilter fileFilter = getFileFilter(evaluationResult.dataSet);
         IHierarchicalContentProvider provider = ServiceProvider.getHierarchicalContentProvider();
-        IHierarchicalContent content =
-                provider.asContent(evaluationResult.dataSet.getDataSetCode());
+        IHierarchicalContent content = provider.asContent(evaluationResult.dataSet.getCode());
         IHierarchicalContentNode contentNode = content.getNode(relativePath);
         if (fileFilter.accept(contentNode))
         {
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java
index 1fa4969d7cb..cee6bfab074 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java
@@ -23,6 +23,7 @@ import ch.systemsx.cisd.common.io.IHierarchicalContent;
 import ch.systemsx.cisd.common.io.IHierarchicalContentFactory;
 import ch.systemsx.cisd.common.utilities.IDelegatedAction;
 import ch.systemsx.cisd.openbis.dss.generic.shared.content.PathInfoDBAwareHierarchicalContentFactory;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSet;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation;
 
@@ -67,11 +68,17 @@ public class HierarchicalContentProvider implements IHierarchicalContentProvider
     public IHierarchicalContent asContent(String dataSetCode)
     {
         // this is temporary implementation - it shouldn't access openBIS after LMS-2172 is done
-        ExternalData dataSet = openbisService.tryGetDataSet(dataSetCode);
-        if (dataSet == null)
+        ExternalData externalData = openbisService.tryGetDataSet(dataSetCode);
+        if (externalData == null)
         {
             throw new IllegalArgumentException("Unknown data set " + dataSetCode);
         }
+        // this is a temporary fix
+        DataSet dataSet = externalData.tryGetAsDataSet();
+        if (dataSet == null)
+        {
+            throw new IllegalArgumentException("Not implemented for container data sets.");
+        }
         return asContent(dataSet);
     }
 
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTaskTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTaskTest.java
index 75d114cc475..3ed38aa1031 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTaskTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTaskTest.java
@@ -36,7 +36,7 @@ import ch.systemsx.cisd.common.io.IHierarchicalContentNode;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IDataSetDirectoryProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IShareIdManager;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSet;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.DataSetBuilder;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO;
@@ -124,7 +124,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase
     @Test
     public void testPostRegistrationHappyCase()
     {
-        final ExternalData dataSet =
+        final DataSet dataSet =
                 new DataSetBuilder().code(DATA_SET_CODE).location("abc").getDataSet();
         context.checking(new Expectations()
             {
@@ -142,7 +142,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase
     @Test
     public void testPostRegistrationFailingCase()
     {
-        final ExternalData dataSet =
+        final DataSet dataSet =
                 new DataSetBuilder().code(DATA_SET_CODE).location("abc").getDataSet();
         context.checking(new Expectations()
             {
@@ -163,7 +163,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase
             {
                 {
                     one(service).tryGetDataSet(DATA_SET_CODE);
-                    ExternalData dataSet =
+                    DataSet dataSet =
                             new DataSetBuilder().code(DATA_SET_CODE).location("abc").getDataSet();
                     will(returnValue(dataSet));
 
@@ -186,7 +186,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase
             {
                 {
                     one(service).tryGetDataSet(DATA_SET_CODE);
-                    ExternalData dataSet =
+                    DataSet dataSet =
                             new DataSetBuilder().code(DATA_SET_CODE).location("abc").getDataSet();
                     will(returnValue(dataSet));
 
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProviderTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProviderTest.java
index 79f78feafe7..eb9867b46d1 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProviderTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProviderTest.java
@@ -28,7 +28,7 @@ import org.testng.annotations.Test;
 import ch.systemsx.cisd.common.io.IHierarchicalContentFactory;
 import ch.systemsx.cisd.common.test.RecordingMatcher;
 import ch.systemsx.cisd.common.utilities.IDelegatedAction;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSet;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation;
 
 /**
@@ -84,7 +84,7 @@ public class HierarchicalContentProviderTest extends AssertJUnit
     {
         final String dataSetCode = "DS_CODE";
 
-        final ExternalData data = new ExternalData();
+        final DataSet data = new DataSet();
         data.setCode(dataSetCode);
         final File dataRootFile = new File("DS_FILE");
         final RecordingMatcher<IDelegatedAction> actionMatcher = RecordingMatcher.create();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSet.java
index 486af00ea05..6201dff3dea 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSet.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSet.java
@@ -22,7 +22,7 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto;
  * 
  * @author Kaloyan Enimanev
  */
-public class DataSet extends ExternalData
+public class DataSet extends ExternalData implements IDatasetLocation
 {
 
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
@@ -117,4 +117,15 @@ public class DataSet extends ExternalData
         return getStatus().isAvailable();
     }
 
+    // IDatasetLocation
+    public String getDataSetLocation()
+    {
+        return getLocation();
+    }
+
+    public String getDataSetCode()
+    {
+        return getCode();
+    }
+
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java
index 568e6b36112..8fd9a7449c5 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java
@@ -32,7 +32,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
  */
 public class ExternalData extends CodeWithRegistration<ExternalData> implements
         IInvalidationProvider, IEntityInformationHolderWithProperties, IIdAndCodeHolder,
-        IPermIdHolder, IDatasetLocation
+        IPermIdHolder
 {
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
 
@@ -418,18 +418,6 @@ public class ExternalData extends CodeWithRegistration<ExternalData> implements
         this.orderInContainer = orderInContainer;
     }
 
-    // IDatasetLocation
-
-    public String getDataSetLocation()
-    {
-        return getLocation();
-    }
-
-    public String getDataSetCode()
-    {
-        return getCode();
-    }
-
     // 'transient'
 
     public String getSourceType()
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/builders/DataSetBuilder.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/builders/DataSetBuilder.java
index 7f6108eebf5..8f81a7925ad 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/builders/DataSetBuilder.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/builders/DataSetBuilder.java
@@ -105,7 +105,7 @@ public class DataSetBuilder
         return this;
     }
     
-    public final ExternalData getDataSet()
+    public final DataSet getDataSet()
     {
         return dataSet;
     }
-- 
GitLab