From e417af38d57b20317caa7df9b38580ba7adf6dde Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Thu, 7 Apr 2011 10:52:48 +0000
Subject: [PATCH] [LMS-2171] basic implementation of all
 HierarchicalContentProvider methods

SVN: 20701
---
 .../shared/HierarchicalContentProvider.java   | 23 ++++++++++++-------
 .../shared/IHierarchicalContentProvider.java  |  3 ---
 .../shared/basic/dto/ExternalData.java        | 17 ++++++++++++--
 3 files changed, 30 insertions(+), 13 deletions(-)

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 262e5f26827..3258c7fe1e5 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
@@ -35,6 +35,8 @@ public class HierarchicalContentProvider implements IHierarchicalContentProvider
 
     private IHierarchicalContentFactory hierarchicalContentFactory;
 
+    private IEncapsulatedOpenBISService openbisService;
+
     private IDataSetDirectoryProvider getDataSetDirectoryProvider()
     {
         if (directoryProvider == null)
@@ -56,21 +58,26 @@ public class HierarchicalContentProvider implements IHierarchicalContentProvider
         return hierarchicalContentFactory;
     }
 
-    public IHierarchicalContent asContent(String dataSetCode)
+    private IEncapsulatedOpenBISService getOpenBISService()
     {
-        File dataSetDirectory = null; // TODO
-        return asContent(dataSetDirectory);
+        if (openbisService == null)
+        {
+            openbisService = ServiceProvider.getOpenBISService();
+        }
+        return openbisService;
     }
 
-    public IHierarchicalContent asContent(ExternalData externalData)
+    public IHierarchicalContent asContent(String dataSetCode)
     {
-        File dataSetDirectory = null; // TODO
-        return asContent(dataSetDirectory);
+        // this is temporary implementation - it shouldn't access openBIS after LMS-2172 is done
+        ExternalData dataSet = getOpenBISService().tryGetDataSet(dataSetCode);
+        return asContent(dataSet);
     }
 
-    public IHierarchicalContent asContent(IDatasetLocation dataset)
+    public IHierarchicalContent asContent(IDatasetLocation datasetLocation)
     {
-        File dataSetDirectory = getDataSetDirectoryProvider().getDataSetDirectory(dataset);
+        // this is temporary implementation - it should access DB instead of filesystem
+        File dataSetDirectory = getDataSetDirectoryProvider().getDataSetDirectory(datasetLocation);
         return asContent(dataSetDirectory);
     }
 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IHierarchicalContentProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IHierarchicalContentProvider.java
index 392a27fc34e..b1bcad893ad 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IHierarchicalContentProvider.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IHierarchicalContentProvider.java
@@ -17,7 +17,6 @@
 package ch.systemsx.cisd.openbis.dss.generic.shared;
 
 import ch.systemsx.cisd.common.io.IHierarchicalContent;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.dto.IDatasetLocation;
 
 /**
@@ -31,8 +30,6 @@ public interface IHierarchicalContentProvider
 
     IHierarchicalContent asContent(String dataSetCode);
 
-    IHierarchicalContent asContent(ExternalData externalData);
-
     IHierarchicalContent asContent(IDatasetLocation datasetLocation);
 
 }
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 77013d74310..b7e410b5619 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
@@ -24,6 +24,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWit
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IInvalidationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
+import ch.systemsx.cisd.openbis.generic.shared.dto.IDatasetLocation;
 
 /**
  * A DTO for external data sets.
@@ -32,7 +33,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
  */
 public class ExternalData extends CodeWithRegistration<ExternalData> implements
         IInvalidationProvider, IEntityInformationHolderWithProperties, IIdAndCodeHolder,
-        IPermIdHolder
+        IPermIdHolder, IDatasetLocation
 {
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
 
@@ -57,7 +58,7 @@ public class ExternalData extends CodeWithRegistration<ExternalData> implements
     private Collection<ExternalData> parents;
 
     private Long size;
-    
+
     private String location;
 
     private FileFormatType fileFormatType;
@@ -342,6 +343,18 @@ public class ExternalData extends CodeWithRegistration<ExternalData> implements
         return getCode();
     }
 
+    // IDatasetLocation
+
+    public String getDataSetLocation()
+    {
+        return getLocation();
+    }
+
+    public String getDatasetCode()
+    {
+        return getCode();
+    }
+
     // 'transient'
 
     public String getSourceType()
-- 
GitLab